我在一张表中有一个包含材料和产品详细信息的主数据。我正在创建一个星型模式,我的问题是我需要制作具有单独材料属性和产品属性的二维表,还是我可以在一个维度表中同时存在?当前主数据看起来具有以下字段 -
材料ID,名称,类型,产品hier 1,2,3,4 ......产品层次,产品类别,子类别。在我的情况下,材料和产品都是相同的,所以只有一个id。
我想把它放在一张桌子里,但这是最好的做法吗?任何未来的潜在问题?
非常感谢, 阿伦
答案 0 :(得分:0)
重要的(也是显而易见的)事实是,事实表有两个独立的外键:PRODUCT_ID和MATERIAL_ID,两者都引用你的单维表。
对于 OLTP 系统,此设置并非总是最佳做法,因为在这种情况下,数据库无法强制执行参照完整性。 (您可以在MATERIAL_ID列中存储产品ID。)
但对于数据仓库,数据库约束通常未启用并在加载作业中强制执行,因此此设置很好。
分裂的决定更多地取决于两个维度的起源。如果两者都保持在一起,我认为没有理由拆分它们。如果两个维度是独立的,具有不同的生命周期和不同的源,则没有理由将它们组合在一起。
BTW Kimball IMO提到了等级层次的划分(不是单独的维度)。所以他认为分割产品属性和层次结构和类别属性是错误的(这不是你的问题)。
答案 1 :(得分:0)
这取决于您的业务需求。
如果您需要生成一份报告,显示(比方说)按材料生成的产品类别的单位,则需要将它们保持在不同的维度。