Шта је нормализација?
sobes.tech АИ
Одговор од АИ
Нормализација података у контексту база података је процес организовања података ради смањења вишка и побољшања интегритета података. Ово се постиже делењем великих табела на мање и повезивањем њихових односа.
Главни циљеви:
- Уклањање дупликата података.
- Побољшање интегритета података (исключивање аномалија приликом уметања, ажурирања и брисања).
- Повећање ефикасности складиштења и упита (у одређеним случајевима).
Процес нормализације се заснива на принципима нормалних облика (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) приликом извршавања упита, што може смањити перформансе. Због тога се при дизајну базе података често тражи баланс између степена нормализације и перформанси. Денормализација је процес свесног кршења нормалних облика ради побољшања перформанси, обично додавањем вишка података.