尺寸建模中的桥表

时间:2018-08-14 15:30:03

标签: data-modeling dimensional-modeling

我熟悉在事实和维度表之间创建桥梁表。

在维及其多维属性之间创建桥表是个好主意吗?

例如,客户有多个电话号码。我可以仅创建与客户维度具有一对多关系的客户电话维度,还是建议创建一个桥接表?

1 个答案:

答案 0 :(得分:1)

专门针对多部电话的示例进行回答。

我通常会尽量避免桥接表。它们是设计的复杂性,保持简单是一种更好的方法(尽管并非总是可能的)。

如果每个客户有多部电话,我将创建2个属性:

  • 主要电话
  • 其他电话

第一个属性将包含主客户电话,并且是必填项。

第二个属性可能包含一个或多个其他电话号码,并连接到一个定界字符串(即“ 415-111-1111、415-222-2222”)中。这样的设计是可以接受的,因为您(最有可能)仅将这些额外的电话用作报告中的描述性信息。同样,很可能您会有数量不等但数量有限的此类电话-假设为0-3左右,这意味着此属性将为空或包含合理的短字符串。

上面的设计简单干净,并且适用于大多数情况,除非您需要对电话号码执行特定分析,或者如果电话号码太多并且必须全部使用。在这种情况下,我会将它们放入事实表(“客户电话”),其中可能包含:

  • Customer_ID
  • Phone_Profile_ID
  • 日期
  • 电话号码

Phone_Profile是一个维,其中应包含电话属性,即“电话类型” {“地线”,“移动”},“电话使用” {“主要”,“次要”}等。

该事实表也可以是所有客户电话的定期快照(年度,每月等),并用作电话目录。但是,很少需要这种精心设计的设计(除非您为呼叫中心或类似的电话密集型应用设计)。