Sobes.tech
Middle

Какво знаете за нормалните форми в базите данни?

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

Нормализацията е важна стъпка в проектирането, но прекалената нормализация може да доведе до увеличаване на броя на съединенията при заявки, което може да повлияе негативно на производителността. Изборът на оптимално ниво на нормализация зависи от конкретните изисквания и компромиси. Понякога се използва денормализация за оптимизация на производителността в определени сценарии, съзнателно нарушавайки правилата на нормалните форми.