你应该有一个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。
这是一个好主意,但我不能做我的数据库。不仅有2个表,实际上有4个表......:要求,执行,结算...每个合同都有一个或多个价值要求,账单......合同表与这些表的关系是一对一-许多。 所以我想要合约表将FactTable。 –
你能解释一下你提到的表格是什么意思吗?需要,执行,账单?从目前为止你所说的话,我认为RADO是正确的,契约应该是一个维度。 – Rich
@TrầnĐìnhHưng:我添加了一个链接到我的答案,这将有助于您了解星型模式设计。很抱歉地告诉你,但你不能随意指定事实和维度 - 它们的角色是由它们的数据结构定义的。事实表积累交易(在你的情况下,投诉),而维表提供这些交易的上下文(例如客户,地点,产品等,在你的情况 - 合同)。暗淡表必须具有唯一的键,并且必须始终处于关系中的“1”一侧,而不是“多”一侧。 – RADO