Разница между отношениями один ко многим и многие к одному
в чем реальная разница между "Один ко многим" и "многие к одному" отношения? Это только наоборот, вроде?
Я не могу найти учебник "хорошо и легко понять" по этой теме, кроме этого:SQL для начинающих: Часть 3-Отношения с базой данных
9 ответов
Да, это наоборот. Это зависит от того, на какой стороне отношений присутствует сущность.
Например, если один отдел может нанять несколько сотрудников, то отношение "отдел-сотрудник" является отношением "один ко многим" (в 1 отделе работает много сотрудников), а отношение "сотрудник-отдел" - "много к одному" (многие сотрудники работают в одном отделе).
Подробнее о типах отношений:
от 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.
В напротив многие-к-одному отношение, локальная таблица может иметь много строк, связанных с одной строкой в другой таблице. В нашем примере многие Order
S может быть связано с одним Customer
. Это концептуальное различие важно для ментального представления.
кроме того, схема, которая поддерживает связь может быть представлено по-разному в Customer
и Order
таблицы. Если у клиента есть столбцы id
и name
:
id,name
1,Bill Smith
2,Jim Kenshaw
затем на Customer
связано с Order
s, многие реализации 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-->
-
кратность (термин ER: мощность)
- один-к-одному отношения: пример мужа и жены
- один-ко-многим отношения: пример матери и детей
- многие-ко-многим отношения: пример студента и тему
-
направленности: не влияет на отображение, но влияет на то, как мы можем получить доступ к данным.
- однонаправленный отношения: поле или свойство связи, которое ссылается на другую сущность.
- двунаправленные отношения: каждый сущность имеет поле или свойство связи, которое ссылается на другую сущность.
- - - - один ко многим - - - родители могут иметь двух или более детей.
-
--- - много к одному - - - эти 3 ребенка могут иметь одиноких родителей.
оба похожи. Это может быть использовано принадлежит к необходимости. Если вы хотите найти детей для определенных родителей, тогда вы можете пойти с одним ко многим. или же, если хочешь найти родителей для Близнецов, ты можешь пойти со многими-к-одному. Также....,
практической разницы нет. Просто используйте отношения, которые имеют наибольший смысл, учитывая, как вы видите свою проблему, как проиллюстрировал Девендра.
один-ко-многим имеет родительский класс, содержащий n количество дочерних объектов, поэтому это сопоставление коллекции. mant-To-one имеет n количество дочерних элементов, содержащих одного родителя, поэтому это сопоставление объектов