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

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

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

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 может быть связано с многими Orders.

В напротив многие-к-одному отношение, локальная таблица может иметь много строк, связанных с одной строкой в другой таблице. В нашем примере многие 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 (клиент-id #2) имеет только 1 заказ для $158,01.

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

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

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

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

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


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

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

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


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


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

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

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

  • - - - один ко многим - - - родители могут иметь двух или более детей.
  • --- - много к одному - - - эти 3 ребенка могут иметь одиноких родителей.

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


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


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