4.5.2.2. Методология IDEF1
Метод IDEF1, разработанный Т.Рэмей (T.Ramey), также основан
на подходе П.Чена и позволяет построить модель данных, эквивалентную
реляционной модели в третьей нормальной форме. В настоящее время на основе
совершенствования методологии IDEF1 создана ее новая версия - методология
IDEF1X. IDEF1X разработана с учетом таких требований, как простота изучения и
возможность автоматизации. IDEF1X-диаграммы используются рядом распространенных
CASE-средств (в частности, ERwin, Design/IDEF).
Сущность в методологии IDEF1X является независимой от
идентификаторов или просто независимой, если каждый экземпляр сущности может
быть однозначно идентифицирован без определения его отношений с другими
сущностями. Сущность называется зависимой от идентификаторов или просто
зависимой, если однозначная идентификация экземпляра сущности зависит от его
отношения к другой сущности (рисунок 4.13).
Рис. 4.13. Сущности
Каждой сущности присваивается уникальное имя и номер,
разделяемые косой чертой "/" и помещаемые над блоком.
Связь может дополнительно определяться с помощью указания
степени или мощности (количества экземпляров сущности-потомка, которое может
существовать для каждого экземпляра сущности-родителя). В IDEF1X могут быть
выражены следующие мощности связей:
- каждый экземпляр
сущности-родителя может иметь ноль, один или более связанных с ним
экземпляров сущности-потомка;
- каждый экземпляр
сущности-родителя должен иметь не менее одного связанного с ним экземпляра
сущности-потомка;
- каждый экземпляр
сущности-родителя должен иметь не более одного связанного с ним экземпляра
сущности-потомка;
- каждый экземпляр
сущности-родителя связан с некоторым фиксированным числом экземпляров
сущности-потомка.
Если экземпляр сущности-потомка однозначно определяется
своей связью с сущностью-родителем, то связь называется идентифицирующей, в
противном случае - неидентифицирующей.
Связь изображается линией, проводимой между
сущностью-родителем и сущностью-потомком с точкой на конце линии у
сущности-потомка. Мощность связи обозначается как показано на рисунке 4.14
(мощность по умолчанию - N).
Рис.4.14. Мощность связи
Идентифицирующая связь между сущностью-родителем и
сущностью-потомком изображается сплошной линией (рисунок 4.15).
Сущность-потомок в идентифицирующей связи является зависимой от идентификатора
сущностью. Сущность-родитель в идентифицирующей связи может быть как
независимой, так и зависимой от идентификатора сущностью (это определяется ее
связями с другими сущностями).
Рис. 4.15. Идентифицирующая
связь
Пунктирная линия изображает неидентифицирующую связь
(рисунок 4.16). Сущность-потомок в неидентифицирующей связи будет независимой
от идентификатора, если она не является также сущностью-потомком в какой-либо
идентифицирующей связи.
Рис. 4.16. Неидентифицирующая
связь
Атрибуты изображаются в виде списка имен внутри блока
сущности. Атрибуты, определяющие первичный ключ, размещаются наверху списка и
отделяются от других атрибутов горизонтальной чертой (рисунок 4.17).
Рис. 4.17. Атрибуты и
первичные ключи
Сущности могут иметь также внешние ключи (Foreign Key),
которые могут использоваться в качестве части или целого первичного ключа или
неключевого атрибута. Внешний ключ изображается с помощью помещения внутрь
блока сущности имен атрибутов, после которых следуют буквы FK в скобках
(рисунок 4.18).
Рис. 4.18. Примеры внешних
ключей
4.5.2.3. Подход, используемый в CASE-средстве Vantage Team
Builder
В CASE-средстве Vantage Team Builder (Westmount I-CASE)
используется один из вариантов нотации П. Чена. На ER-диаграммах сущность
обозначается прямоугольником, содержащим имя сущности (рисунок 4.19), а связь -
ромбом, связанным линией с каждой из взаимодействующих сущностей. Числа над
линиями означают степень связи.
Рис. 4.19. Обозначение
сущностей и связей
Связи являются многонаправленными и могут иметь атрибуты
(за исключением ключевых). Выделяют два вида связей:
- необязательная связь
(optional);
- слабая связь (weak).
В необязательной связи (рисунок 4.20) могут
участвовать не все экземпляры сущности.
Рис. 4.20. Необязательная
связь
В отличие от необязательной связи в полной (total)
связи участвуют все экземпляры хотя бы одной из сущностей. Это означает, что
экземпляры такой связи существуют только при условии существования экземпляров
другой сущ-ности. Полная связь может иметь один из 4-х видов: обязательная
связь, слабая связь, связь "супертип-подтип" и ассоциативная связь.
Обязательная (mandatory) связь описывает связь между "независимой" и
"зависимой" сущностями. Все экземпляры зависимой
("обязательной") сущности могут существовать только при наличии
экземпляров независимой ("необязательной") сущности, т.е. экземпляр
"обязательной" сущности может существовать только при условии
существования определенного экземпляра "необязательной" сущности.
В примере (рисунок 4.21) подразумевается, что каждый
автомобиль имеет по крайней мере одного водителя, но не каждый служащий
управляет машиной.
Рис. 4.21. Обязательная связь
В слабой связи существование одной из сущностей,
принадлежащей некоторому множеству ("слабой") зависит от
существования определенной сущности, принадлежащей другому множеству
("сильной"), т.е. экземпляр "слабой" сущности может быть
идентифицирован только посредством экземпляра "сильной" сущности.
Ключ "сильной" сущности является частью составного ключа
"слабой" сущности.
Слабая связь всегда является бинарной и подразумевает
обязательную связь для "слабой" сущности. Сущность может быть
"слабой" в одной связи и "сильной" в другой, но не может
быть "слабой" более, чем в одной связи. Слабая связь может не иметь
атрибутов.
Пример на рисунке 4.22: ключ (номер) строки в документе
может не быть уникальным и должен быть дополнен ключом документа.
Рис.4.22. Слабая связь
Связь "супертип-подтип" изображена на рисунке
4.23. Общие характеристики (атрибуты) типа определяются в сущности-супер-типе,
сущность-подтип наследует все характеристики супертипа. Экземпляр подтипа
существует только при условии существования определенного экземпляра супертипа.
Подтип не может иметь ключа (он импортирует ключ из супертипа). Сущность,
являющаяся супертипом в одной связи, может быть подтипом в другой связи. Связь
супертипа не может иметь атрибутов.
Рис. 4.23. Связь
"супертип-подтип"
В ассоциативной связи каждый экземпляр связи
(ассоциативный объект) может существовать только при условии существования
определенных экземп-ляров каждой из взаимосвязанных сущностей. Ассоциативный
объект - объект, являющийся одновременно сущностью и связью. Ассоциативная
связь - это связь между несколькими "независимыми" сущностями и одной
"зависимой" сущностью. Связь между независимыми сущ-ностями имеет
атрибуты, которые определяются в зависимой сущности. Таким образом, зависимая
сущность определяется в терминах атрибутов связи между остальными сущностями.
В примере на рисунке 4.24 самолет выполняет посадку на
взлетную полосу в заданное время при оп-ределенной скорости и направлении
ветра. Поскольку эти характеристики при-менимы только к конкретной посадке, они
являются атрибутами посадки, а не самолета или взлетной полосы. Пилот,
выполняющий посадку, связан гораздо сильнее с конкретной посадкой, чем с
самолетом или взлетной полосой.
Рис. 4.24. Ассоциативная
связь
Первичный ключ каждого типа сущности помечается звездочкой
(*).
ER-диаграмма должна подчиняться следующим правилам:
- каждая сущность,
каждый атрибут и каждая связь должны иметь имя (связь супертипа или
ассоциативная связь может не иметь имени);
- имя сущности должно
быть уникально в рамках модели данных;
- имя атрибута должно
быть уникально в рамках сущности;
- имя связи должно быть
уникально, если для нее генерируется таблица БД;
- каждый атрибут должен
иметь определение типа данных;
- сущность в
необязательной связи должна иметь ключевой атрибут. То же самое относится
к сильной сущности в слабой связи, супертипу в связи
"супертип-подтип" и необязательной сущности в обязательной
(полной) связи;
- подтип в связи
"супертип-подтип" не может иметь ключевой атрибут;
- в ассоциативной или
слабой связи может быть только одна ассоциативная (слабая) сущность;
- связь не может быть
одновременно обязательной, "супертип-подтип" или ассоциативной.