Задать вопрос
@MoonMaster
Программист и этим все сказано

Нормализация БД. Зло или добро?

Добрый день!

Недавно смотрел интересную презентацию человека, который реализовал свой стартап до полноценного проекта. В этом проекте он использовал БД Postgres. Все конечно было интересно, но он сказал одну вещь, которая меня шокировала. Он сказал так: "Нормализация это зло! В некоторых случаях (этот процент небольшой) и при необходимости используйте нормализацию БД." Я никогда еще не делал проекты связанные с запросом данных в БД или вообще работой с БД, но проходил теорию по данному вопросу (в университете). И у меня возник вполне резонный вопрос: действительно ли нормализация БД является не лучшим союзником в реализации своего проекта (программы)?
  • Вопрос задан
  • 3136 просмотров
Подписаться 10 Оценить 5 комментариев
Ответ пользователя Максим Корюков К ответам на вопрос (8)
@maxkoryukov
Родился, тусуюсь
Давайте разбираться.

В нормализованной бд (в общем случае) выборка по произвольным параметрам будет работать пошустрее. Проще добавлять и изменять данные.
Ненормализованная может дать очень большой выигрыш для четко очерченного круга запросов по выборке данных (не нужны лишние джойны, уже готова сортировка и прочее). Но если вам понадобится что-то нестандартное - готовьтесь к любому исходу. Скорей всего запрос будет работать очень медленно.

В нормализованной БД, запрос до определенной степени можно оптимизировать. Я видел, как хранимая процедура (очень большая) ускорялась с 2 часов до 5 минут с помощью подходящих индексов и правильных джонов, но оптимизацию проводил SQL-кунг-фу сэнсэй, он знал, что покрутить.
В денормализованной - вы так уже не сделаете, придется менять структуру данных.

Я бы старался нормализовать данные, но не до академического фанатизма, а до той степени, когда таблицы не вызывают отвращения ни у меня, ни у оптимизатора запросов используемой СУБД.
Ответ написан
Комментировать