Ответ
Нормальные формы (НФ) — это набор правил проектирования схемы БД, направленных на устранение избыточности данных и аномалий при операциях вставки, обновления и удаления (аномалии модификации).
Основные нормальные формы:
-
Первая нормальная форма (1НФ):
- Все значения атрибутов атомарны (неделимы).
- В таблице нет повторяющихся групп строк или столбцов.
-- НЕ 1НФ: столбец 'phones' содержит составное значение CREATE TABLE contacts (id INT, name VARCHAR(100), phones VARCHAR(255)); -- '123, 456'
-- 1НФ: каждый телефон в отдельной строке CREATE TABLE contacts (id INT, name VARCHAR(100), phone VARCHAR(20));
-
Вторая нормальная форма (2НФ):
- Таблица находится в 1НФ.
- Каждый неключевой атрибут полностью зависит от всего составного первичного ключа (нет частичных зависимостей).
-- НЕ 2НФ: 'supplier_name' зависит только от 'supplier_id', а не от всего ключа (order_id, supplier_id) CREATE TABLE order_supplies (order_id INT, supplier_id INT, supplier_name VARCHAR(100), item VARCHAR(100)); -- Решение: вынести supplier_name в отдельную таблицу suppliers.
-
Третья нормальная форма (3НФ):
- Таблица находится в 2НФ.
- Нет транзитивных зависимостей: неключевые атрибуты не зависят от других неключевых атрибутов.
-- НЕ 3НФ: 'city_population' зависит от 'city', а не напрямую от 'employee_id' CREATE TABLE employees (employee_id INT, name VARCHAR(100), city VARCHAR(100), city_population INT); -- Решение: вынести city и city_population в отдельную таблицу cities.
Цель нормализации: повысить целостность данных, упростить поддержку и избежать противоречий. Денормализация иногда применяется осознанно для повышения производительности чтения в OLAP-системах.