Это может выглядеть как угодно. Большинство размеров имеют «отображаемое имя» какое-то, так что ваши размеры могут выглядеть примерно так:
create table dbo.DimDate (DateID int, DateValue date, DisplayDate nvarchar(20))
go
-- this is an unknown date; 1753-01-01 is only there because we need some valid date value
insert into dbo.DimDate values (1, '1753-01-01', 'Unknown')
go
-- this is the real date 1 Jan 1753
insert into dbo.DimDate values (2, '1753-01-01', '01 Jan 1753')
go
create table dbo.DimTime (TimeID int, TimeValue time, DisplayTime nvarchar(20))
go
-- this is an unknown time; 00:00 is only there because we need some valid time value
insert into dbo.DimTime values (1, '00:00', 'Unknown')
go
-- this is the real time value for midnight
insert into dbo.DimTime values (2, '00:00', 'Midnight')
go
Конечно, это предполагает, что ваш инструмент и пользователи отчетов использовать столбцы DisplayDate
и DisplayTime
для фильтрации вместо DateValue
и TimeValue
, но это просто вопрос обучения и стандартов, и любое решение, которое вы принимаете, должно быть понято в любом случае.
Существуют и другие альтернативы, такие как столбец флагов для неизвестных значений или соглашение о том, что отрицательный TimeID
указывает неизвестное значение. Но, на мой взгляд, они менее очевидны и сложнее поддерживать, чем явное значение строки.