Моделирование взаимосвязей между сущностями

Связь между сущностями


Определение связи

Связью мы назовем поименованное отношение, имеющее место между двумя сущностями.

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

Каждая связь имеет два конца, каждый из которых обладает:

  • именем
  • степенью / мощностью
  • признаком обязательности.
  • Эти свойства используются для характеристики связи по отношению к каждой из участвующей в ней сторон.

    Изображение связи

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

    Рисунок 3-3. Связь



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

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

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

    Рекурсивная связь

    Рекурсивная связь с идентичными свойствами изображается следующим образом:

    Рисунок 3-4. Рекурсивная связь

    Идентификация связей

    Имя (а скорее, описание) для каждого конца связи подписывается возле него строчными буквами.

    Рисунок 3-5. Идентификация связи

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

    Таким образом изображенная выше схема читается слева направо следующим образом:


    Каждая СУЩНОСТЬ-A должна "описание-связи-1" одну и только одну СУЩНОСТЬ-B

    а справа налево:

    Каждая СУЩНОСТЬ-B может "описание-связи-2" одну и более СУЩНОСТЕЙ-A.

    Все это может выглядеть несколько непонятно до тех пор, пока вы не обратитесь к реальному примеру:

    Рисунок 3-6. Пример связи



    Каждый БИЛЕТ должен предназначаться для одного и только одного ПАССАЖИРА и:

    Каждый ПАССАЖИР может быть указан на одном и более БИЛЕТАХ.

    Упоминание имени сущности во множественном числе имеет место в том случае, если степень связи имеет значение "многие". Такая связь читается как "одну и более", а связь, имеющая степень "один", читается как "одну и только одну".

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

    Дисциплина идентификации

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

    Описание связи содержит тип отношения, имеющего место между двумя сущностями; под этот тип должны подходить все экземпляры (вхождения) данной связи. Все понятия в МВМС адресуются к типам, а не к экземплярам и вхождениям.

    Формальный синтаксис

    Для чтения любой связи используется следующий синтаксис:



    Фразы "и любая" и "всегда" добавляются для придания утверждению большей строгости. Фраза "не так ли?" добавляется для проверки утверждения.

    Если мы прочитаем связь БИЛЕТ/ПАССАЖИР снова, она станет яснее.

    Каждый и любой БИЛЕТ должен предназначаться для одного и только одного ПАССАЖИРА всегда, не так ли ?

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



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

    Инвертированный синтаксис

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

    Рисунок 3-7.



    При использовании нормального синтаксиса связь читается так:

    Каждый КУПОН должен оформляться на один и только один РЕЙС.

    При использовании инвертированного синтаксиса:

    Это означает, что вы не можете иметь КУПОН, которому бы не соответствовал уникально определенный РЕЙС, не так ли?

    Слово "любой" мы заменили вопросительной фразой, а выражение "один и только один" свели к "уникально определенному".

    Вопрос и здесь получился корректным, ибо в модели не допускается использование КУПОНА, которому бы не соответствовал определенный рейс на определенную дату. Однако в реальной жизни существуют билеты с открытой датой, у которых купоны не содержат точную дату вылета, поэтому характеристику связи необходимо изменить на "необязательную".

    Разрешенные связи

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

    Рисунок 3-8. Разрешенные формы связей



    Теперь рассмотрим примеры неразрешенных связей, отражающих состояния, которые невозможны в действительности.

    Рисунок 3-9.Неразрешенные формы связей



    Дополнительные соглашения и правила, касающиеся связей, рассматриваются в главе 7. Исчерпывающий перечень разрешенных и неразрешенных форм связей приводится в Приложении B.


    Содержание раздела