Рубрики
Без рубрики

Руководство для начинающих по связям таблиц базы данных

Изучите три типа взаимосвязей таблиц базы данных: один-ко-многим, один-ко-одному и многие-ко-многим, которые основаны на ограничениях внешнего ключа.

Автор оригинала: Vlad Mihalcea.

Вступление

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

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

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

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

Руководство для начинающих по связям таблиц базы данных @vlad_mihalcea https://t.co/84cgiDkUhc

Один Ко Многим

Отношение таблицы “один ко многим” выглядит следующим образом:

В системе реляционных баз данных отношение “один ко многим” связывает две таблицы на основе столбца внешнего ключа в дочернем элементе, который ссылается на Первичный ключ строки родительской таблицы.

На приведенной выше диаграмме таблицы столбец post_id в таблице post_comment имеет отношение внешнего ключа к столбцу post таблица идентификатор Первичный ключ:

ALTER TABLE 
    post_comment 
ADD CONSTRAINT 
    fk_post_comment_post_id 
FOREIGN KEY (post_id) REFERENCES post

Если вы хотите знать, какой лучший способ сопоставить отношения таблиц “один ко многим” с JPA и Hibernate, ознакомьтесь с этой статьей .

Один К Одному

Взаимосвязь таблиц “один к одному” выглядит следующим образом:

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

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

На приведенной выше диаграмме таблицы столбец id в post_details таблица также имеет отношение внешнего ключа к столбцу post таблица идентификатор Первичный ключ:

ALTER TABLE 
    post_details 
ADD CONSTRAINT 
    fk_post_details_id 
FOREIGN KEY (id) REFERENCES post

Если вы хотите знать, какой лучший способ сопоставить отношения таблиц “один к одному” с JPA и Hibernate, ознакомьтесь с этой статьей .

Многие Ко Многим

Взаимосвязь таблиц “многие ко многим” выглядит следующим образом:

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

На приведенной выше диаграмме таблицы столбец post_id в таблице post_tag также связан внешним ключом со столбцом post таблица идентификатор Первичный ключ:

ALTER TABLE 
    post_tag
ADD CONSTRAINT 
    fk_post_tag_post_id
FOREIGN KEY (post_id) REFERENCES post

И столбец tag_id в таблице post_tag имеет отношение внешнего ключа к столбцу tag таблица идентификатор Первичный ключ:

ALTER TABLE 
    post_tag
ADD CONSTRAINT 
    fk_post_tag_tag_id
FOREIGN KEY (tag_id) REFERENCES tag

Если вы хотите знать, какой лучший способ сопоставить отношения таблиц “многие ко многим” с JPA и Hibernate, ознакомьтесь с этой статьей .

Вывод

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

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