Что такое нормализация БД

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

Ответ

Нормализация — это процесс организации данных в базе данных для минимизации избыточности и предотвращения аномалий (вставки, обновления, удаления). Цель — сделать хранение данных эффективным, а их поддержку — простой и надежной.


Основные нормальные формы (шаги нормализации):

  1. Первая нормальная форма (1NF)
    • Требование: Все значения в таблице должны быть атомарными (неделимыми). Не должно быть списков или повторяющихся групп.
    • Пример: Столбец "Товары" со значением "Книга, Ручка" нарушает 1NF. Нужно создать отдельные строки для каждого товара.
  2. Вторая нормальная форма (2NF)
    • Требование: Таблица должна быть в 1NF, и каждый неключевой атрибут должен полностью зависеть от всего первичного ключа (актуально для таблиц с составным ключом).
    • Пример: В таблице Заказ-Товар (ключ: id_заказа, id_товара) цена товара зависит только от id_товара. Цену нужно вынести в отдельную таблицу Товары.
  3. Третья нормальная форма (3NF)
    • Требование: Таблица должна быть в 2NF, и неключевые атрибуты не должны зависеть от других неключевых атрибутов (должны зависеть только от первичного ключа).
    • Пример: В таблице Клиенты есть Город и Почтовый индекс, где индекс зависит от города. Город и индекс нужно вынести в отдельную таблицу Города.

Зачем это нужно? (Преимущества)

  • Устранение избыточности: Данные хранятся в одном месте, что экономит место и обеспечивает согласованность.

  • Предотвращение аномалий:

    • Вставки: Невозможность добавить данные без наличия связанных (например, нельзя добавить товар, не создав заказ).
    • Обновления: Необходимость изменять одни и те же данные в нескольких местах.
    • Удаления: Потеря информации при удалении связанной записи.
  • Упрощение поддержки и обеспечения целостности данных.

    • *

Важный нюанс на практике

Существуют и более строгие формы (BCNF, 4NF, 5NF), но на практике часто останавливаются на 3NF. Чрезмерная нормализация ведет к сильной фрагментации данных, сложным запросам с большим количеством JOIN и может снизить производительность.

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

Итог: Нормализация — это фундаментальный метод проектирования БД, который обеспечивает логичную, непротиворечивую и эффективную структуру для хранения данных.

Видео-ответы