<На страницу назад | На страницу вперед >

4.3.2. Определение отношений

Следующим шагом является определение выявленных отношений. Эти определения включают:

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

Для установления зависимости отношение между двумя сущностями должно быть проверено в обоих направлениях. Это делается посредством определения мощности на каждом конце отношения. Для определения мощности предположите существование экземпляра одной из сущностей. Затем определите, сколько различных экземпляров второй сущности может быть связано с первой. Повторите анализ, поменяв сущности ролями.

Рассмотрим отношение между сущностями ГРУППА и СТУДЕНТ. Отдельный студент может быть записан в ноль, одну или много ГРУПП. Анализируя в другом направлении, видим, что отдельная группа может иметь ноль, одного или много студентов. Поэтому между сущностями ГРУППА и СТУДЕНТ существует отношение типа "многие ко многим" с мощностью "ноль, один или много" на каждом конце отношения. (Это отношение является неспецифическим, так как на каждом конце отношения не существует мощности "ровно один". Такое неспецифическое отношение позже в процессе моделирования должно каким-то образом разрешиться.)

В качестве другого примера возьмем отношение между сущностями ПОКУПАТЕЛЬ и ЗАКАЗ_НА_ПОКУЛКУ. Отдельный ПОКУПАТЕЛЬ может сделать ноль, один или много ЗАКАЗОВ_НА_ПОКУПКУ. Отдельный ЗАКАЗ_НА_ПОКУПКУ всегда делается одним ПОКУПATEЛEM. Поэтому между сущностями ПОКУПATEЛЬ и ЗАКАЗ_НА_ПОКУПКУ существует отношение типа "один ко многим" с мощностью "один" на конце отношения у сущности ПОКУПАТЕЛЬ и с мощностью "ноль, один или много" на конце ЗАКАЗ_НА_ПОКУПКУ. (Здесь специфическое отношение, поскольку у конца ПОКУПАТЕЛЬ этого отношения имеется мощность "ровно один", т.е. ПОКУПАТЕЛЬ является родительской сущностью для сущности ЗАКАЗ_НА_ПОКУПКУ.)

Установив зависимость отношения, разработчик должен выбрать имя и начать описание отношения. Имя отношения является кратким выражением, обычно глаголом с союзом, присоединяющим вторую упомянутую сущность. Это выражение отражает смысл представляемого отношения. Часто имя отношения состоит из одного глагола, хотя наречия и предлоги также появляются в именах отношений. После выбора имени отношения разработчик должен иметь возможность, читая отношения, получать осмысленное предложение, определяющее или описывающее отношение между двумя сущностями.

При специфической форме отношения всегда имеются сущность-родитель и сущность-потомок; имя отношения интерпретируется сначала со стороны сущности-родителя, а затем от сущности-потомка к сущности-родителю. Если между этими сущностями существует отношение категоризации, то отсюда следует, что обе сущности относятся к одному и тому же объекту реального мира и мощностью на конце сущности-потомка (или сущности-категории) всегда является "ноль или один". Имя отношения в таком случае опускается, поскольку имя "может быть" подразумевается. Например, СЛУЖАЩИЙ может быть ШТАТНЫМ_СЛУЖАЩИМ.

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

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

Определения отношений должны быть:

Например, если отношение "один к нулю или к одному" определено между такими двумя сущностями, как ОПЕРАТОР и РАБОЧАЯ_СТАНЦИЯ, то имя отношения может читаться "в настоящий момент назначен для обслуживания". Это отношение может сопровождаться следующим определением:

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

<На страницу назад | На страницу вперед >