В SQL существует несколько нормальных форм, которые используются для структурирования баз данных и уменьшения избыточности и аномалий. Наиболее часто упоминаются:
- 1NF ( Первая нормальная форма): Атомарность данных. Каждый столбец должен содержать атомарные значения, то есть не должно быть повторяющихся групп столбцов или массивов внутри одной ячейки.
- 2NF (Вторая нормальная форма): Достигается при выполнении 1NF и отсутствии частичных зависимостей. Неключевые атрибуты должны полностью зависеть от всего составного первичного ключа.
- 3NF (Третья нормальная форма): Достигается при выполнении 2NF и отсутствии транзитивных зависимостей. Неключевые атрибуты не должны зависеть от других неключевых атрибутов.
- BCNF (Нормальная форма Бойса-Кодда): Более строгая версия 3NF. Каждая нетривиальная зависимость X -> Y требует, чтобы X был суперключом.
- 4NF (Четвертая нормальная форма): Достигается при выполнении BCNF и отсутствии многозначных зависимостей.
- 5NF (Пятая нормальная форма, или Проекционно-соединительная нормальная форма): Достигается при выполнении 4NF и невозможности декомпозиции без потери информации. Используется для устранения зависимостей соединения.
- DKNF (Доменно-ключевая нормальная форма): Используется для устранения всех аномалий путем привязки всех ограничений к доменам или ключам.
На практике чаще всего используются 1NF, 2NF и 3NF. BCNF также достаточно распространена. Более высокие нормальные формы (4NF, 5NF, DKNF) применяются в более сложных случаях.