> Цель по струтуре базы сделать ее максимально ненуждающейся в джоинах
Почему поставлена такая цель? Может нужно технические вопросы пересмотреть? Отсутствие нужды в джоинах ведет к появлению избыточности, как раз таки обычно пытаются добиться обратного - минимума избыточности за счет использования джоинов. Хайлоад конечно выдвигает особенные требования, поэтому я и интересуюсь, почему было поставлено такое условие.
> достижение 5-ой нормальной формы помимо того, что практически невозможно
насчет невозможности поспорил бы. Скорее - оно редко целесообразно, 3NF обычно вполне достаточно. Но есть и исключения (темпоральные данные например). Насчет производительности тоже не соглашусь - производительность гораздо больше формируют правильно/криво построенные индексы и правильные/кривые запросы. Лучше 15 джоинов в запросе, использующем индексы, чем один LIKE '%str%' без полнотекстовой индексации. Современные СУБД умеют в кэширование индексов в памяти, а prepared statements позволяют не парсить один и тот же запрос миллион раз.
А вообще, поймите одно правило: всегда есть проектирование сначала на бумаге, а потом уже в реале. Вы должны нормализовать прежде всего для себя, чтобы понимать, какие зависимости у вас в данных есть. Когда вы это все увидите, денормализовать всегда сможете. Ваши N итераций - это M+K, где M - это итерации по нормализации, K - обратный процесс, когда вы сознательно понижаете нормальную форму ваших данных. Если вы будете пропускать мимо глаз функциональные зависимости, ваши данные быстро превратятся в персональный адъ.
И наконец, если вы такое спрашиваете - уверены, что потянете highload в принципе?