我正在尝试从似乎包含桥表的E / R图(OLTP系统)构建星型模式。订单是显而易见的事实表,产品是维度表。如果模型需要是星型架构,我看不到如何保存桥接表。如果我需要在模型中保留有关渠道的信息,您将如何处理这种关系?
答案 0 :(得分:0)
这取决于您打算如何使用模型。
如果您只需要回答有关现有订单的产品和渠道问题,则可以完全避免桥接表,因为可以通过事实表(“订单”)解决渠道和产品之间的M2M关系:
此设计的(巨大)优点是其简单易用-最终用户非常直观。它也快。
模型的缺点是它对订单的依赖性。如果订单不存在(即,在事实表中没有订单),那么你将不能够回答有关产品和渠道的关系问题(例如,“显示我的所有产品经其指定的渠道”)。如果这些问题并不重要,你只需要分析现有的订单,保持它的简单。
如果即使在没有现有订单的情况下也确实需要分析产品与渠道的关系,那么事情就更加复杂了。一种方法是如下添加桥表:
这种设计的优势是渠道,产品关系始终可用,无论订单。按产品分析订单也很简单。缺点是,它现在很难通过渠道来分析订单,因为你现在必须要经过桥接表。例如,在最终用户的工具,如电源BI你将需要进行“红”连接双向,经由桥的产品尺寸,以使从通道尺寸过滤器传播。当然这是可行的,但是最终用户现在必须知道他们在做什么-这不再是简单的。
另一种设计使用“事实”事实表:
在这里,你可以很容易地查询通道产品的关系没有订单(通过非事实型事实表产品通道,这表明基本的关系状态),也容易查询订单双方产品和渠道。您也可以“钻,跨”这样的结构来回答各种关于产品的复杂问题没有现有的订单。但是,这种设计并不像第一个那样直观。