1:1), один‑ко‑многим (1:N) и многие‑ко‑многим (M:N). Они реализуются через первичные и внешние ключи (PRIMARY KEY, FOREIGN KEY), иногда с дополнительными таблицами‑связками.
1:1), один‑ко‑многим (1:N) и многие‑ко‑многим (M:N). Они реализуются через первичные и внешние ключи (PRIMARY KEY, FOREIGN KEY), иногда с дополнительными таблицами‑связками.
Связь 1:1 (один к одному)
Каждой строке в первой таблице соответствует не более одной строки во второй, и наоборот. Это связь 1:1.
Пример: таблица users и таблица user_profiles, где у каждого пользователя может быть ровно один профиль, а у профиля — ровно один владелец.
Реализация:
во второй таблице (user_profiles) внешний ключ user_id на users.id, который также является PRIMARY KEY или помечен как UNIQUE, чтобы не было двух профилей для одного пользователя.
Связь 1:N (один ко многим)
Одна строка в первой таблице связана с несколькими строками во второй, но каждая строка во второй относится только к одной строке в первой. Это связь 1:N.
Пример: users и orders: один пользователь может иметь много заказов, но каждый заказ принадлежит одному пользователю.
Реализация:
в таблице orders есть внешний ключ user_id на users.id, объявленный как FOREIGN KEY.
Связь M:N (многие ко многим)
Строка в первой таблице может быть связана с несколькими строками во второй, и наоборот. Это связь M:N.
Пример: students и courses — один студент может записаться на много курсов, один курс — иметь много студентов.
Прямая связь M:N в реляционной модели обычно раскладывается через таблицу‑связку:
создаётся промежуточная таблица, например student_courses;
в ней два внешних ключа: student_id → students.id, course_id → courses.id;
каждая строка таблицы student_courses означает одну связь «студент — курс».
Как ответить на собеседовании
В реляционных БД основными типами связей являются 1:1, 1:N и M:N. Они строятся через PRIMARY KEY и FOREIGN KEY, а для связей многие‑ко‑многим почти всегда заводят отдельную промежуточную таблицу. Для junior важно уметь привести по одному реальному примеру для каждого типа.
Оцени свой прогресс