我有一个星型模式仓库(MS SQL Server,通过带有 OLAP 的 MS Report Builder 访问),它有很多微小的维度——我的意思是维度是由两列(Id 和 Description)构建的,其中有数百个从 Fact 链接表。
这提供了在没有实际计数的情况下显示所有项目的选项。非规范化表的描述是事实的一部分,因为这将提供更好的能力来通过 SQL 和 OLAP 方法查询数据。
这种包含许多一级维度的结构是否正常且良好的做法?老实说,唯一一次我希望显示空白是针对诸如时间或日期维度之类的东西,但是由于这些可以从数据中强制为您提供图表和表格中的空白,因此它似乎并没有那么重要.
关于这种结构是好是坏的任何看法——我想尝试改变它,但如果我与最佳实践脱节,我会很乐意改变我的心态。
结构示例(这只是一个事实表的一部分)
事实表 - (属性)
F_PROPERTY.PROPERTY_ID (Key for table)
F_PROPERTY.CYCLE_FRAME_TYPE_ID
F_PROPERTY.CYCLE_GEARS_NUMBER_ID
F_PROPERTY.CYCLE_GEARS_TYPE_ID
F_PROPERTY.CYCLE_GENDER_ID
F_PROPERTY.CYCLE_MUD_GUARDS_ID
F_PROPERTY.CYCLE_MUD_GUARDS_COLOUR_ID
维度表 -
D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_ID
D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_ID
D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_ID
D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_ID
D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_DESC
D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_ID
D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_DESC
所以换个说法 - 维度真的应该是事实的单独表格,还是将描述作为事实的一部分更好?我希望报告快速而简单,并且在字段中没有值的情况下删除记录最少。