Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.13 Mб
Скачать

2.4. Порядок построения связей предметной области

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

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

несколько СОТРУДНИКОВ <работают в > одном ОТДЕЛе.

По умолчанию имя связи на диаграмме не показывается. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому свободному месту диаграммы, выбрать пункт меню Relationships Display и затем включить опцию Verb Phrase.

На логическом уровне можно установить идентифицирующую связь один-ко-многим, связь многие-ко-многим, неидентифицирующую связь один-ко-многим и категориальную связь. Рассмотрим их.

В IDEF1X различают зависимые и независимые сущности.

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

Сущность называется зависимой, если однозначная идентификация экземпляра сущности зависит от его отношения с другими сущностями.

Тип сущности определяется ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Зависимая сущность изображается прямоугольником со скругленными углами. Экземпляр зависимой сущности определяется только через отношение к родительской сущности, т.е. например, информация о товаре и его количестве в СТРОКЕ ЗАКАЗА, для их фиксации в заказе не может быть внесена и не имеет смысла без информации о самом ТОВАРе, который продается клиенту.

При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся (мигрируют) в состав первичного ключа дочерней сущности. В дочерней сущности новые атрибуты помечаются как внешний ключ (FK).

При установлении неидентифицирующей связи дочерняя сущность остается независимой, а атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов дочерней сущности и помечаются как FK. Например, при установлении неидентифицирующей связи между сущностями Сотрудник и Отдел, экземпляр сущности СОТРУДНИК может существовать безотносительно к какому-либо экземпляру сущности ОТДЕЛ.

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

установить курсор на нужной кнопке в палитре инструментов: или и нажать левую кнопку мыши;

щелкнуть сначала по родительской, а затем по дочерней сущности.

Примеры установления неидентифицирующей связи для сущностей ОТДЕЛ и СОТРУДНИК приведены на рис. 8а и 8б, а идентифицирующей связи для сущностей ТОВАР и СТРОКА ЗАКАЗА – на рис. 9а и 9б.

Для редактирования свойств связи следует щелкнуть правой кнопкой мыши по связи и выбрать на контекстном меню пункт Relationship Properties. На экране появиться диалоговое окно Relationship (рис. 10).

В закладке General появившегося диалогового окна можно задать мощность (Cardinality), имя (Verb Phrase) и тип (Type) связи. В закладках Definition можно дать более полное определение связи, Rolename– имя роли (синоним атрибута внешнего ключа), RI Actions – правила ссылочной целостности, UDP – свойства данных, определенных пользователем.

Рис. 10. Диалоговое окно Relationship

Правила ссылочной целостности представляют собой правила вставки, замены и удаления строк в связанных таблицах. При генерации схемы БД на основе опций логической модели, задаваемых в закладках Rolename и RI Actions, будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность. Триггеры представляют собой программы, запускающиеся всякий раз при выполнении команд вставки, замены или удаления (INSERT, UPDATE, DELETE). С помощью опций NONE, RESTRICT, CASCADE, NO ACTION, SET NULL, SET DEFAULT можно установить различные варианты выполнения операций обновления над дочерней и родительской таблицами. Например, при удалении строки из родительской таблицы OTDEL следует либо запретить удаление сведений об отделе, пока хотя бы один экземпляр дочерней таблицы (например, Сотрудник – SOTR) включает сведения о данном отделе (Parent RESTRICT), либо сразу удалять вместе с отделом все упоминания о нем в дочерних таблицах (Parent CASCADE).

Приведем значение других опций: NONE – при удалении строки из таблицы значение атрибута внешнего ключа не меняется; SET NULL – атрибут внешнего ключа может принимать значение NULL (неопределенное значение); SET DEFAULT – при удалении строки атрибуту внешнего ключа присваивается значение по умолчанию, NO ACTION – при выполнении операции обновления таблицы никаких действий над значениями атрибутов не выполняется.

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

Для создания связи многие-ко-многим следует:

установить курсор на нужной кнопке в палитре инструментов: и нажать левую кнопку мыши;

щелкнуть сначала по одной родительской сущности, а затем по другой.

Связь многие-ко-многим изображается на диаграмме в виде сплошной линии с жирными точками на концах. Для того, чтобы увидеть дочернюю зависимую сущность, необходимо в выпадающем списке выбора уровня представления, расположенном на панели инструментов, выбрать опцию "Physical Model". Кроме того, для визуализации отображения дочерней зависимой сущности в AllFusion Data Modeler v.7.2, необходимо воспользоваться специальным мастером. Для этого, находясь на физическом уровне представления, необходимо с помощью мыши выделить связь многие-ко-многим, затем нажать на кнопку , расположенную на панели инструментов, или выбрать пункт меню Edit|Many To Many Transform. На экране появиться диалоговое окно"Many To Many Relationship Trasform Wizard". Нажмите в окне кнопку "Далее". В поле ввода Table Name введите имя новой сущности, например, ОСНАЩЕНИЕ. Нажмите кнопку "Далее". В поле ввода Transform Name введите имя сущности на уровне трансформационной модели, например, ОСНАЩЕНИЕ. Нажмите кнопку "Далее", а затем "Готово". В окне диаграммы на экране появиться новая зависимая дочерняя сущность.

Пример установления связи многие-ко-многим между сущностей ОТДЕЛ и Вид ТЕХ.СРЕДСТВА приведены на рис. 11а и 11б.

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