2015-02-27 3 views
1

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

Например, если у меня есть сущности Journey and Location. Теперь каждое путешествие имеет 2 местоположения, начальное местоположение и конечное местоположение.

Итак, как мы моделируем эти отношения и устанавливаем мощность на каждом объекте (Путешествие и местоположение).

Простые результаты поиска google в простых пояснениях 1-1, 1-м и m-n. Но как мы ограничимся ими ровно 1-2?

ответ

2

Ваш пример не «1 к 2», но «N 2», и вы бы смоделировать это просто наличием двух внешних ключей:

enter image description here

(И, вероятно, чек обеспечить начиная конечные окончания местах отличаются.)


Если вы действительно хотите «1 2», в том смысле, что любое данное место всегда подключен только один путь, вы должны сделать что-то вроде этого ...

enter image description here

... и использовать СУБД, которая поддерживает отложенные ограничения, так что вы можете разбить проблему курицы и яйца при вставке новых данных.

В СУБД, которая не поддерживает отложенные ограничения, вы можете сделать начальные и конечные местоположения NULL-способными, но тогда это будет больше не «от 1 до 2», а «от 1 до 0..2».

0

Различные обозначения моделирования представляют это по-разному, но обычно количество (по-разному называют степени, диапазон или кратность) записывается ближе к концу линии отношений, где она применяется. Это наиболее распространено в нотации UML. В терминологии IDEF1X его иногда называют «N Cardinality».

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

+0

Обозначения здесь не важны. Точно так же реализация не находится в настоящее время. Основная концепция/дизайн. Путешествие имеет два местоположения, связанные с ним, начальное местоположение и конечное местоположение. Как мы выражаем эти отношения. Очевидно, что в ER есть два объекта (Journey and Location), но как показать, что с Journey связаны два местоположения с определенным именем? В OO два объекта местоположения могут использоваться как члены объектов Journey, но как представить их в проекте? – ResVict

+1

Путешествие с двумя обязательными атрибутами: JOURNEY {Start, End}. Очевидно, что ключ будет {Start, End}. Разве это не так просто? – sqlvogel

Смежные вопросы