ВУЗ: Не указан

Категория: Методичка

Дисциплина: Базы данных

Добавлен: 15.11.2018

Просмотров: 661

Скачиваний: 16

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа N 4


Проектирование моделей данных в ERWin

Задание. Построить модель данных информационной системы по теме проекта. Предусмотреть в модели связи многие-ко-многим, один-ко многим, категориальные связи. На основе логической модели получить физическую модель. Выбрать сервер БД и сгенерировать базу данных для СУБД ACCESS/

Сведения из теории

Моделирование данных

Case-метод Баркера

Цель моделирования данных состоит в обеспечении разработчика ИС концептуальной схемой базы данных в форме одной модели или нескольких локальных моделей, которые относительно легко могут быть отображены в любую систему баз данных.

Наиболее распространенным средством моделирования данных являются диаграммы "сущность-связь" (ERD). С их помощью определяются важные для предметной области объекты (сущности), их свойства (атрибуты) и отношения друг с другом (связи). ERD непосредственно используются для проектирования реляционных баз данных.

Нотация ERD была впервые введена П. Ченом (Chen) и получила дальнейшее развитие в работах Баркера. Метод Баркера будет излагаться на примере моделирования деятельности компании по торговле автомобилями. Ниже приведены выдержки из интервью, проведенного с персоналом компании.

Главный менеджер: одна из основных обязанностей - содержание автомобильного имущества. Он должен знать, сколько заплачено за машины и каковы накладные расходы. Обладая этой информацией, он может установить нижнюю цену, за которую мог бы продать данный экземпляр. Кроме того, он несет ответственность за продавцов и ему нужно знать, кто что продает и сколько машин продал каждый из них.

Продавец: ему нужно знать, какую цену запрашивать и какова нижняя цена, за которую можно совершить сделку. Кроме того, ему нужна основная информация о машинах: год выпуска, марка, модель и т.п.

Администратор: его задача сводится к составлению контрактов, для чего нужна информация о покупателе, автомашине и продавце, поскольку именно контракты приносят продавцам вознаграждения за продажи.

Первый шаг моделирования - извлечение информации из интервью и выделение сущностей.

Сущность (Entity) - реальный либо воображаемый объект, имеющий существенное значение для рассматриваемой предметной области, информация о котором подлежит хранению (рисунок 1).

Рис. 1. Графическое изображение сущности

Каждая сущность должна обладать уникальным идентификатором. Каждый экземпляр сущности должен однозначно идентифицироваться и отличаться от всех других экземпляров данного типа сущности. Каждая сущность должна обладать некоторыми свойствами:

  • каждая сущность должна иметь уникальное имя, и к одному и тому же имени должна всегда применяться одна и та же интерпретация. Одна и та же интерпретация не может применяться к различным именам, если только они не являются псевдонимами;

  • сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь;

  • сущность обладает одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности;

  • каждая сущность может обладать любым количеством связей с другими сущностями модели.


Обращаясь к приведенным выше выдержкам из интервью, видно, что сущности, которые могут быть идентифицированы с главным менеджером - это автомашины и продавцы. Продавцу важны автомашины и связанные с их продажей данные. Для администратора важны покупатели, автомашины, продавцы и контракты. Исходя из этого, выделяются 4 сущности (автомашина, продавец, покупатель, контракт), которые изображаются на диаграмме следующим образом (рисунок 2).

Рис. 2.


Следующим шагом моделирования является идентификация связей.

Связь (Relationship) - поименованная ассоциация между двумя сущностями, значимая для рассматриваемой предметной области. Связь - это ассоциация между сущностями, при которой, как правило, каждый экземпляр одной сущности, называемой родительской сущностью, ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, называемой сущностью-потомком, а каждый экземпляр сущности-потомка ассоциирован в точности с одним экземпляром сущности-родителя. Таким образом, экземпляр сущности-потомка может существовать только при существовании сущности родителя.

Связи может даваться имя, выражаемое грамматическим оборотом глагола и помещаемое возле линии связи. Имя каждой связи между двумя данными сущностями должно быть уникальным, но имена связей в модели не обязаны быть уникальными. Имя связи всегда формируется с точки зрения родителя, так что предложение может быть образовано соединением имени сущности-родителя, имени связи, выражения степени и имени сущности-потомка.

Например, связь продавца с контрактом может быть выражена следующим образом:

  • продавец может получить вознаграждение за 1 или более контрактов;

  • контракт должен быть инициирован ровно одним продавцом.

Степень связи и обязательность графически изображаются следующим образом (рисунок 3).

Рис. 3.

Таким образом, 2 предложения, описывающие связь продавца с контрактом, графически будут выражены следующим образом (рисунок 3).

Рис. 4.

Описав также связи остальных сущностей, получим следующую схему (рисунок 5).

Рис. 5.

Последним шагом моделирования является идентификация атрибутов.

Атрибут - любая характеристика сущности, значимая для рассматриваемой предметной области и предназначенная для квалификации, идентификации, классификации, количественной характеристики или выражения состояния сущности. Атрибут представляет тип характеристик или свойств, ассоциированных со множеством реальных или абстрактных объектов (людей, мест, событий, состояний, идей, пар предметов и т.д.). Экземпляр атрибута - это определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибута. В ER-модели атрибуты ассоциируются с конкретными сущностями. Таким образом, экземпляр сущности должен обладать единственным определенным значением для ассоциированного атрибута.


Атрибут может быть либо обязательным, либо необязательным (рисунок 6). Обязательность означает, что атрибут не может принимать неопределенных значений (null values). Атрибут может быть либо описательным (т.е. обычным дескриптором сущности), либо входить в состав уникального идентификатора (первичного ключа).

Уникальный идентификатор - это атрибут или совокупность атрибутов и/или связей, предназначенная для уникальной идентификации каждого экземпляра данного типа сущности. В случае полной идентификации каждый экземпляр данного типа сущности полностью идентифицируется своими собственными ключевыми атрибутами, в противном случае в его идентификации участвуют также атрибуты другой сущности-родителя (рисунок 7).

Рис. 8.

Рис. 9.

Каждый атрибут идентифицируется уникальным именем, выражаемым грамматическим оборотом существительного, описывающим представляемую атрибутом характеристику. Атрибуты изображаются в виде списка имен внутри блока ассоциированной сущности, причем каждый атрибут занимает отдельную строку. Атрибуты, определяющие первичный ключ, размещаются наверху списка и выделяются знаком "#".

Каждая сущность должна обладать хотя бы одним возможным ключом. Возможный ключ сущности - это один или несколько атрибутов, чьи значения однозначно определяют каждый экземпляр сущности. При существовании нескольких возможных ключей один из них обозначается в качестве первичного ключа, а остальные - как альтернативные ключи.

С учетом имеющейся информации дополним построенную ранее диаграмму (рисунок 10).

Помимо перечисленных основных конструкций модель данных может содержать ряд дополнительных.

Подтипы и супертипы: одна сущность является обобщающим понятием для группы подобных сущностей (рисунок 11).

Взаимно исключающие связи: каждый экземпляр сущности участвует только в одной связи из группы взаимно исключающих связей (рисунок 12).

Рис. 13.

Рис.14. Подтипы и супертипы

Рис. 15. Взаимно исключающие связи

Рекурсивная связь: сущность может быть связана сама с собой (рисунок 16).

Неперемещаемые (non-transferrable) связи: экземпляр сущности не может быть перенесен из одного экземпляра связи в другой (рисунок 17).

Рис. 16. Рекурсивная связь

Рис. 17. Неперемещаемая связь


Работа с ERWin


Палитра инструментов на логическом уровне

Сущность Категория

В ыбор (режим мыши)


Текст

ERwin Toolbox

Перемещение

атрибутов

м ежду или

внутри

с ущностей

связь


Используются две нотации создания моделей - IDEF1X (армия США и госучреждения, финансовые и промышленные корпорации), IE (промышленность).

Переключение: Option / Preferences / Methodology


ERwin имеет несколько уровней отображения диаграммы

  • уровень сущностей

  • уровень атрибутов

  • уровень определений

  • уровень первичных ключей

  • уровень иконок

Переключение - через контекстное меню (ПЩ на свободном месте, пункт Display Level) или через кнопки палитры инструментов ( первые 3 уровня)



Уровни отображения модели


Уровень отображения

Представление модели

Сушность ( Entity)

Деталь




Атрибуты (Attribute)

Сотрудник

Табельный номер


Номер паспорта (AK1.1)

Фамилия (AK2.1)

Имя (AK2.2)

Отчество (AK2.3)

Дата рождения (AK2.4)

Отдел (IE1.1)









Первичный ключ

(Primary Key)

Д еталь

Номер детали


Определение (Definition)

Деталь

С одержит

информацию

о деталях


Сущности с изображением малых иконок

$ счет


Сущности с изображением больших иконок




$ счет


Установка цвета и шрифта - панель инструментов Font and Color Toolbar



Создание логической модели в ERWin

Ключи

Каждая сущность должна иметь по крайней мере один потенциальный ключ ( поле или набор полей с уникальными значениями)

Первичный ключ (Primary key) - определяет экземпляр сущности уникальным образом.

Альтернативный ключ (Alternate Key) - потенциальный ключ, не ставший первичным. При генерации схемы БД по всем атрибутам альтернативного ключа генерируется уникальный индекс.

Можно вводить неуникальные индексы (допускаются совпадения). Атрибуты, участвующие в неуникальных индексах, называются инверсионные входы (Inversion Entries). Они не определяет экземпляр сущности уникальным образом, но используются для частого обращения к экземплярам сущности.

Денормализация в ERwin

В результате нормализации все взаимосвязи данных становятся правильно определены., исключаются аномалии при оперировании с данными, модель данных становится легче поддерживать. Однако часто нормализация данных не ведет к повышению производительности БД.


Пример. Производные атрибуты, ведущие к нарушению первой НФ.

Сотрудник= {Таб номер, Фамилия, …, Код Должности}

Должность= { Код Должности, Название должности, Оклад}

Связь необязательная один ко многим


Денормализуем - будет работать быстрее

Сотрудник= {Таб номер, Фамилия, …, Должность, Оклад}

Должность= { Должность, Оклад}


Аномалии обновления: если меняется оклад должности - нужно менять у всех сотрудников. Решение: обновлять - только в таблице Должность, выбирать данные - только из таблицы Сотрудник. Нужна процедура синхронизации таблиц.


Домены


Домен - совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене. На каждом домене может быть определено множество атрибутов.

Домен имеет уникальное имя и может использоваться как на логическом, так и на физическом уровне.

На логическом уровне домены описываются без физических свойств. На физическом уровне они автоматически получают специфические свойства.

Пример: Домен "Возраст"

Логический уровень - атрибуты получат тип Number

Физический уровень - колонкам будет присвоен тип INTEGER

Редактирование доменов - команда Edit/Domain Dictionary и кнопка



Создание новых атрибутов в модели - диалог Independent Attribute Browser

(Ключ CTRL +B )


General - задание родительского домена (Domain Parent), имени колонки, Physical Only - определяет домен только на уровне физической модели.

Comment - комментарий к домену

UDP -

Visual Basic - Power Builder - Задание специальных свойств домена для кодогенерации клиентского приложения.


Пример логической модели


Задание атрибутов модели - диалог


Создание Физической модели данных

Физическая модель содержит всю информацию, необходимую для реализации конкретной БД

Различают два уровня физической модели

  • трансформационная модель (Transformation Model)

  • модель СУБД (DBMS Model)

Трансформационная модель содержит всю информацию для реализации отдельного проекта, который может быть частью общей ИС и может описывать подмножество предметной области.

Проектировщик может выделить подмножество модели в виде предметных областей (Subject Area)

Модель СУБД автоматически генерируется из трансформационной модели и является точным отражением системного каталога СУБД


Пример физической модели



Связь - многие-ко-многим. Возможна только на уровне логической модели данных


П реподаватель учит Студент

Н омер преподавателя учится у Номер пациента


Именуется двумя фразами учит / учится у

При переходе к физическому уровню ERwin автоматически преобразует связь:


Teacher Teacher_Student Student

T eacherID: NOT NULL TeacherID: NOT NULL StudentID: NOT NULL

Student: NOT NULL

Такой таблицы недостаточно, надо дополнить таблицу (таблица "Выполнение курсовых работ") колонкой "Дисциплина" или "Дата". Таблица называется "Курсовые".


Teacher Курсовые Student

T eacherID: NOT NULL TeacherID: NOT NULL StudentID: NOT NULL

StudentID: NOT NULL

Course: NOT NULL


При этом на логическом уровне диаграмма не изменится.



Типы сущностей и иерархия наследования


Связи определяют, является ли сущность независимой или зависимой. Зависимые сущности

Характеристическая - зависимая дочерняя сущность, которая связана только с одной родительской и по смыслу хранит информацию о характеристиках родительской сущности.

Пример. Сотрудник Увлечения

Ассоциативная - сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей.

Пример - таблица связи "Курсовые"

Именующая - частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрирующих в качестве внешнего ключа)

Пример - таблица Teacher_Student

Категориальная - дочерняя сущность в иерархии наследования

Иерархии наследования (или иерархия категорий) - представляет собой особый тип объединения сущностей, которые разделяют общие характеристики. Например, в организации работают служащие, занятые полный рабочий день (постоянные служащие) и совместители. Из их общих свойств можно сформировать обобщенную сущность Сотрудник, чтобы представить информацию, общую для всех типов служащих. Специфическая для каждого типа информация может располагаться в категориальных сущностях (потомках) Постоянный сотрудник и Совместитель.