在服装店的星型模式中,有一个交易事实可以捕获所有购买的东西。这通常会有通常的日期,时间,金额维度,但也会有人指示是谁购买的。在某些情况下,您可以在同一笔交易中拥有多个人。如果外键在Fact表上,那么如何建模,因此只能指向一个Person?
答案 0 :(得分:2)
尺寸建模的标准技术是使用“桥梁”。表。 您可以找到的经典示例包括拥有帐户(或交易)的客户群,以及访问医院时有多重诊断的患者。
在您的情况下,这可能如下所示:
表: FactTransaction
PersonGroupKey
表: BridgePersonGroup
PersonGroupKey
PersonKey
表: DimPerson
PersonKey
对于每组人,您都要创建一个新的PersonGroupKey并最终得到如下行:
PersonGroupKey 1, PersonKey 5
PersonGroupKey 1, PersonKey 3
PersonGroupKey 2, PersonKey 1
PersonGroupKey 3, PersonKey 6
然后,PersonGroupKey代表事实中的一组人。
从逻辑上讲,应该有另一个表DimPersonGroup,它只列出了PersonGroupKeys,但是大多数数据库都不需要这样,所以Kimball建模者通常不会这样做。
这是Bridge表的基础知识,但您可以根据具体情况考虑修改!
答案 1 :(得分:1)
您需要加入表格TransactionPerson
(或类似内容),其中Person
至TransactionPerson
为1:M关系,然后为TransactionPerson
至Transaction
是M:1的关系。
通过这种方式,您可以间接地将多个人与一个交易相关联。
答案 2 :(得分:1)
我建议将Bridge表与您的事务和人员表结合使用。例如:
表:fact_transaction
transaction_id
(主键)transaction_person_id
(外键) 表:bridge_transaction_person
transaction_person_id
person_id
表:dim_person
person_id
(主键)