Условие

«Ментор и стажёры» — это пример из жизни связи:
- Многие ко многим
- Один к одному
- Один ко многим
- Многие к одному
Решение
Правильный ответ — Один ко многим (1:N).
Логика
- У одного ментора может быть много стажёров (3–10 одновременно).
- У одного стажёра обычно один ментор в моменте.
Это классический паттерн 1:N:
- «1» сторона — ментор (родитель).
- «N» сторона — стажёр (дети).
Все типы кардинальности
| Тип | Пример из жизни |
|---|---|
| 1:1 | Человек ↔ паспорт |
| 1:N | Ментор ↔ стажёры; компания ↔ сотрудники |
| N:1 | Стажёры ↔ ментор (тот же 1:N с другой стороны) |
| M:N | Студенты ↔ курсы (студент на нескольких курсах, на курсе несколько студентов) |
Как реализуется в БД
CREATE TABLE mentors (
mentor_id INT PRIMARY KEY,
name TEXT
);
CREATE TABLE trainees (
trainee_id INT PRIMARY KEY,
name TEXT,
mentor_id INT REFERENCES mentors(mentor_id) -- FK на N-стороне
);Внешний ключ всегда живёт на N-стороне: каждый стажёр ссылается на одного ментора.
Когда было бы M:N
Если бы у стажёра могло быть несколько менторов одновременно (например, технический + бизнесовый), потребовалась бы таблица-связка:
CREATE TABLE mentor_trainee (
mentor_id INT REFERENCES mentors(mentor_id),
trainee_id INT REFERENCES trainees(trainee_id),
PRIMARY KEY (mentor_id, trainee_id)
);Подводные камни
- «У стажёра обязательно ровно 1 ментор» vs «может быть 0 или 1». Это разные подтипы 1:N. Контролируется
NOT NULLнаmentor_idили его отсутствием. - Связь N:1 — это та же 1:N с другой стороны. Различение нужно только при описании направления (от какой сущности смотрим).
- «Один к одному, потому что ментор — один». Нет: 1:1 — это когда у обеих сторон по одному. У ментора — много стажёров.
Эталонный ответ
Один ко многим (1:N) — у ментора несколько стажёров, у каждого стажёра один ментор.