多账户维度数据仓库客户
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。
我正在星型模式中设计和构建销售事实 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。