KDT#5 使用代理键的日期维度
日期维度是用来描述事实表中与日期有关的属性的。它的粒度应该是每天一条记录。一个典型的日期维度表如下所示:
Date_Key(代理键,整型)
Date_Type(正常,不知道,未发生等)
SQL_Date_Stamp(Date_Type为正常时,否则该值为NULL)
Day_Number_in_Month(1…31)
Day_Number_in_Year(1…366)
Week_Number_in_year(1…53)
Month_Number_in_year(1…12)
Month_Name
Quarter_Name
Year_Desc
Work_Day
Month_End
…
还有一些起标识作用的列略。总之,将来有可能在报表或显示的表格中出现的日期描述都要尽可能建立进日期维度表。
在日期维度表中,关键字不应该使用任何有意义的字段,而应该使用代理键。如果设计成有意义的字段,例如‘20060526’这样的智能关键字(Smart Key),就给用户提供了只访问这个关键字而不访问其他字段也能使用的可能。如果其他日期相关描述是用户根据智能关键字生成的话,不同用户的生成方法和结果都很可能不一样,给应用和显示带来了很大的不一致。