背景:一家公司拥有5000多名员工,并在不同城市设有建筑物。 1员工可以在2个或更多这些建筑物中工作,具体取决于日期/项目。该公司没有跟踪某人在哪个建筑物的哪一天。它们只有一张包含所有员工数据和位置数据的工作表。此位置还包括员工开始前往该位置的开始日期。它看起来如下:
EmployeeID | FirstName | LastName | email | BuildingID | Buildinglocation | startdate
1 | John | Gates | JG@.. | 2 | New York | 01-01-2015
1 | John | Gates | JG@.. | 1 | Paris | 01-05-2015
2 | Bill | Jobs | BJ@.. | 2 | New York | 01-01-2016
3 | Carl | Davis | CD@.. | 3 | London | 01-11-2015
我需要将其转换为多个表来创建数据仓库。我在想的是employee
的表格和location
的表格。但是,这将是many to many relation
,因此我想添加bridge table
。
问题是:我在哪里保存startdate
?我应该在Bridge表中添加它吗?在这种情况下,如何使用startdate
填充它?或者我应该将其留在location table
中,使employee
和location
之间的关系成为1-n关系?
答案 0 :(得分:2)
这就是我要做的事情:
我会将startdate
放在您的Bridge表中,因为employee
和location
会在它们连接在一起之前生成startdate
。 location
只存在一次,因此通过为它创建一个单独的表,您可以减少工作量并节省内存。在桥表中添加一个约束到startdate,以便在添加新行时,它必须有一个日期/自动填充将确保您将拥有可能的最佳数据如果这是有意义的
答案 1 :(得分:2)
您的表格看起来像这样:
员工
EmployeeID | FirstName | LastName | email
1 | John | Gates | JG@..
2 | Bill | Jobs | BJ@..
3 | Carl | Davis | CD@..
建筑物
BuildingID | Buildinglocation
1 | Paris
2 | New York
3 | London
桥牌表
EmployeeID | BuildingID | startdate
1 | 2 | 01-01-2015
1 | 1 | 01-05-2015
2 | 2 | 01-01-2016
3 | 3 | 01-11-2015