基于含自然键的源表填充维表与事实表:show_id存储疑问
关于
show_id在维度/事实表中归属的建议 判断show_id该放在哪里,核心看它对应的业务实体属性:
如果
show_id代表的是独立业务实体(比如一场演出、一档节目,有专属属性:如演出名称、举办时间、场地、类型等),那必须放到维度表中(可以单独建Dim_Show表,若指南里的Dim_info是通用维度表,也可合并进去,但更推荐单独建表避免维度表臃肿)。此时事实表只保留show_id作为外键,关联该维度表——这是星型/雪花模型的标准设计,目的是将维度属性抽离,让事实表专注存储度量值和关联键。如果
show_id只是事实记录的唯一标识(比如每条事实行对应一个唯一的show事件,且无任何额外业务属性),那可以直接作为事实表的主键或唯一标识列存在,无需放入维度表。但这种场景在实际业务中极少,因为大多数业务场景下“show”都会有对应的描述属性。完全不包含
show_id不可取:它是连接事实数据与具体业务场景的关键标识,去掉后无法追溯事实对应的是哪一场show,会导致数据失去业务意义。
学校指南里直接将show_id放入事实表的做法,大概率是教学场景下的简化设计(降低建模复杂度),但实际业务建模需贴合show_id的真实业务含义:先梳理源表中show_id对应的关联属性,若存在专属业务属性,就拆分到维度表;若仅作为事实的唯一标识,可暂时留在事实表。
内容的提问来源于stack exchange,提问作者Hoang Minh Quang FX15045
相关产品推荐
相关产品推荐

