Кто-нибудь может объяснить, как реализовать отношения один-к-одному, один-ко-многим и многие-ко-многим при разработке таблиц с некоторыми примерами?
sql
oracle
database-design
арсенал
источник
источник
Ответы:
Один-к-одному: используйте внешний ключ для ссылочной таблицы:
Вы также должны наложить уникальное ограничение на столбец внешнего ключа (
addess.student_id
), чтобы несколько строк в дочерней таблице (address
) не связывались с одной и той же строкой в ссылочной таблице (student
).Один-ко-многим : используйте внешний ключ на многих сторонах связи, ссылающихся обратно на «одну» сторону:
Многие ко многим : используйте соединительную таблицу ( пример ):
Примеры запросов:
источник
student
заданного anaddress
.student_classes
строка должна иметь только одно отношение «один к одному». ЕслиstudentA
есть вclassA
иclassB
, то должно быть две строкиstudent_classes
, одна для которых отношения.Вот некоторые реальные примеры типов отношений:
Один на один (1: 1)
Отношение является взаимно-однозначным, если и только если одна запись из таблицы A связана максимум с одной записью в таблице B.
Чтобы установить отношение «один к одному», первичный ключ таблицы B (без записи о потерях) должен быть вторичным ключом таблицы A (с записями о потерях).
Например:
Один ко многим (1: М)
Отношение является одним-ко-многим, если и только если одна запись из таблицы A связана с одной или несколькими записями в таблице B. Однако одна запись в таблице B не может быть связана с несколькими записями в таблице A.
Чтобы установить отношение «один ко многим», первичный ключ таблицы A (таблица «one») должен быть вторичным ключом таблицы B (таблица «many»).
Например:
Многие ко многим (М: М)
Отношение много-ко-многим тогда и только тогда, когда одна запись из таблицы A связана с одной или несколькими записями в таблице B и наоборот.
Чтобы установить отношение «многие ко многим», создайте третью таблицу с именем «ClassStudentRelation», которая будет иметь первичные ключи как таблицы A, так и таблицы B.
источник
Один ко многим
Отношение «один ко многим» выглядит следующим образом:
В системе реляционной базы данных отношение таблицы «один ко многим» связывает две таблицы на основе
Foreign Key
столбца в дочернем элементе, который ссылается наPrimary Key
строку родительской таблицы.На приведенной выше диаграмме таблицы
post_id
столбецpost_comment
таблицы имеетForeign Key
отношение к столбцуpost
идентификатора таблицыPrimary Key
:Один к одному
Табличное отношение один к одному выглядит следующим образом:
В системе реляционной базы данных отношение таблицы «один к одному» связывает две таблицы на основе
Primary Key
столбца в дочернем элементе, который такжеForeign Key
ссылается наPrimary Key
строку родительской таблицы.Следовательно, мы можем сказать, что дочерняя таблица делится
Primary Key
с родительской таблицей.На приведенной выше диаграмме таблицы
id
столбецpost_details
таблицы также имеетForeign Key
отношение к столбцуpost
таблицыid
Primary Key
:Многие-ко-многим
Отношение «многие ко многим» выглядит следующим образом:
В системе реляционной базы данных отношение таблицы «многие ко многим» связывает две родительские таблицы через дочернюю таблицу, которая содержит два
Foreign Key
столбца, ссылающихся наPrimary Key
столбцы двух родительских таблиц.На приведенной выше диаграмме таблицы
post_id
столбецpost_tag
таблицы также имеетForeign Key
отношение к столбцуpost
идентификатора таблицыPrimary Key
:И
tag_id
столбец вpost_tag
таблице имеетForeign Key
отношение к столбцуtag
идентификатора таблицыPrimary Key
:источник
Отношение один к одному (1-1): это отношение между первичным и внешним ключом (первичный ключ относится только к одной записи внешнего ключа). это отношения один на один.
Отношение «один ко многим» (1-M): это также отношение между отношениями первичного и внешнего ключей, но здесь первичный ключ относится к нескольким записям (т. Е. В таблице A содержится информация о книге, а в таблице B - несколько издателей одной книги).
Многие ко многим (ММ): « Многие ко многим» включает в себя два аспекта, полностью объясненных ниже как пример.
источник