2013-08-20 131 views
0

假設有兩個實體如何修復允許重複

Manager  Area 
-------  ------- 
id   department 
name   office 
id_area >>>>> id 

他們在關係多對一這個主鍵妥協。因此,某個部門的辦公室可以有多個經理,但只能將一個經理分配到特定部門的一個辦公室。

所以我應該把AREA的「部門+辦公室」作爲主鍵,以避免重複。

但我需要一個ID來鏈接這兩個表,所以AREA中的主鍵現在變成了Area.ID.但這意味着我可以結束:

AREA 
--------------------- 
ID DEP. OFFICE 
--------------------- 
1  R  2 
2  R  2 

這應該是不可能的!

你會如何重構這種關係以便在AREA中沒有重複?

回答

4

使Area ID區域表的PK和添加一個單獨的部門和辦公室的組合的唯一索引。

1

你可能需要的是一個UNIQUE約束:

ALTER TABLE `Area` ADD UNIQUE(`department`, `office`) 

這就像一個主鍵,不同之處在於它接受NULL值,你可以有一個以上的表內。