Опубликован: 24.12.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Кубанский государственный университет
Лекция 2:

Модель сущность-связь

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
2.2.2 Условность разделения на сущности, связи и атрибуты

Ранее мы установили, что каждой сущности соответствует предикат вида: имя_сущности(список_атрибутов). Давайте выясним подробности. Могут ли атрибуты отсутствовать? И как в этом случае определять свойства сущности? Вспомните из философии пару концептов "материя — сознание" для которых весьма затруднительно назвать атрибуты. Их свойства выясняются через отношения, в которые они входят. Вряд ли в практике вы встретите подобные сущности, однако, полезно понимать, что связи могут существенно пополнить описание сущности и что возможны сущности без атрибутов, характеризуемые только своими связями.

Связям может быть поставлен в соответствие предикат вида: имя_связи (список_атрибутов_привязки, список_эмерджентных_атрибутов).

В свою очередь, атрибутам соответствует одноместный предикат: имя_атрибута(значение_атрибута).

Трудно поверить, но разделение на сущности, связи и атрибуты условно. Пример: то, что студент должен относиться к какой-нибудь учебной группе, можно выразить через связь (рисунок 2.6, а), введением пары атрибутов "Группа" и "Состав", обозначающих концы связи (рисунок 2.6, б), и заданием отдельной сущности "состав группы"(рисунок 2.6, в)

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

Еще одна проблема для начинающих — сущности, которые являются процессами, а не предметами, вещами. Вы должны были столкнуться с их аналогами при изучении классов в объектном программировании.

 Условность разделения на сущности, связи и атрибуты

Рис. 2.6. Условность разделения на сущности, связи и атрибуты
2.2.3 Связи вида "многие-ко-многим"

Уже говорилось, что связи вида "многие-ко-многим" (n:m) могут появляться в концептуальных моделях, но современные базы данных обычно не способны их реализовать. Поэтому необходимо перестроить связи n : m, выражая каждую через две связи вида "один-ко-многим". Рисунок 2.7 поясняет, как из связи "многие-ко-многим" получаются две связи "один-ко-многим".

 Преобразование связи n : m в две связи n : 1 и 1 : m

Рис. 2.7. Преобразование связи n : m в две связи n : 1 и 1 : m

Исходные сущности примера содержат множества экземпляров {1,2,3, 4,5} и {а, 6, с}. Линии показывают связи между экземплярами. Вводим ассоциированную сущность. Рисуем связи между исходными сущностями и вспомогательную вертикальную линию так, чтобы не было пересечений трех линий. Тогда точки пересечения связей с вертикальной линией соответствуют экземплярам фиктивной сущности и если, например, экземпляр "1" соединен с экземпляром "а", то получаем экземпляр фиктивной сущности "1а". Если для исходных двух сущностей имелась связь "многие-ко-многим" , то в итоге получили две связи "один-ко-многим" (от ассоциативной сущности к имевшимся). Ассоциативная сущность должна иметь имя. Его можно образовать просто соединяя имена исходных сущностей.

Содержательный пример преобразования связей n : m будет приведены ниже.

2.2.4 Работаем с ERwin

К сожалению, вам придется пользоваться пробной версией программного продукта, который менял свое имя и собственника раз пять. В свое время он назывался ERwin, а сейчас называется All Fusion Data Modeler. Опыт показывает, что при его использовании скорость разработки схемы базы увеличивается на порядок.

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

Как установить и запустить ERwin

Сведения по установке и запуску ERwin приведены на сайте книги.

2.2.5 Сущности и ключи в ERwin

Диаграммы могут быть созданы на двух уровнях —физическом и логическом. Поэтому после выбора в головном меню пути "File > New" лучше выбрать вариант "Logical/Physical". На рисунке 2.8 приведена панель ERwin, в которой создана логическая модель сущности.

 Задание сущности

увеличить изображение
Рис. 2.8. Задание сущности

Установка кириллических шрифтов для обозначения имен сущностей, атрибутов и отношений показана на рисунке 2.9 Используется путь "Format > Default Fonts & Colors". Выполните ее обязательно, чтобы установить кириллические шрифты. Не забывайте указывать, что установки предназначены для всех объектов базы (All Objects).

 Установка шрифтов

Рис. 2.9. Установка шрифтов

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

 Часть панели инструментов ERwin

Рис. 2.10. Часть панели инструментов ERwin

В отличие от ER-диаграмм сущности в ERwin представляются прямоугольниками, внутри которых помещаются имена сущностей, записываемые именами существительных в единственном числе. Изображение каждой сущности разделяется горизонтальной линией на верхнюю часть (ключевую область), в которой расположены ключевые атрибуты (поля) (первичные ключи (РК) и, может быть, внешние ключи (Foreign Key — FK)), и нижнюю часть (область данных), где расположены неключевые атрибуты и, может быть, атрибуты внешних и альтернативных (АК) ключей.

Экземпляр идентифицируется значением первичного ключа. Других способов выделения записей в ER-диаграммах нет. Первичный ключ не должен изменяться со временем. При изменении ключа, меняется экземпляр сущности. Например, не желательно в состав ключа вводить фамилию, так как в определенных обстоятельствах женщины имеют склонность изменять фамилию. Желательно найти такие идентификаторы, которые со временем не изменятся.

Свойства первичного ключа:

  • уникальным образом идентифицирует экземпляр;
  • не использует NULL значений;
  • не изменяется со временем.

Уникальные ключи (Unique Key —UK) отличаются от первичных тем, что в них могут использоваться неопределенные значения NULL.

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

Для установки вида изображения сущности используется меню "For-mat > Entity Display". Пример записи определений (Definition), примечаний (Note и Note2) и свойств, определенных пользователем (путь User Defined Properties > UDP) показан на рисунке 2.11.

 Задание определения

Рис. 2.11. Задание определения

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

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Alexander Vizelka
Alexander Vizelka
Россия
Всеволод Трофименко
Всеволод Трофименко
Россия