Нормализация баз данных
В одной таблице «запихнули» студента, группу, телефон старосты и три оценки. Вроде работает. Потом старосте поменяли номер - и править надо в десяти строках. Нормализация как раз про то, чтобы такие грабли не росли.
Нормализация - приведение структуры реляционной базы к виду, где уменьшено дублирование данных и снижены аномалии вставки, обновления и удаления.
База про таблицы и ключи - здесь, запросы - в SQL.
Какие аномалии лечит
- Обновления: одно и то же значение размазано по строкам.
- Вставки: нельзя добавить группу без студента.
- Удаления: удалили последнего студента - пропали сведения о группе.
Идея нормальных форм (школьный минимум)
На практике для курса достаточно: атомарные значения в ячейках; каждая строка про одну сущность; повторяющиеся группы вынести в отдельные таблицы; связь через ключи.
1НФ - в ячейке одно значение, не список через запятую. Дальше - убрать частичные и транзитивные зависимости от ключа (формулировки зависят от учебника).
Пример на пальцах
Было: строка «Иванов | 201 | 8900… | информатика 5 | физика 4». Стало: таблица студентов, таблица групп, таблица оценок. Телефон группы хранится один раз.
Когда останавливаются раньше
Иногда оставляют управляемую избыточность ради скорости отчётов. В школьном ответе сначала покажите нормализованную схему, оговорку про производительность добавляйте, если спрашивают.
Ошибки
- Путают нормализацию с резервным копированием.
- Считают, что больше таблиц всегда лучше без меры.
- Забывают ключи связей.
Шпаргалка
- Нормализация уменьшает дубли и аномалии.
- Одна сущность - одна таблица; связь через ключи.
- 1НФ: атомарные значения.
- Полная идеальная нормализация на практике бывает компромиссом.