Какво знаете за нормалните форми в базите данни?
sobes.tech AI
Отговор от AI
Нормалните форми (НФ) са набор от правила и препоръки за проектиране на структурата на релационна база данни, насочени към минимизиране на излишъка от данни и предотвратяване на аномалии при вмъкване, актуализиране и изтриване.
Основни нормални форми:
-
Първа нормална форма (1НФ):
- Всеки атрибут (колона) трябва да съдържа атомарни (неделими) стойности.
- Липса на повтарящи се групи от атрибути.
- Всяка ред трябва да бъде уникална (наличие на първичен ключ).
-
Втора нормална форма (2НФ):
- В 1НФ.
- Всеки неключов атрибут трябва да зависи изцяло от цялата първична ключ (при съставен ключ).
-
Трета нормална форма (3НФ):
- В 2НФ.
- Липса на транзитивни зависимости на неключови атрибути от първичния ключ (неключов атрибут не трябва да зависи от друг неключов атрибут).
-
Форма на Бойс-Код (ФБК/BCNF):
- По-строга версия на 3НФ.
- Всяка не-тривиална зависимост $X \to Y$ трябва да има $X$ като суперключ.
-
Четвърта нормална форма (4НФ):
- В ФБК.
- Липса на мултистойностни зависимости.
-
Пета нормална форма (5НФ):
- В 4НФ.
- Липса на зависимости на съединение.
Цели на нормализацията:
- Намаляване на излишъка от данни.
- Предотвратяване на аномалии (вмъкване, актуализиране, изтриване).
- Осигуряване на цялостност на данните.
- Упростяване на структурата на базата данни.
Пример:
Таблица с излишък (не в 1НФ):
| ЗаказID | Продукт | Цена |
|---|---|---|
| 1 | Лаптоп, Мишка | 1000, 20 |
| 2 | Клавиатура | 50 |
Нормализирана таблица (в 1НФ и нагоре):
Таблица "Поръчки":
| ЗаказID |
|---|
| 1 |
| 2 |
Таблица "Поръчкови позиции":
| ПозицияID | ЗаказID | Продукт | Цена |
|---|---|---|---|
| 1 | 1 | Лаптоп | 1000 |
| 2 | 1 | Мишка | 20 |
| 3 | 2 | Клавиатура | 50 |
Нормализацията е важна стъпка в проектирането, но прекалената нормализация може да доведе до увеличаване на броя на съединенията при заявки, което може да повлияе негативно на производителността. Изборът на оптимално ниво на нормализация зависи от конкретните изисквания и компромиси. Понякога се използва денормализация за оптимизация на производителността в определени сценарии, съзнателно нарушавайки правилата на нормалните форми.