2016-09-05 51 views
1

背景:一家公司擁有超過5000名員工,並將建築物放置在不同的城市。 1員工可以在2個或更多的這些建築物中工作,具體取決於日期/項目。該公司沒有跟蹤哪一天有人在哪個建築物。他們只有一張工作表,包含所有員工數據和位置數據。此地點還包括員工開始前往該地點的開始日期。它看起來像下面這樣:解決多對多的關係

EmployeeID | FirstName | LastName | email | BuildingID | Buildinglocation | startdate 
1   | John  | Gates | [email protected] | 2   | New York   | 01-01-2015 
1   | John  | Gates | [email protected] | 1   | Paris   | 01-05-2015 
2   | Bill  | Jobs  | [email protected] | 2   | New York   | 01-01-2016 
3   | Carl  | Davis | [email protected] | 3   | London   | 01-11-2015 

我需要把它變成多個表來創建一個數據倉庫。我在想的是employee的表格和location的表格。然而,這將是一個many to many relation,所以我想添加一個bridge table

問題是:我在哪裏可以節省startdate?我應該將它添加到Bridge表中嗎?在那種情況下,我如何使用startdate填充它?或者我應該將它留在location table中,使employeelocation之間的關係成爲1-n關係?

+1

我會放在橋表中,因爲在位置表中每個位置將只存在一次 – GuidoG

回答

2

這是我會做:

我會把startdate在橋表作爲employee和它們結合在一起之前,然後將startdate填充location將作出。 location只會存在一次,所以通過爲它創建一個單獨的表,您可以減少工作並節省內存。在橋接表中爲startdate添加約束條件,以便在添加新行時,必須具有日期/自動填充將確保您將獲得儘可能最好的數據如果有意義

2

您的表格會顯示是這樣的:

員工

EmployeeID | FirstName | LastName | email 
1   | John  | Gates | [email protected] 
2   | Bill  | Jobs  | [email protected] 
3   | Carl  | Davis | [email protected] 

建築

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