Я хотел бы высказать другое мнение. ;)
Отвечаю Вам, т.к. у меня там есть к Вам вопрос, но обращаюсь и к
@Sardorkhuja> Тут всегда баланс надо искать. Оптимизатор СУБД в реальности может эффективно работать при джойнах менее 5-6 таблиц.
Может быть, это и так в какой-то СУБД, но к PostgreSQL это
не относится.
> Если нормализация делает их больше, надо денормализовывать
Нет, не надо. Потому что это, как минимум, преждевременная оптимизация. ;)
> Я думал, нормальные формы — как золотое правило, от которого нельзя отходить
Да, это "золотое правило". Понимаете, как говорил Дейт, нормальные формы — это формализованный здравый смысл (не помню точную цитату). Поэтому, отступая от них, Вы идёте против здравого смысла — в "награду" получая аномалии в данных и проблемы с написанием запросов.
> А денормализацию лучше делать с помошью вьювов и мат.вьювов.
Денормализацию лучше не делать вообще. ;)
> Факториал 6 - это уже 620 вариантов, которые
Любой современный процессор переберёт менее, чем за микросекунду. Мы же не 1980-х, в самом деле...
> В PG я не знаю лимит.
По умолчанию — 8 from items / JOINs. И это немного на современном железе, т.е. можно смело поднимать до 10-12.
> В Oracle стоит перебор 1000 варинатов планов.
Что, серьёзно?! Да это же был бы просто отвратительный оптимизатор!
Послушайте, я просто не могу поверить — у Вас есть ссылка?
> Так что, чистая 3НФ нормализация - это на бумаге хорошо.
Это
в принципе хорошо. В жизни — особенно, если данные Вам дороги.
> В жизни приходится приходить к компромису, и проводить денормализацию местами...
Хмм... зависит от того, что именно тут понимается под "денормализацией".