Ответ
Нормализация — это процесс проектирования схемы реляционной базы данных для минимизации избыточности данных и предотвращения аномалий при операциях вставки, обновления и удаления (аномалии вставки, обновления, удаления).
Основная цель — обеспечить целостность данных и эффективную организацию. Процесс следует через серию нормальных форм (НФ):
Основные нормальные формы:
-
Первая нормальная форма (1NF)
- Все значения атрибутов атомарны (неделимы).
- В таблице нет повторяющихся групп или массивов.
-- Ненормализованная таблица (нарушает 1NF) CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerName VARCHAR(100), Products VARCHAR(255) -- Список товаров через запятую: 'Монитор,Клавиатура,Мышь' );-- Приведение к 1NF CREATE TABLE Orders ( OrderID INT, CustomerName VARCHAR(100) ); CREATE TABLE OrderItems ( OrderItemID INT PRIMARY KEY, OrderID INT, ProductName VARCHAR(100) -- Один товар на строку );
-
Вторая нормальная форма (2NF)
- Таблица должна находиться в 1NF.
- Все неключевые атрибуты должны полностью зависеть от всего первичного ключа (устраняются частичные зависимости). Это критично для таблиц с составными первичными ключами.
- Пример нарушения: В таблице
OrderDetails(OrderID, ProductID, ProductName, Quantity)атрибутProductNameзависит только отProductID, а не от всей пары(OrderID, ProductID).
-
Третья нормальная форма (3NF)
- Таблица должна находиться в 2NF.
- Нет транзитивных зависимостей: неключевые атрибуты не должны зависеть от других неключевых атрибутов, а только от первичного ключа.
- Пример нарушения: В таблице
Employees(EmpID, DeptID, DeptLocation)атрибутDeptLocationзависит отDeptID, который сам не является ключом.
Практический баланс
Полная нормализация иногда приводит к необходимости выполнения множества JOIN-операций, что может снижать производительность сложных запросов. Поэтому на практике часто применяют контролируемую денормализацию — сознательное отступление от нормальных форм для оптимизации чтения данных, особенно в системах аналитики (OLAP) или при работе с кэшами.
Видео-ответы
▶
▶
▶
▶
▶
▶