Какво е нормализация в база данни?
sobes.tech AI
Отговор от AI
Нормализирането на база данни е процес на организиране на данните в релационна база данни с цел намаляване на излишъка (дублиране на данни) и подобряване на цялостността на данните. Това се постига чрез разделяне на големи таблици на по-малки с определяне на връзки между тях.
Основната цел на нормализирането:
- Намаляване на излишъка на данни: Избягване на повторение на една и съща информация на различни места.
- Подобряване на цялостността на данните: Осигуряване на точност и последователност на данните.
- Осигуряване на гъвкавост: Улесняване на промени и разширения на структурата на базата данни.
Нормализирането се дефинира чрез набор от правила, наречени нормални форми. Най-разпространените са първите три нормални форми:
-
Първа нормална форма (1NF):
- Всеки стълб в таблицата трябва да съдържа атомарни (неделими) стойности.
- Няма повтарящи се групи от колони.
- Всяка ред трябва да бъде уникална (чрез първичен ключ).
-
Втора нормална форма (2NF):
- Таблицата е в 1NF.
- Всички неключови атрибути (колони, които не са част от първичния ключ) напълно зависят от цялата първична ключова стойност (ако е съставен). Липсват частични зависимости.
-
Трета нормална форма (3NF):
- Таблицата е в 2NF.
- Няма транзитивни зависимости. Неключовите атрибути не зависят от други неключови атрибути.
Съществуват и по-високи нормални форми (BCNF, 4NF, 5NF, 6NF), но 3NF обикновено се счита за достатъчна за повечето практически цели.
Пример (опростен):
Първоначална не нормализирана таблица (заявка на клиент):
| ID на заявката | Име на клиента | Адрес на клиента | Продукти | Количество | Цена за единица |
|---|---|---|---|---|---|
| 101 | Иван | София | Лаптоп | 1 | 50000 |
| 101 | Иван | София | Мишка | 2 | 1000 |
| 102 | Мария | Пловдив | Клавиатура | 1 | 3000 |
След нормализиране (например, до 3NF):
Таблица Заявки:
| ID на заявката | ID на клиента | Дата на заявката |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Таблица Клиенти:
| ID на клиента | Име на клиента | Адрес на клиента |
|---|---|---|
| 1 | Иван | София |
| 2 | Мария | Пловдив |
Таблица Детайли на заявката:
| ID на детайла | ID на заявката | ID на продукта | Количество | Цена за единица |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Таблица Продукти:
| ID на продукта | Име на продукта |
|---|---|
| 10 | Лаптоп |
| 20 | Мишка |
| 30 | Клавиатура |
Денормализацията е обратният процес на нормализиране, който понякога се използва за подобряване на производителността при четене на данни чрез увеличаване на излишъка.