Комплексное определение для информационного моделирования (IDEF1X), страница 26

Например, определить взаимосвязи между сущностями ЗАНЯТИЕ и СТУДЕНТ. Сущность СТУДЕНТ может посетить нуль, одно или более ЗАНЯТИЙ. Проанализировав с другой стороны, получим, что сущность ЗАНЯТИЕ может быть посещена нулем, одним или более СТУДЕНТОМ. Поэтому, связь многие ко многим существует между сущностями ЗАНЯТИЕ и СТУДЕНТ с количеством элементов ноль, один или более на каждом конце связи.  (Примечание: эта связь является неидентифицирующей для связей «один к одному» и «один ко многим». Неидентифицирующие связи, являющиеся уникальными для IDEF1X, также связывают родительскую сущность с дочерней. Неидентифицирующие связи используются для отображения другого типа передачи атрибутов внешних ключей - передача в область данных дочерней сущности.  Так как переданные ключи в неидентифицирующей связи не являются составной частью первичного ключа дочерней сущности, то этот вид связи не проявляется ни в одной идентифицирующей зависимости Неидентифицирующие связи должны быть описаны позже в процессе разработки модели).

Рассмотрим другой пример: определим связи между сущностями ПОКУПАТЕЛЬ и ЗАКАЗ. Сущность ПОКУПАТЕЛЬ может сделать ноль, один или более заказов. Сущность ЗАКАЗ может быть сделана только одним ПОКУПАТЕЛЕМ. Поэтому между ПОКУПАТЕЛЕМ и ЗАКАЗОМ определена связь «один ко многим» с количеством элементов один на конце связи ПОКУПАТЕЛЬ и ноль, один или множество на конце связи ЗАКАЗ. (Примечание: это идентифицирующая связь для количества элементов «только один» на конце связи ПОКУПАТЕЛЬ, т.е. ПОКУПАТЕЛЬ является сущностью родителем для сущности ЗАКАЗ. То есть если вы хотите, чтобы внешний ключ передавался в дочернюю сущность (и, в результате, создавал зависимую сущность), то можете создать идентифицирующую связь между родительской и дочерней сущность).

Когда зависимость связей установлена, разработчик должен выбрать название и сформулировать определение связи. Название связи – это короткая фраза, обычно глагол, который показывает, как соотносятся сущности между собой. Эта фраза отражает значение представляемой связи. Часто, название связи – это один глагол, однако, глагольная группа также может часто употребляться в названиях связей. Когда название связи выбрано, разработчик может прочитать взаимосвязи и сформулировать предложение, описывающее или определяющее связь между двумя сущностями.

В случае идентифицирующих связей, всегда есть родительская и дочерняя сущность, название связи определяется в первую очередь по родителю, а только потом – по потомку. Если между сущностями существует категоризация связей,  значит, сущности определяют один и тот же объект реального мира и количество элементов на конце связи потомка всегда ноль или один. В название связи не включают  словосочетание «может быть», но оно подразумевается. Например, РАБОТНИК может быть РАБОТНИКОМ НА ОКЛАДЕ.

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

Названия связей должны нести определенное значение. Это должно быть содержание связи. Полное значение, которое разработчик вкладывает в выбор определенного названия, может быть задокументировано как определение связи. Определение связи – это текстовое утверждение, определяющее значение связи. Для описания связей используются те же самые правила,  что и для описания сущностей:

a) Они должны быть определенными

b) Они должны быть краткими

c) Они должны иметь значение

Например, после определения связи «один к одному» или «один ко многим» между двумя сущностями, такими как ОПЕРАТОР и РАБОЧЕЕ_МЕСТО,   название связи может быть «в настоящее время работает на». Эта связь может быть подтверждена следующим определением:

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

А 3.3.3 Построение диаграмм Уровней объекта

После того как отношения были определены, разработчик модели может начать создавать диаграммы уровней объекта, чтобы графически изобразить отношения. Пример диаграммы уровня объекта показан на рисунке A3.5. В этой стадии моделирования все объекты показываются как квадратные поля, и неопределенные отношения разрешены. Число и границы диаграмм уровней объекта могут меняться в зависимости от размера модели и точки зрения отдельных экспертов. Если это осуществимо, желательно построить одну диаграмму, изображающую все объекты и их отношения. Она полезна для того, чтобы основать контекст и гарантировать последовательность действий. Если сгенерировано множество диаграмм, разработчик модели должен следить за тем, чтобы диаграммы не противоречили друг другу так же как объектам и определенным на них отношениям. Комбинация диаграмм уровней объекта должна описывать все заданные отношения.

Рисунок A3.5. Диаграммы Уровней Объекта

Частный случай диаграммы уровней объекта сосредотачивается на одном объекте и именуется как “Диаграмма Объекта” Пример показан на рисунке A3.6. Построение диаграммы объекта для каждого объекта является необязательным, но если диаграмма объекта все-таки используется, разработчик должен учесть следующие рекомендации:

a) Субъект всегда размещается приблизительно в центре страницы.

b) Родительские или общие для данного класса объекты должны быть помещены выше субъекта.

c) Дочерние объекты или объекты категории должны быть размещены ниже субъекта.

d) Неопределенные отношения обычно размещаются рядом с квадратным полем, обозначающим субъект.

e) Линии, показывающие отношения, выходят из subject и идут до объектов, с которыми он связан. На диаграмме могут указываться лишь зависимости между субъектом и связанными с ним объектами.

f) У каждой линии связи есть обозначение, состоящее из одного или двух названий отношений, отделенных косой чертой (“/”).

Рисунок A3.6. Этап 2 (Уровень Объекта) Пример Диаграммы