免责声明:之前我从未创建过数据仓库。我已经阅读了Kimball数据仓库工具包的几个章节。
背景:工厂(工厂)管理团队需要能够以各种方式切割和切割生产信息,并且我们希望在我们部门的制造工厂中提供一致的报告格式。通过业务分析,我们得出结论,每个过程完成的事实是一行。完成的过程可能意味着"机器"或"组装。"我称之为"生产事实"。
企业需要回答的问题如下:
我的架构包括以下第一级维度。我没有超出第一级的任何尺寸,但工厂尺寸与零件类型,移位和工艺尺寸之间存在一些交叉关系。
非维度事实是:
问题
我的问题是当时有多名员工在处理这个过程。所以,我想知道我是否需要更改我的模型以及如何最好地代表模型中的员工。我们不是试图存储员工信息,而只是公司员工ID。我考虑过以下几种选择:
我的问题
我认为选项3是最可行的选择,但我有一些保留意见。有潜在的监督吗?还有其他我应该考虑的替代方案吗?是否可以将从事该流程的员工从事实表中删除?
感谢您的任何建议。
答案 0 :(得分:2)
有一个名为缓慢变化的维度的概念。 这些被认为是尺寸;基本上在这里我将称之为PartEmployee的表;
该表的结构将是
PartId - PK
EmployeeId - PK
EmployeeStartDate - PK
EmployeeEndDate
如果员工仍在工作,则结束日期将为空。当新员工开始处理该部件时,该部件的先前员工记录将被关闭,并为该员工创建新记录。
在PartFact表上添加员工;
EmployeeId
此栏目将保留当前员工;每当新员工开始工作时,此事实记录将更新......
这将为您提供员工参与工作的历史视角,以及最后工作的员工的信息。
希望这会有所帮助......
答案 1 :(得分:2)
我有时间考虑我的选择,原帖中列出的4个选项都不正确。讨论的问题似乎是一个典型的“覆盖”问题;企业需要知道哪些员工在给定时间处理哪些流程。如果我们掌握了这些信息,我们就会知道在给定流程完成时谁在某个特定部分工作。这最好表示为员工维度和生产流程维度之间的无事实事实表。
这种方法也有助于我节省空间并提高查询能力,因为单个员工“覆盖”事实将涵盖多个流程生产事实。