多账户维度数据仓库客户

Dimensional data warehouse customer with multiple accounts

我正在星型模式中设计和构建销售事实 table,但我似乎无法弄清楚如何解决以下问题:

一个客户可以拥有1个或2个账户,但一个账户只能属于1个客户。所以这是一对多的关系。

我是否应该为客户和帐户创建维度,并 link 使用桥接 table?

在最后的事实 table 中,我将作为示例行:

| date_id | cust_id | Acc_id | count(sales) |  
|    1    |    150  |   25   |      1       |  
|    1    |    150  |   26   |      1       |    

创建客户 table,将 Cust_ID 作为主键。使用 Acct_ID 作为主键和 Cust_ID 作为外键创建一个帐户 table。每个帐户只能有一个客户,但一个客户可以列在多个帐户上。

什么是"sales fact table"?您要跟踪订单吗?

只需制作帐户和客户维度。 不要 link 使用外键 - 如果您要创建完全规范化的模式,而不是星型模式,这就是您做事的方式。 Customer 和 Account 之间的 link 保存在 Fact table(s) 中 - 因为您有一行数据包含 Cust_Id 150 以及 Acc_Id 25 和另一行数据持有相同的 Cust_Id 而不是 Acc_Id 26,在您在其上构建的任何 OLAP 层中很明显它们是相关的。

请注意,您也可以只拥有一个帐户维度,并将客户的详细信息作为帐户的属性保存。但是,在不知道模型的其余部分的情况下,无法判断这是否是一个更合适的解决方案table。