📌 Какие существуют нормальные формы в SQL?



💬 Спрашивают в 19 % собеседований



В реляционных базах данных нормализация — это процесс организации данных для минимизации избыточности и избегания аномалий при внесении данных. Нормальные формы (NF) — это набор правил, которые помогают в нормализации баз данных. Основные нормальные формы включают:



1️⃣ Первая нормальная форма (1NF)



Таблица находится в 1NF, если:



Все столбцы содержат атомарные значения, то есть каждое значение в столбце неделимо.



Все строки уникальны, нет повторяющихся строк.



Пример:

Если у вас есть таблица с заказами, и каждый заказ может содержать несколько продуктов, вместо хранения всех продуктов в одном столбце, нужно разбить их на отдельные строки.



2️⃣ Вторая нормальная форма (2NF)



Таблица находится во 2NF, если:



Она находится в 1NF.



Все неключевые столбцы полностью зависят от всего первичного ключа, а не от его части.



Пример:

Если в таблице "Заказы" у вас есть составной ключ (OrderID, ProductID), то столбцы, зависящие только от OrderID (например, OrderDate), должны быть вынесены в отдельную таблицу.



3️⃣ Третья нормальная форма (3NF)



Таблица находится в 3NF, если:



Она находится во 2NF.



Все неключевые столбцы зависят только от первичного ключа, а не от других неключевых столбцов.



Пример:

Если в таблице "Сотрудники" у вас есть столбцы EmployeeID, DepartmentID и DepartmentName, нужно вынести DepartmentName в отдельную таблицу "Департаменты", чтобы избежать зависимости между неключевыми столбцами.



4️⃣ Бойс-Кодд нормальная форма (BCNF)



Таблица находится в BCNF, если:



Она находится в 3NF.



Для каждой функциональной зависимости X -> Y, X является суперключом.



Пример:

Если в таблице "Курс" есть зависимости (Professor, Course) -> Room и Room -> Capacity, необходимо реструктурировать таблицу так, чтобы не было зависимостей, где детерминанты не являются суперключами.



5️⃣ Четвертая нормальная форма (4NF)



Таблица находится в 4NF, если:



Она находится в BCNF.



В ней нет многозначных зависимостей (Multivalued Dependencies).



Пример:

Если студент может записаться на несколько курсов и участвовать в нескольких клубах, то эти зависимости должны быть вынесены в отдельные таблицы.



6️⃣ Пятая нормальная форма (5NF)



Таблица находится в 5NF, если:



Она находится в 4NF.



В ней нет соединительных зависимостей (Join Dependencies), которые нельзя разделить без потери данных.



Пример:

Если у вас есть сложные зависимости между несколькими таблицами, то нужно убедиться, что все соединения этих таблиц могут быть разложены обратно без потери информации.



7️⃣ Доменино-ключевая нормальная форма (DKNF)



Таблица находится в DKNF, если:



Все ограничения и зависимости выражаются только через домены и ключи таблицы, и отсутствуют аномалии при вставке, обновлении или удалении данных.



🤔 Заключение



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



🤔 Краткий ответ



Существуют следующие нормальные формы в SQL:



Первая нормальная форма (1NF): атомарность данных.



Вторая нормальная форма (2NF): полная функциональная зависимость от первичного ключа.



Третья нормальная форма (3NF): отсутствие транзитивных зависимостей.



Бойс-Кодд нормальная форма (BCNF): все детерминанты — суперключи.



Четвертая нормальная форма (4NF): отсутствие многозначных зависимостей.



Пятая нормальная форма (5NF): отсутствие соединительных зависимостей.



Доменино-ключевая нормальная форма (DKNF): все ограничения выражаются через домены и ключи.



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых