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