Это часто делается в нереляционных хранилищах данных с размерным моделированием - таблица измерений даты предоставляет ряд функций, которые позволяют вам легко быстро агрегировать факты по дополнительным столбцам, хранящимся в измерении даты, например, год, квартал и т. Д.Он часто содержит десятки столбцов, которые означают, что вам не нужно применять код, чтобы определить, является ли это рабочий день или выходной день, название дня недели или что-то еще.Это классический компромисс между временем и пространством, который хорошо окупается за данные в ограниченном диапазоне дат, составляющем пару сотен лет, как вы можете видеть в банке или бизнесе.Это нереально для произвольного диапазона дат в несколько сотен лет.
Обратите внимание, что некоторые системы РСУБД имеют более эффективный тип данных только для дат (SQL Server имеет такой же, как в SQL Server 2008).Точно так же часто PK в измерении даты представляет собой целое число в натуральной форме YYYYMMDD, которое занимает значительно меньше места, чем обычный столбец datetime.
Такая схема может иметь преимущества.У вас могут быть специальные зарезервированные измерения для определенных дат с очень специфической семантикой - -1 - неизвестно, -2 - недействительно, -3 - ожидание и т. Д., В то время как обычный столбец даты имеет возможность хранить действительную дату или NULL.
Я не думаю, что объединения обязательно являются аргументом против этого по соображениям производительности, в конце концов, у вас, вероятно, будет очень эффективная индексация по этому вопросу, и это приведет к поиску индекса.С другой стороны, типичная таблица измерений даты имеет много столбцов, и в сценарии OLTP большая часть этого вам редко требуется.
Если ваше приложение выполняет подробный анализ дат и создание отчетов, я бы рассмотрел измерение даты (или назовите это справочной таблицей, поскольку вы, скорее всего, не находитесь в сценарии измерений / хранилища данных).В противном случае я бы этого не сделал - большинству людей было бы неудобно с этим, и знакомство с методами пространственного моделирования не распространено среди многих (большинства?) Практиков OLTP, и они не увидят преимуществ, хотя их явно много.
Я вижу в вашем ответе на другой вопрос, что вам нужно регистрировать данные на минутной основе.Часто ортогональное измерение времени устанавливается аналогичным образом.Обычно это также очень эффективно, с естественным ключом вида HHMMSS или просто HHMM.Это значительно упрощает анализ диапазона по дням и с помощью таблицы времени, в частности, сегментов, особенно в тех случаях, когда такие сегменты, возможно, необходимо идентифицировать с помощью дополнительных атрибутов.
Опять же, SQL Server 2008 имеет отдельное время- только тип данных, поэтому простого разделения DATE и TIME в вашей таблице может быть более чем достаточно.