Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кудравцев Создание баз данных 2010

.pdf
Скачиваний:
83
Добавлен:
16.08.2013
Размер:
2.65 Mб
Скачать

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

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

Создание ER-диаграмм с помощью ERWin

В [3] дано подробное описание работы с редактором ERWin. Рассмотрим основные моменты работы с редактором на примере создания базы данных учета успеваемости студентов.

При запуске ERWin (версия 7.2) появляется окно (рис. 1.10)

Рис. 1.10. Начальное окно запуска ERWin 7.2

Выбрав пункт меню FileNew или пиктограмму «Create model», появится окно выбора типа модели (рис. 1.11). Рекомендуется выбрать тип Logical/Physical и в качестве целевой СУБД ука-

зать Access версии 2000/2002/2003.

21

Рис. 1.11. Окно выбора типа модели

Указание типа Logical/Physical позволит в последствии переключаться между различными представлениями ER-диаграмм. Логический тип дает более общее представление (не учитывается особенность задания типа данных, разрешаются связи «много ко многим»), и на начальном этапе разработку ведут на логическом уровне и только потом переходят на физический более детальный уровень.

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

Нажатие на кнопку «Ok» приводит к появлению главного окна ERWin, в котором собственно и осуществляется построение ER-диаграммы.

На рис. 1.12 специально выделено окно элементов управления ERwin Toolbox, с помощью которого и происходит построение диаграмм. В данном Toolbox основными элементами являются «Сущность» (Entity), представляющая собой прямоугольник с разделительной горизонтальной чертой и два типа связей (Relationship) «один ко многим» и «много ко многим».

Итак, начнем создание ER-диаграммы с сущности «Student» (СТУДЕНТ).

22

Рис. 1.12. Главное окно ERwin (с выделенным ERwin Toolbox)

Для этого выделим мышью пиктограмму «Сущность» (Entity), поместим ее на рабочее поле и вместо названия по умолчанию E/1 дадим название Student. Результат изображен на рис. 1.13. Горизонтальная черта внутри сущности предназначена для отделения ключевых атрибутов от не ключевых. Далее необходимо перейти к наполнению сущности атрибутами, причем для каждого атрибута требуется выбрать его тип, в зависимости от типа данных, которые содержит атрибут. В левой части экрана имеется вкладка Model содержащая группу базовых типов данных (Domains):

<default>;

Blob;

Datetime;

Number;

String.

Вкачестве ключевого атрибута выберем № студенческого билета (N_Student), а в качестве типа данных – Number. Для того чтобы создать такой атрибут, укажем мышью на тип Number и перетащим его в верхнюю часть сущности Student.

23

Рис. 1.13. Создание сущности Student

Далее следует переименовать этот атрибут, так как по умолчанию он будет иметь имя Number. Для этого необходимо дважды щелкнуть мышью по имени атрибута, и появится окно для редактирования свойств атрибутов (рис. 1.14).

Рис. 1.14. Окно редактирования свойств атрибутов

24

Для именования сущностей и атрибутов лучше использовать латинские буквы. Аналогичным образом поместим атрибуты Фамилия Имя Отчество (FIO) типа String и Дата рождения (Date_of_birth) типа Datetime. В результате получим сущность Student, изображенную на рис. 1.15.

Рис. 1.15. Создание сущности Student

Далее следует создать сущности Exam (Экзамен), Teacher (Преподаватель) и Subject (Предмет). Располагать сущности в окне редактора можно в произвольном порядке. Результат представлен на рис. 1.16.

После создания сущностей необходимо установить связи между ними. Мощность связи определяется на основе логического анализа соотношений элементов сущностей. Рассмотрим связь между сущностями Student и Exam. Каждую связь необходимо анализировать в двух направлениях, сначала от Student к Exam и затем от Exam к Student. Итак, выберем отдельный элемент из сущности (множества) Student и определим, сколько элементов из сущности Exam могут быть с ним связаны. Другими словами — сколько экзаменов может сдавать один студент. Так как каждый студент может сдавать много экзаменов (в том числе пересдавать некоторые экзамены), то мощность связи в направлении Student Exam равна «много».

25

Проанализируем мощность связи в направлении Exam Student. Выбрав один элемент из сущности (множества) Exam, который можно представить как строку из экзаменационной ведомости,

Рис. 1.16. Создание сущностей Student, Exam, Subject, Teacher

нетрудно установить, что он связан только с одним элементом из сущности (множества) Student. Таким образом, мощность связи в направлении Exam Student равна «один».

Для установления указанной связи необходимо нажать на кнопку на панели инструментов, которая соответствует идентифицирующей связи «один ко многим». Далее следует указать мышью на сущность с мощностью связи равной «один» и затем на сущность с мощностью связи равной «много». Результат представлен на рис. 1.17.

Следует обратить внимание, что при установке связи в сущности Exam автоматически появляется новый атрибут N_Student(FK), который отражает логическую взаимосвязь этих сущностей и называется «внешним ключом» (Foreign Key). Внешний ключ появляется в списке атрибутов сущности над горизонтальной чертой, т.е. в области ключевых атрибутов. Внешний ключ может принимать только значения равные значениям ключевого атрибута связанной сущности или быть пустым. Кроме того, сущность Exam теперь изображается прямоугольником со скругленными углами, что го-

26

ворит о том, что она является дочерней, зависимой сущностью. Различают зависимые и независимые сущности. Тип сущности определяется ее связью с другими сущностями. В данном случае Student является независимой родительской сущностью, а Exam — зависимой дочерней.

Рис. 1.17. Установка связи между Student и Exam

Аналогично анализируем и устанавливаем связи между сущностями Exam и Subject, Exam и Teacher. Результат представлен на рис. 1.18.

Каждая связь именуется глаголом или глагольной фразой. Например, связь Exam — Student может быть описана так:

«экзамен сдается студентом» (при анализе в направлении Exam Student) и «студент сдает экзамен» (при анализе в направлении Student Exam). Для именования связи следует дважды щелкнуть по ней мышью, в результате чего появится окно (рис. 1.19), в котором можно ввести глаголы или глагольные фразы, а также уточнить мощность связи с помощью группы селективных кнопок Cardinality. Для отображения глагольных фраз на диаграмме следует щелкнуть правой кнопкой мыши в любом свободном месте диаграммы и из контекстного меню выбрать:

27

Relationship Display Verb Phrase. Однако на практике глагольные фразы отображаются редко, поскольку загромождают ERдиаграмму.

Рис. 1.18. Установка связей между всеми сущностями

Рис. 1.19. Окно именования и установки мощности связи

28

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

Связь «много ко многим» требуется преобразовать к двум связям «один ко многим» с использованием специальной «ассоциированной сущности» («association entity»). Для преобразования требуется выделить связь «много ко многим», нажать правую кнопку мыши и выбрать пункт меню «Create Association Entity». Будет запущен мастер, который предложит ввести имя «ассоциированной сущности» и выполнит все необходимые действия.

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

Реляционные схемы и ER-диаграммы

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

Логические взаимосвязи между сущностями обеспечиваются с помощью внешних ключей (Foreign Key). Кроме того, задаются ограничения на таблицы с целью поддержки целостности данных.

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

Рассмотрим процедуру генерации реляционной схемы данных на примере СУБД MS Access 2003. Данную процедуру можно представить в виде последовательности нескольких этапов.

29

Этап 1. Создать пустую базу данных (Exams.mdb) и выбрать пункт меню:

Сервис Защита Пользователи и группы…

При этом появится окно, изображенное на рис. 1.20. Следует убедиться в наличие пользователя Admin (он должен быть по умолчанию). Если данного пользователя нет, то следует его добавить.

Далее следует выбрать пункт меню:

Сервис Защита Задать пароль базы данных… При этом появится окно задания пароля базы данных. Можно

задать любой, в том числе и пустой пароль.

После этого базу данных Exams.mdb следует обязательно закрыть (собственно MS Access 2003 можно не закрывать).

Рис. 1.20. Окно управления пользователями и группами в MS Access 2003

Этап 2. Открыть в ERWin созданную ранее ER-диаграмму учета успеваемости студентов и перейти на «физический» уровень представления данных (рис. 1.21).

30