Связи между таблицами в реляционных базах данных позволяют моделировать отношения между сущностями. Тип связи зависит от того, как записи одной таблицы соотносятся с записями другой таблицы.
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 (товары).