数据仓库中层次结构的建模与处理
在数据仓库的构建和管理中,处理层次结构数据是一项关键任务。从表结构的设计到客户层次结构的存储与查询,都需要精心规划和处理,以确保数据的准确性和查询的高效性。
1. 表结构设计
传统观念认为每个实体都应有自己独立的表,但这种方式在实现桥接表和汇总报表时并不实际。以销售计划表为例,它需要为每个可能处于计划层级的实体表设置外键。在这种结构下,通常只有一个键会被填充,其他键则为空。若桥接表模仿此结构,就需要一个大型的联合查询来逐层级提取和组合计划与销售数据。
解决方案是将层次实体与产品合并到同一个表中。层次结构和SKU(库存保有单位)共享相同的代理主键,以确保唯一性。同时,表的业务键会扩展,包含行类型代码,用于区分SKU、产品组和品牌,这样行就可以被唯一识别,且业务键值只需在同一行类型内保持唯一。
当实体以这种方式组合时,识别跨实体类型的公共属性很重要。主键、行类型和业务键是适用于所有行的属性,此外,至少应使用一个描述性文本列,以便任何查询都能检索业务键的描述,而不受行类型的影响。
解决这两个问题后,构建桥接结构就变得简单,只需为SKU的每个可能父级创建桥接行对。在产品层次结构的情况下,每个SKU在该表中需要五行,分别代表部门 - SKU、品牌 - SKU、产品组 - SKU、标准产品 - SKU和SKU - SKU关系。最后一种关系通常称为标识关系,用于处理在SKU级别制定计划的情况,使SKU级别的计划能与SKU级别的销售数据关联。
2. 桥接表的更新
桥接表除了包含父子外键,还应包含生效日期和过期日期,以维护关系的历史视角。此外,应提供一个布尔(是/否)列,用于简化隔离
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



