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



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



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

720   9  

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

В противоположном отношении много к одному локальная таблица может иметь много строк, связанных с одной строкой в другой таблице. В нашем примере множество Order s может быть связано с одним 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, который является внешний ключ к одной таблице - в этом случае столбец customer_id добавляется к Order. Чтобы связать ордер №10 за $12.34 с Bill Smith, мы присваиваем столбец customer_id идентификатору Bill Smith 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.