Розкажіть про зв'язок 1:1 (один до одного)
Зв'язок «один до одного» (1:1) - це тип відношення між таблицями, за якого кожному запису в одній таблиці відповідає не більше одного запису в іншій.
Такий зв'язок створюють рідко, але він буває корисний, коли треба розділити дані однієї сутності на два логічні блоки.
Приклад
Припустимо, у нас є таблиця users і таблиця passports:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE passports (
id INT PRIMARY KEY,
user_id INT UNIQUE,
passport_number VARCHAR(20),
FOREIGN KEY (user_id) REFERENCES users(id)
);Тут:
users.id- первинний ключ у таблиці користувачів,passports.user_id- зовнішній ключ, що посилається наusers.idі має обмеженняUNIQUE.
Завдяки UNIQUE, в одного користувача може бути лише один паспорт,
а в одного паспорта - лише один власник.
Як це працює
| Таблиця users | Таблиця passports |
|---|---|
| id = 1, name = 'Анна' | user_id = 1, passport_number = 'AB123456' |
| id = 2, name = 'Іван' | user_id = 2, passport_number = 'CD987654' |
Кожен рядок users може бути пов'язаний лише з одним рядком passports.
Коли застосовують 1:1
- Для розділення приватних даних. Наприклад, персональні дані (паспорт, ІПН) виносять в окрему таблицю з обмеженим доступом.
- Для оптимізації.
Щоб не зберігати забагато полів в одній таблиці - розділяють за змістом (наприклад,
usersіuser_profiles). - Для рідкісних розширень.
Коли додаткова інформація потрібна не всім записам. Наприклад, лише в частини співробітників є службова машина - таблиця
carsбуде пов'язана зemployeesза 1:1.
Приклад запиту
SELECT users.name, passports.passport_number
FROM users
JOIN passports ON users.id = passports.user_id;Отримуємо ім'я користувача та його паспорт - один до одного.
Підсумок: Зв'язок 1:1 - це строга пара «один запис <-> один запис». Він забезпечує унікальність зв'язку між таблицями, застосовується для розмежування, безпеки й структурування даних.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.