Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Розкажіть про зв'язок 1:many (1 до багатьох)». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Зв'язок **«один до багатьох» (1:N)** - найпоширеніший тип зв'язку між таблицями: **один запис** у першій таблиці може бути пов'язаний **з кількома записами** у другій, але кожен запис у другій таблиці належить **лише одному запису** в першій, наприклад один користувач - багато замовлень. **Ключове:** головна таблиця (де «один») містить первинний ключ, підпорядкована таблиця (де «багато») містить зовнішній ключ, що вказує на «одного»; при видаленні запису з головної таблиці поведінка пов'язаних рядків задається через `ON DELETE CASCADE`, `SET NULL` тощо.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняЗв'язок **«один до багатьох» (1:N)** - це **найпоширеніший** тип зв'язку між таблицями. Він означає, що **один запис** у першій таблиці може бути пов'язаний **з кількома записами** у другій, але кожен запис у другій таблиці належить **лише одному запису** в першій. ### Приклад **Один користувач -> багато замовлень** ```sql 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 | У Анни - **два замовлення**, у Івана - **одне**, але кожне замовлення може належати **лише одному користувачу**. ### Приклад запиту Щоб об'єднати дані й побачити всі замовлення з іменами клієнтів: ```sql 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 (один до багатьох)** з'єднує головну таблицю з безліччю залежних записів. Він використовується, коли **один об'єкт може мати кілька підпорядкованих**, і реалізується через **зовнішній ключ** у таблиці «багато».Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.