Не денормализовать.
Создайте свои таблицы в соответствии с простыми и надежными принципами проектирования, которые облегчат внедрение остальной части вашей системы. Легко создавать, заполнять, использовать и администрировать базу данных. Легко и быстро выполнять запросы и обновления против. Легко пересматривать и расширять дизайн стола, когда этого требует ситуация, и нет необходимости делать это по легким и временным причинам.
Одним из принципов проектирования является нормализация. Нормализация приводит к тому, что таблицы легко и быстро обновляются (включая вставки и удаления). Нормализация устраняет аномалии обновления и устраняет возможность базы данных, которая противоречит самой себе. Это предотвращает множество ошибок, делая их невозможными. Это также предотвращает множество узких мест обновления, делая их ненужными. Это хорошо.
Существуют и другие наборы принципов проектирования. Они приводят к разработке таблиц, которые не полностью нормализованы. Но это не «денормализация». Это просто другой дизайн, несколько несовместимый с нормализацией.
Одним из наборов принципов проектирования, которые приводят к радикально отличному дизайну от нормализации, является проект схемы звезды. Звездная схема очень быстро для запросов. Даже крупномасштабные объединения и агрегации могут быть выполнены в разумные сроки, при условии хорошей СУБД, хорошего физического проектирования и достаточного количества оборудования для выполнения работы. Как и следовало ожидать, звездообразная схема страдает аномалиями обновления. Вы должны программировать вокруг этих аномалий, когда вы поддерживаете базу данных в актуальном состоянии. Как правило, вам потребуется строго контролируемый и тщательно выстроенный процесс ETL, который обновляет схему типа «звезда» из других (возможно, нормализованных) источников данных.
Использование данных, хранящихся в схеме типа "звезда", чрезвычайно просто. Это так просто, что, используя какой-то OLAP и механизм отчетов, вы можете получить всю необходимую информацию без написания кода и без чрезмерного снижения производительности.
Требуется хороший и несколько глубокий анализ данных, чтобы разработать хорошую нормализованную схему. Ошибки и упущения в анализе данных могут привести к необнаруженным функциональным зависимостям. Эти необнаруженные FD приведут к невольным отклонениям от нормализации.
Также требуется хороший и несколько глубокий анализ данных, чтобы спроектировать и построить хорошую звездную схему. Ошибки и пропуски в анализе данных могут привести к неудачному выбору размеров и степени детализации. Это сделает ETL практически невозможным для создания и / или сделает пропускную способность звезды неадекватной возникающим потребностям.
Хороший и несколько глубокий анализ данных не должен быть оправданием для паралича анализа. Анализ должен быть правильным и достаточно полным за короткое время. Короче для небольших проектов. Проектирование и реализация должны выдерживать некоторые поздние добавления и исправления к анализу данных и требованиям, но не постоянный поток изменений требований.
Этот ответ расширяет ваш первоначальный вопрос, но я думаю, что он уместен для разработчика базы данных.