Розкажіть про зв'язок 1:many (1 до багатьох)
Зв'язок «один до багатьох» (1:N) - це найпоширеніший тип зв'язку між таблицями. Він означає, що один запис у першій таблиці може бути пов'язаний з кількома записами у другій, але кожен запис у другій таблиці належить лише одному запису в першій.
Приклад
Один користувач -> багато замовлень
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id)
);Тут:
users.id- первинний ключ (унікальний ідентифікатор користувача),orders.user_id- зовнішній ключ, що вказує, якому користувачу належить замовлення.
Як це виглядає логічно
| users | orders |
|---|---|
| id = 1, name = 'Анна' | id = 101, user_id = 1, amount = 500 |
| id = 102, user_id = 1, amount = 900 | |
| id = 2, name = 'Іван' | id = 103, user_id = 2, amount = 200 |
У Анни - два замовлення, у Івана - одне, але кожне замовлення може належати лише одному користувачу.
Приклад запиту
Щоб об'єднати дані й побачити всі замовлення з іменами клієнтів:
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;Результат:
| name | amount |
|---|---|
| Анна | 500 |
| Анна | 900 |
| Іван | 200 |
Де використовується зв'язок 1:N
- Один клієнт -> багато замовлень
- Один викладач -> багато студентів
- Один відділ -> багато співробітників
- Один автор -> багато книг
Особливості
- Головна таблиця (де «один») містить первинний ключ.
- Підпорядкована таблиця (де «багато») містить зовнішній ключ, що вказує на «одного».
- Якщо видалити запис з головної таблиці, всі пов'язані рядки можуть стати «осиротілими» - це регулюється налаштуваннями (
ON DELETE CASCADE,SET NULLтощо).
Підсумок: Зв'язок 1:N (один до багатьох) з'єднує головну таблицю з безліччю залежних записів. Він використовується, коли один об'єкт може мати кілька підпорядкованих, і реалізується через зовнішній ключ у таблиці «багато».
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.