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