2013-08-20 98 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值,你可以有一个以上的表内。