Виды связей
Last updated
Last updated
Связь "один к одному" - это тип связи между двумя таблицами в реляционной базе данных, при котором одна запись в одной таблице соответствует одной и только одной записи в другой таблице, и наоборот.
Для примера рассмотрим две таблицы: "Сотрудники" и "Паспортные данные".
Таблица "Сотрудники":
ИД | Имя | Должность |
---|---|---|
Таблица "Паспортные данные":
ИД | Паспортный номер |
---|---|
В этом примере каждый сотрудник имеет только один паспортный номер, и каждый паспортный номер соответствует только одному сотруднику. Таким образом, мы имеем "один к одному" тип связи между таблицами "Сотрудники" и "Паспортные данные".
Но такое используется редко и проще объединить эти таблицу в одну
ИД | Имя | Должность | Паспортный номер |
---|---|---|---|
Связь "один ко многим" (или "один к нескольким") - это тип связи между двумя сущностями в реляционной базе данных, при котором одна запись в одной таблице может быть связана с несколькими записями в другой таблице, но каждая запись во второй таблице соответствует только одной записи в первой таблице.
Давайте рассмотрим пример с клиентами и номерами телефонов:
Таблица "Клиенты":
Таблица "Номера телефонов":
В этом примере каждый клиент может иметь несколько номеров телефонов, но каждый номер телефона соответствует только одному клиенту. Это пример связи "один ко многим" между таблицами "Клиенты" и "Номера телефонов".
Для реализации такой связи в базе данных обычно используется внешний ключ во второй таблице, который ссылается на первичный ключ в первой таблице. В этом случае, поле "ID" в таблице "Номера телефонов" является внешним ключом, который ссылается на поле "ID" в таблице "Клиенты".
Связь "многие ко многим" (Many-to-Many) - это тип связи между двумя сущностями в базе данных, при котором одной сущности может соответствовать несколько элементов другой сущности, и наоборот. Этот тип связи часто встречается в реальных приложениях, когда у нескольких элементов одной сущности могут быть связи с несколькими элементами другой сущности, и наоборот.
Давайте рассмотрим пример со связью "многие ко многим" между таблицами "Книги" и "Авторы":
Таблица "Книги":
book_id (идентификатор книги)
title (название книги)
genre (жанр книги)
year_published (год публикации)
Таблица "Авторы":
author_id (идентификатор автора)
author_name (имя автора)
birth_date (дата рождения автора)
Теперь, чтобы установить связь "многие ко многим" между книгами и авторами, мы создаем третью таблицу, которая называется, например, "Книги_Авторы":
Таблица "Книги_Авторы":
book_id (идентификатор книги) - внешний ключ к таблице "Книги"
author_id (идентификатор автора) - внешний ключ к таблице "Авторы"
Каждая запись в таблице "Книги_Авторы" связывает определенную книгу с определенным автором. Например, если книга имеет несколько авторов, то в таблице "Книги_Авторы" будет несколько записей с одним и тем же book_id
, но разными author_id
. Аналогично, если у автора есть несколько книг, то в этой таблице будет несколько записей с одним и тем же author_id
, но разными book_id
.
Таблица "Книги":
Таблица "Авторы":
Таблица "Книги_Авторы":
Таким образом, через таблицу "Книги_Авторы" мы можем легко установить связь между книгами и авторами в случае, когда одна книга может иметь несколько авторов, а также когда один автор может быть связан с несколькими книгами.
ID | Имя |
---|---|
ID | Номер телефона | id_client |
---|---|---|
book_id | title | genre | year_published |
---|---|---|---|
author_id | author_name | birth_date |
---|---|---|
book_id | author_id |
---|---|
1
John
Менеджер
2
Anna
Разработчик
1
12345
2
67890
1
John
Менеджер
12345
2
Anna
Разработчик
67890
1
Алексей
2
Елена
1
123456
1
2
789012
1
3
345678
2
1
"Война и мир"
Роман
1869
2
"Преступление и наказание"
Роман
1866
3
"1984"
Фантастика
1949
4
"Унесенные ветром"
Роман
1936
1
Лев Толстой
1828-09-09
2
Федор Достоевский
1821-11-11
3
Джордж Оруэлл
1903-06-25
4
Маргарет Митчелл
1900-11-08
1
1
2
2
3
3
4
4