处理维度之间的多对多,1对多关系

时间:2018-05-16 06:47:15

标签: dimensions datamodel

我有一个场景,其中一个销售人员与多个部门相关,我需要计算销售代表级别和部门级别的销售额。请分享关于如何建模的想法

我的思考过程在

之下

选项1

我将创建“Sales Rep”维度和“Department”维度,并将其与具有dept_id和sales rep_id的桥表相关联 这里的两个维度我更喜欢历史记录,因此它是SCD类型2

选项2

我将创建“销售代表”维度和“部门”维度,在部门维度中,我将添加归档的“销售代表ID”。它将销售代表连接到Department.T我在这里观察到的缺点是部门详细信息将在每个员工的“部门”表中重复。 这里的两个维度我更喜欢历史记录,因此它是SCD类型2

请分享您的答案,以上选项哪一个更好,或任何其他第三个最佳方法 -

1 个答案:

答案 0 :(得分:0)

这个答案与商业模式有关,而不是技术需求:
如果销售人员可以属于多个部门,那么选项2就是最有意义的,让部门保持在"销售"事实表,然后无需将部门保留在"销售人员"尺寸。 如果销售人员一次只属于一个部门,则选项1最有意义,但他可能会更改部门,使其成为保留历史记录的慢速变化维度类型2。

Slowly changing dimension表示您不需要桥牌表,该部门是销售人员的一部分"表格,您可以在提供的链接中阅读更多相关信息 在一个奇怪的情况下,销售人员可以在多个部门工作并让各部门的人员向他汇报,那么所有的层次模型都应该在不同的表格中。在SSAS中,一张自我反思的表格不能很好地运作,试图找出解决这些问题的方法。

请注意,当您设计数据仓库时,星型模式的确意味着:数据可能会在不同的表中重复,以便更轻松地进行报告。 这些问题从来没有一个明确的解决方案,我建议你尽可能多地阅读数据仓库设计,直到你的头脑旋转,以便了解这一点。