Расскажи про свой опыт работы с нормализацией

«Расскажи про свой опыт работы с нормализацией» — вопрос из категории Базы данных, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нормализация — процесс организации данных в БД для минимизации избыточности и аномалий. Работал с формами 1NF-3NF, иногда доходил до BCNF.

Пример:
Таблица Orders с дублированием клиентских данных:

-- Денормализованная версия (проблемы: избыточность, UPDATE-аномалии)
CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_name VARCHAR(100),  -- дублируется для каждого заказа
    customer_phone VARCHAR(20)   -- дублируется
);

-- Нормализованная версия (3NF)  
CREATE TABLE Customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100),
    phone VARCHAR(20)
);

CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT REFERENCES Customers(customer_id)  -- связь по FK
);

Плюсы:

  • Устранение дублирования
  • Целостность данных
  • Упрощение операций UPDATE

Компромиссы:
Иногда допускаю контролируемую денормализацию для отчетов или производительности.