Нормалізація та нормальні форми (1NF, 2NF, 3NF) – просте пояснення
Коротко: Нормалізація розбиває таблиці так, щоб кожна інформація зберігалася лише один раз; це запобігає надлишковості та помилкам під час зміни, вставки й видалення.
Докладніше: Погано спроєктована таблиця зберігає ті самі дані кілька разів. Якщо значення змінюється, його потрібно виправити скрізь, інакше виникають суперечності (аномалії). Нормальні форми — правила, що запобігають цьому. Це класика іспиту IHK.
Подробиці
Приклад ненормалізованої таблиці
Order(orderno, date, customer, customercity, item1, price1, item2, price2)
Проблеми: кілька позицій у стовпцях (скільки їх?), дані клієнта повторюються в кожному замовленні, ціни дублюються. Якщо клієнт змінює місто, потрібно змінити всі рядки.
Перша нормальна форма (1NF)
Кожна клітинка містить рівно одне значення (атомарне), немає повторюваних груп (item1, item2), є первинний ключ.
→ Стовпці позицій стають кількома рядками: OrderLine(orderno, lineno, item, price, quantity).
Друга нормальна форма (2NF)
Додатково: кожен неключовий атрибут залежить від усього ключа, а не лише від його частини. Стосується таблиць зі складеним ключем (orderno + item): якщо price залежить лише від item, він належить окремій таблиці Item(itemno, description, price).
Третя нормальна форма (3NF)
Додатково: немає транзитивних залежностей: неключові атрибути залежать безпосередньо від ключа, а не через інший неключовий атрибут. Якщо customercity залежить від customer, а customer від orderno, дані клієнта належать окремій таблиці Customer(customerno, name, city); Order посилається на неї через зовнішній ключ.
Мнемоніка: «Атрибути залежать від ключа, від усього ключа і ні від чого, крім ключа».
Результат і практика
Customer(customerno, name, city)
Order(orderno, date, customerno→Customer)
Item(itemno, description, price)
OrderLine(orderno→Order, lineno, itemno→Item, quantity)
Переваги: немає надлишковості, узгоджені зміни, менше сховища. Недолік: більше з’єднань. Тому іноді застосовують свідому денормалізацію (продуктивність, аналіз, сховище даних). Подальші нормальні форми (BCNF, 4NF, 5NF) розглядають особливі випадки. Хороші моделі даних виходять за допомогою ER-моделі, яку потім перетворюють на таблиці.
Див. також: ER-модель