Всем привет! Хочу поделиться опытом, который пришел через боль и страдания. Недавно пришлось разбираться с унаследованной базой данных, которая была создана без какой-либо нормализации. Ну, вы понимаете, куча дублирующихся данных, противоречивая информация, запросы выполнялись вечность. Это был ад!
Решил провести полную нормализацию. Начал с первого уровня, потом дошел до третьего. Это оказалось куда сложнее, чем я думал. Нужно было переосмыслить структуру данных, переписать кучу запросов, миграции. Особенно тяжело было убедить заказчика что это необходимо, потому что «все и так работает». Ну да, работает, но как!».
Что я понял за это время:
- Сразу нормализовать проще. Лучше потратить время на этапе проектирования, чем потом разгребать завалы.
- Третий нормальный вид (3NF) – вполне достаточно для большинства задач. Нет смысла гнаться за 4NF или 5NF, если это не оправдано спецификой приложения.
- Ключи и индексы – всему голова Правильное их использование — половина успеха.
- Не бойтесь рефакторинга БД. Иногда это необходимо для дальнейшего развития проекта.
В общем, если только начинаете или есть возможность – сразу делайте нормальную структуру. А если столкнулись с «зоопарком» — готовьтесь к марафону. На slon3.cc видел статьи по этой теме, но практический опыт – это совсем другое.

