Разница между отношениями один ко многим и многие к одному


какова реальная разница между отношениями один ко многим и многие к одному? Это только наоборот, вроде?

Я не могу найти какой-либо "хороший и простой для понимания" учебник по этой теме, кроме этого: SQL для начинающих: Часть 3-Отношения с базой данных

9 101

9 ответов:

Да, это наоборот. Это зависит от того, на какой стороне отношений присутствует сущность.

Например, если один отдел может нанимать несколько сотрудников, то отношение "отдел-сотрудник" - это отношение "один ко многим" (1 отдел нанимает много сотрудников), а отношение "сотрудник-отдел" - это отношение "многие к одному" (многие сотрудники работают в одном отделе).

Подробнее о типах отношений:

Отношения С Базой Данных - Документация IBM DB2

от http://www.sum-it.nl/cursus/dbdesign/english/intro030.php3

большинство отношений между таблицами являются один-ко-многим.

пример:

* One area can be the habitat of many readers.
* One reader can have many subscriptions.
* One newspaper can have many subscriptions.

отношение многие к одному такое же, как один ко многим, но от другого точка зрения.

* Many readers live in one area.
* Many subscriptions can be of one and the same reader.
* Many subscriptions are for one and the same newspaper.

какова реальная разница между отношениями один ко многим и многие к одному?

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

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

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

кроме того, схема, которая поддерживает связь может быть представлены по-разному в Customer и Order таблицы. Если у клиента есть столбцы id и name:

id,name
1,Bill Smith
2,Jim Kenshaw

затем на Customer связано с Orders, многие реализации SQL добавляют к Order таблица столбец, который хранит id соответствующей Customer (в этой схемы customer_id:

id,date,amount,customer_id
10,20160620,12.34,1
11,20160620,7.58,1
12,20160621,158.01,2

в приведенных выше строках данных, если мы посмотрим на customer_id столбец ID, мы видим, что Bill Smith (customer-id #1) имеет 2 заказа, связанные с ему: один за $12.34 и один за $7.58. Jim Kenshaw (customer-id #2) имеет только 1 заказ на $158,01.

важно понимать, что обычно отношение "один ко многим"на самом деле не добавляет никаких столбцов в таблицу, которая является "одной". Элемент Customer не имеет дополнительных столбцов, которые описывают отношения с Order. На самом деле Customer может также иметь отношение один ко многим с ShippingAddress и SalesCall таблицы и все же не имеют дополнительных столбцов, добавленных в Customer стол.

однако для описания отношения "многие к одному" часто используется id столбец добавляется в таблицу many, которая является внешним ключом к одной таблице - в этом случае a customer_id столбец добавляется в Order. К соответствующему заказу #10 за $ 12.34 to Bill Smith мы назначаем до Bill Smith's id 1.

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

customer_id,order_id
1,10
1,11
2,12

надеюсь, что это помогает.

ответ на ваш первый вопрос : как похожи,

ответ на ваш второй вопрос: один ко многим -> мужчина (таблица мужчин) может иметь более одной жены(таблица женщин) многие к одному- > более одной женщины вышли замуж за одного человека.

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

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

один ко многим и многие к одному похожи по множественности, но не аспекту (т. е. направленности).

карт Ассоциации между классами сущностей и отношения между таблицами. Есть две категории отношений:

  1. кратность (термин ER: мощность)
    • один-к-одному отношения: пример мужа и жены
    • один-ко-многим отношения: пример матери и детей
    • многие-ко-многим отношения: пример ученика и субъекта
  2. направленности : не влияет на отображение, но имеет значение о том, как мы можем получить доступ к данным.
    • однонаправленный отношения: поле или свойство связи, которое ссылается на другую сущность.
    • двунаправленные отношения: каждый сущность имеет поле связи или свойство, которое ссылается на другую сущность.
  • - - - один ко многим - - - родители могут иметь двух или более детей.
  • - - - многие к одному - - - эти 3 детей могут иметь одного родителя.

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

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

один ко многим имеет родительский класс содержит n количество дочерних элементов, поэтому это сопоставление коллекции. mant-To-one имеет n количество дочерних элементов содержит одного родителя, поэтому это сопоставление объектов