Joh*_*ohn 2 database data-warehouse dimensional-modeling
我正在尝试从似乎包含桥接表的 E/R 图(OLTP 系统)构建星型模式。订单是一个明显的事实表,产品是一个维度表。如果模型需要是星型模式,我看不到如何保留桥接表。如果我需要在模型中保留有关 Channel 的信息,您将如何处理这种关系?
这取决于您计划如何使用该模型。
如果您只需要回答有关现有订单的产品和渠道问题,那么您可以完全避免使用桥接表,因为渠道和产品之间的 M2M 关系可以通过事实表(“订单”)来解决:
这种设计的(巨大)优势是简单易用——对最终用户来说非常直观。它也很快。
该模型的缺点是它依赖于订单。如果没有订单(即事实表中没有订单),那么您将无法回答有关产品和渠道关系的问题(例如,“按指定的渠道向我展示所有产品”)。如果这些问题不重要,您只需要分析现有订单,请保持简单。
如果您确实需要在没有现有订单的情况下分析产品-渠道关系,那么事情就会变得更加复杂。一种方法是添加桥接表,如下所示:
这种设计的优势在于,无论订单如何,渠道-产品关系始终可用。按产品分析订单也(仍然)很简单。缺点是现在很难按渠道分析订单,因为您现在必须通过桥接表。例如,在 Power BI 等最终用户工具中,您需要使“红色”连接双向,以启用从通道维度通过桥到产品维度的过滤器传播。当然,这是可行的,但最终用户现在必须知道他们在做什么——这不再简单。
另一种设计使用“factless”事实表:
在这里,您可以在没有订单的情况下轻松查询 Channel-Product 关系(通过事实表 Product-Channel,它本质上显示关系状态),也可以轻松地按产品和渠道查询订单。您还可以“钻取”这样的结构来回答有关没有现有订单的产品的各种复杂问题。尽管如此,这样的设计并不像第一个那样直观。
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |