Друга нормальна форма (2НФ) — це одна з форм нормалізації бази даних, яка покликана усунути функціональні залежності, що не є повними. Важливо розуміти, що перед тим як перейти до 2НФ, ваша таблиця повинна вже відповідати першій нормальній формі (1НФ), що означає, що всі значення в таблиці є атомарними (неділеними).
Ось основні вимоги до другої нормальної форми:
- Список значень повинен бути в 1НФ: Всі атрибути таблиці повинні містити атомарні значення.
- Всі неключові атрибути повинні бути повністю функціонально залежними від первинного ключа: Це означає, що якщо атрибут не є частиною первинного ключа, то він повинен бути залежним від всього первинного ключа, а не лише від його частини. Якщо використовується складений (композитний) ключ, то всі неключові атрибути повинні залежати від усіх атрибутів цього ключа.
Припустимо, у нас є таблиця Замовлення
, яка має такий вигляд:
ID_Замовлення | Клієнт | Товар | Кількість | Ціна |
---|---|---|---|---|
1 | А | Apple | 10 | 1.00 |
2 | Б | Banana | 5 | 0.50 |
3 | А | Cherry | 20 | 1.50 |
У даній таблиці ми можемо помітити, що Ціна
залежить не тільки від ID_Замовлення
, але й від Товару
. Це означає, що таблиця не відповідає 2НФ.
Для того, щоб привести таблицю до другої нормальної форми, ми можемо розділити її на дві таблиці:
- Таблиця Замовлень:
ID_Замовлення | Клієнт | Товар | Кількість |
---|---|---|---|
1 | А | Apple | 10 |
2 | Б | Banana | 5 |
3 | А | Cherry | 20 |
- Таблиця Цін:
Товар | Ціна |
---|---|
Apple | 1.00 |
Banana | 0.50 |
Cherry | 1.50 |
Таким чином, ми виконали умови 2НФ, оскільки всі неключові атрибути (Клієнт, Кількість) тепер залежать від повного ключа (ID_Замовлення
), а атрибут Ціна
тепер розміщено в іншій таблиці, де він залежить від Товару
.