2017-06-06 45 views
0

我是数据仓库的新成员。我正在设计模型改变星型模式。 我有一个2表:合同表&抱怨表。一份合同在投诉表中可以有一个或多个价值。您可以在下面看到2张照片。解决数据仓库中的一对多关系?

在facttable中,1合约只有一行。抱怨表可以为每个contract_id有一个或多个值。我已经尝试过桥牌桌了,但还不够好。 感谢所有

http://prntscr.com/fgdnpb(Conplain表)

http://prntscr.com/fgdorh(合同表)

我的Skype:dinhhungdigital

回答

1

你混淆了事实表和维表。您的维度应该是“Contract”,而您的事实表应该是“Complaint”,并以Contract_Id连接为一对多(如启动架构所要求的)。

Learn about Star Schema Design

+0

这是一个好主意,但我不能做我的数据库。不仅有2个表,实际上有4个表......:要求,执行,结算...每个合同都有一个或多个价值要求,账单......合同表与这些表的关系是一对一-许多。 所以我想要合约表将FactTable。 –

+0

你能解释一下你提到的表格是什么意思吗?需要,执行,账单?从目前为止你所说的话,我认为RADO是正确的,契约应该是一个维度。 – Rich

+0

@TrầnĐìnhHưng:我添加了一个链接到我的答案,这将有助于您了解星型模式设计。很抱歉地告诉你,但你不能随意指定事实和维度 - 它们的角色是由它们的数据结构定义的。事实表积累交易(在你的情况下,投诉),而维表提供这些交易的上下文(例如客户,地点,产品等,在你的情况 - 合同)。暗淡表必须具有唯一的键,并且必须始终处于关系中的“1”一侧,而不是“多”一侧。 – RADO

0

你应该有一个DimContract & FactContract,以及一个DimComplaint & FactComplaint。

DimContract可能只包含ContractID(退化维),但Code也可能属于此处,因为它看起来取决于ContractID。 FactContract连接所有描述的合同

  • DimContractType维度的属性,
  • DimDate作为DimDateContractSigned
  • DimCustomer?
  • DimSalesPerson?

DimComplaint可能由ComplaintID和Code组成。如果网站是自由文本,那么它也可以包含在这里,如果用户从列表中选择它,它就是事实。 FactComplaint连接所有描述该投诉的尺寸属性:

  • DimComplaint,
  • DimContractID,
  • DimServiceType,
  • DimTitle,
  • DimStatus,
  • DimDate如DimDateOfComplaint,
  • [DimWebsite if appropriate]

在此示例中,由于投诉引用了合同并且合同引用了客户,因此您可以看到客户和投诉之间的关系,而无需从FactComplaint直接引用DimCustomer。