- •Лабораторная работа №7 Применение пакета Erwin для разработки модели данных
- •Учебный вопрос «Определение набора сущностей в eRwin 7.0»
- •Действия проектировщика
- •Учебный вопрос «Определение атрибутов и связей между сущностями»
- •Действия проектировщика
- •Учебный вопрос «Создание (редактирование) физической модели»
- •Действия проектировщика
- •Литература:
- •Проектирование баз данных с применением Erwin/
Учебный вопрос «Определение атрибутов и связей между сущностями»
Постановка задачи: завершить построение логической модели данных, определив атрибуты сущностей и задав связи между ними.
Действия проектировщика
Для описания атрибутов следует выполнить один из вариантов действий:
дважды «щелкнуть» по прямоугольнику сущности левой кнопкой ручного манипулятора «мышь» (рис.9);
«щелкнуть» по прямоугольнику сущности правой кнопкой ручного манипулятора «мышь», в открывшемся окне «нажать» левой кнопкой ручного манипулятора «мышь» на закладке «Attributes» (рис.10);
«щелкнуть» по прямоугольнику сущности левой кнопкой ручного манипулятора «мышь», далее той же кнопкой «нажать» ярлык «Model» головного меню и далее в отрывшемся списочном меню «нажать» левой кнопкой ручного манипулятора «мышь» на закладке «Attributes» (рис.11).
Кнопка ввода нового атрибута
Кнопка редактирования атрибута
Кнопка удаления атрибута
Окно атрибута
Окно установки характеристик атрибутов
Рис.9 Диалоговое окно для описания атрибутов
Рис.11 Закладка Attributes в раскрывшемся списке ярлыка «Model»
Рис.11 Закладка Attributes в списочном меню
«Щелкнуть» по кнопке New, и в появившемся диалоге New Attribute можно указать имя атрибута, имя соответствующей ему в физической модели колонки и домен (рис.12).
Рис. 12. Диалог New Attribute
Для атрибутов первичного ключа во вкладке General диалога Attributes необходимо сделать пометку в окне выбора Primary Key (рис.13).
Окно выбора для назначения ключевого поля
Ключевое поле, отмеченное знаком ключа
Рис. 13 Назначение атрибута - первичного ключа
Вкладка Definition позволяет записывать определения отдельных атрибутов (рис.14).
Рис. 14 Запись определения отдельных атрибутов
Для большей наглядности диаграммы каждый атрибут можно связать с пиктограммой (иконкой). При помощи списка выбора Icon во вкладке General осуществляется связь иконки с атрибутом.
Домен атрибута будет использоваться при определении типа поля на уровне физической модели. В ERwin домен определяется только один раз и используется как в логической, так и в физической модели.
Домен может быть создан на основе другого домена и наследовать все свойства домена-прародителя. По умолчанию ERwin имеет четыре предопределенных домена: String, Number, Blob, Datetime. Создать домен можно во вкладке Domains окна Model Explorer.
Домены позволяют облегчить работу с данными как разработчикам на этапе проектирования, так и администраторам на этапе эксплуатации системы.
Для создания новой связи следует:
установить курсор на нужной кнопке (идентифицирующая
или неидентифицирующая связь
) в палитре инструментов и нажать левую
кнопку ручного манипулятора «мышь»
(рис. 15);щелкнуть сначала по родительской, а затем по дочерней сущности.
|
|
Рис. 15 Создание связи между таблицами
Изменение формы линии связи следует осуществить в следующем порядке.
Захватывать ручным мышью нужную линию связи и переносить ее с места на место, пока линия не начнет выглядеть лучше.
В палитре инструментов кнопка соответствует идентифицирующей связи, кнопка связи "многие ко многим" и кнопка соответствуют неидентифицирующей связи.
Для редактирования свойств связи следует щелкнуть правой кнопкой ручного манипулятора «мышь» по связи и выбрать в контекстном меню пункт Relationship Properties. Двойной щелчок по левой кнопке открывает вкладку диалога General, что позволяет задать мощность, имя и тип связи (рис. 16).
|
|
Рис.16. Редактирование свойств связи.
Для выбора представляются следующие варианты типов связи:
В секции «Relationship Type» следует задать характер связи – идентифицирующая или неидентифицирующая.
В первом случае первичный ключ родительской таблицы входит составной частью в первичный ключ дочерней таблицы. Во втором случае – не входит.
Если связь задана неидентифицирующая, можно дополнительно указать допустимость пустых значений (NULL values).
Если пустые значения не допускаются, при всех операциях с базой данных в этом поле обязательно должно быть какое-то значение.
Значение «NULL» не является нулем, пустой строкой и т.д. Оно говорит о том, что в данном поле вообще отсутствует какое-либо значение.
Для выбора представляются следующие варианты типов связи:
Zero, One or More – связь «Ноль, один или много»;
One or More – связь «Один или много»;
Zero or One – связь «Ноль или один»;
Exactly – связь «Точно указанное количество».
Созданная модель имеет ряд недостатков.
Атрибут «жанр» для многих книг будет иметь одно и то же значение. Например, все учебники или детективные романы.
Количество типов жанров книг может измеряться десятками, в то же время количество самих книг может исчисляться десятками и сотнями тысяч.
Аналогичная ситуация атрибутом «Издательство». Издательств гораздо меньше, чем публикуемых этими издательствами книг.
В модели реализована связь «многие-ко-многим», которую большинство современных СУБД не поддерживают в чистом виде.
Основные направления оптимизации.
Оптимизация осуществить выделением атрибута «Жанр» в отдельную сущность. При этом возникает связь со следующими требованиями:
Одна книга может относиться только к одному жанру;
В одном жанре могут быть написаны множество книг. Этим требованиям отвечает связь типа «один-ко-многим».
Аналогично выполняется выделение сущности «Издательство».
Далее, связь типа «многие-ко-многим» формализовать введением дополнительной сущности «автор книги» и заменой связи «многие-ко многим» двумя связями «один-ко-многим».
При связывании таблиц целесообразно задавать специальные поля–идентификаторы (первичные ключи), которые будут использоваться для перекрестных ссылок между таблицами.
Такие связи рекомендуется делать неидентифицирующими.
В результате будет создана модель, представленная на рис. 17.
Рис.17. Модель данных, представленная на логическом уровне
