Связи между таблицами в реляционных базах данных позволяют моделировать отношения между сущностями. Тип связи зависит от того, как записи одной таблицы соотносятся с записями другой таблицы.
1. Один ко многим (One-to-Many)
Наиболее распространённый тип связи. Одна запись в таблице A может быть связана с несколькими записями в таблице B, но каждая запись из таблицы B может быть связана только с одной записью из таблицы A.
-
Пример:
- Один отдел может иметь много сотрудников.
- Таблица
departments
(отделы) и таблица employees
(сотрудники).
-
Реализация:
Используется внешний ключ (foreign key) в таблице с множественными записями (в данном случае, в таблице employees
).
Таблица departments
:
user_id | username
1 | john_doe
2 | jane_doe
Таблица employees
:
profile_id | user_id | bio
1 | 1 | Developer
2 | 2 | Designer
2. Один к одному (One-to-One)
Каждая запись в таблице A связана только с одной записью в таблице B, и наоборот.
-
Пример:
- У каждого пользователя может быть только один профиль.
- Таблица
users
(пользователи) и таблица user_profiles
(профили пользователей).
-
Реализация:
Используется уникальный внешний ключ (foreign key), чтобы каждая запись была связана только с одной другой записью.
Таблица users
:
student_id | name
1 | Alice
2 | Bob
Таблица user_profiles
:
course_id | course_name
1 | Math
2 | Science
3. Многие ко многим (Many-to-Many)
Одна запись в таблице A может быть связана с несколькими записями в таблице B, и наоборот.
-
Пример:
- Один студент может записаться на несколько курсов, и один курс может быть записан несколькими студентами.
- Таблица
students
(студенты) и таблица courses
(курсы).
-
Реализация:
Создаётся промежуточная таблица (таблица связи), которая содержит внешние ключи из обеих связанных таблиц.
Таблица students
:
student_id | name 1 | Alice 2 | Bob
Таблица courses
:
course_id | course_name 1 | Math 2 | Science
Таблица связи student_courses
:
student_id | course_id
1 | 1
1 | 2
2 | 1
4. Без связи (No Relation)
Таблицы могут существовать независимо друг от друга, если между ними нет логической связи. В таком случае их объединение производится только при необходимости анализа данных.
- Пример:
Таблица countries
(страны) и таблица products
(товары).