Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии разработки ПО Уебное пособие Глухова Лилия Александровна, БГУИР 2010 (Книга).pdf
Скачиваний:
1126
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

Один-или-много Собака/4 R/2 принадлежит Владелец-Собаки/3 .

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

(см. п. 5.4.10).

Резюме

В стандарте IDEF1X определены следующие дочерние мощности соединительных связей: ноль-один-или-много; один-или-много; ноль-или-один; точно-n; от n до m; мощность, определяемая условием. Каждая дочерняя мощность имеет свое графическое обозначение. Не все виды дочерней мощности поддерживаются CASE-средствами.

5.4.9. Формализация соединительных связей

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

ных атрибутов, называется связью, формализованной в данных.

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

рис. 5.24 – 5.28).

Существует два вида связей, формализованных в данных: идентифици-

рующая связь и неидентифицирующая связь.

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

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

Таким образом, связи, приведенные на рис. 5.24 – 5.28, являются идентифицирующими.

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

Рис. 5.25 отражает ситуацию, при которой для каждого экземпляра сущности Владелец-собаки экземпляры сущности Собака нумеруются (Номер-

192

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

Родительская сущность в идентифицирующей связи является независимой. Однако если данная сущность является дочерней сущностью в другой идентифицирующей связи, то в рассматриваемой связи обе сущности (и родительская, и дочерняя) будут зависимыми. На рис. 5.27 родительская сущность Месяц связи R/4 одновременно является дочерней сущностью идентифицирующей связи R/3. Поэтому в связи R/4 как родительская, так и дочерняя сущности являются зависимыми. Идентификатор родительской сущности Год (ID-года) по связи R/3 мигрирует в дочернюю сущность Месяц. Отсюда идентифицирующие атрибуты (ID-года и Номер-месяца-в-году) по связи R/4 мигрируют в дочернюю сущность День.

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

неидентифицирующей.

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

На рис. 5.29 – 5.31 представлены примеры неидентифицирующих связей между родительской и дочерней сущностями. Данные примеры даны в привязке к примерам, приведенным на рис. 5.24 – 5.28.

Рис. 5.29. Графическое представление в IDEF1X неидентифицирующей связи

мощностью один-к-нулю-одному-или-многим

Организация неидентифицирующей связи между сущностями Семья и Ребенок (см. рис. 5.29) стала возможной, потому что в качестве идентификатора дочерней сущности Ребенок выбран идентификационный номер экземпляра сущности Ребенок (ID-ребенка), уникально определяющий каждый ее экземпляр (сравните с неуникальным идентификатором Имя на рис. 5.24).

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

193

ID-собаки и ID-женщины, что позволило отказаться от применения в данных моделях идентифицирующих соединительных связей (сравните с рис. 5.25, 5.26).

Рис. 5.30. Графическое представление в IDEF1X неидентифицирующей связи

мощностью один-к-одному-или-многим

Рис. 5.31. Графическое представление в IDEF1X неидентифицирующей связи

мощностью один-к-нулю-или-одному

Как показывают рассмотренные выше примеры (см. рис. 5.24 – 5.31), одну и ту же информационную модель в общем случае можно разработать, используя идентифицирующие или неидентифицирующие связи. Следует обратить внимание, что применение идентифицирующих связей приводит к появлению составных идентификаторов в дочерних сущностях (см. например рис. 5.27). Составные идентификаторы при работе с реальными базами данных обрабатывать сложнее, чем простые. Их использование приводит к снижению эффективности работы с базами данных. Поэтому при разработке информационных моделей предметной области предпочтение по возможности следует отдавать неидентифицирующим связям перед идентифицирующими.

Резюме

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

194

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

5.4.10.Реализация безусловных и условных связей в IDEF1X-моделировании

Анализ рис. 5.23 показывает, что совокупность видов дочерней мощности связи, определенных в стандарте IDEF1X, определяет собой как условные, так и безусловные связи.

Виды дочерней мощности связи, не включающие в себя ноль (см. рис. 5.23) определяют, что конкретный экземпляр родительской сущности может быть соединен не менее чем с одним экземпляром дочерней сущности. К таким видам дочерней мощности относятся мощности один-или-много, точно-n, диа- пазон-n-m, мощность, определяемая условием (два последних вида, если диапазон и условие не включают ноль).

Например, сущность Владелец-собаки владеет не менее чем одной собакой (см. рис. 5.25, 5.30), сущность Год состоит из двенадцати месяцев, сущность Месяц включает 28 – 31 день (см. рис. 5.27).

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

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

Например, некоторые экземпляры сущности Семья могут не иметь ни одного ребенка (см. рис. 5.24, 5.29), некоторые экземпляры сущности Мужчина могут не иметь жены (см. рис. 5.26, 5.31).

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

Следовательно, условность связи со стороны родительской сущности

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

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

Существует два вида неидентифицирующих связей: обязательные и необязательные.

195

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

Следовательно, обязательная неидентифицирующая связь определяет

безусловность связи со стороны дочерней сущности.

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

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

Рис. 5.32. Графическое представление в IDEF1X обязательной неидентифицирующей связи мощностью один-к-одному

Таким образом, необязательная неидентифицирующая связь определяет

условность связи со стороны дочерней сущности.

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

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

На рис. 5.33 учтена условность связи со стороны дочерней сущности Женщина за счет использования необязательной неидентифицирующей связи. Результирующая мощность связи на данном рисунке равна ноль-или-один-к-

196