如何修复允许重复的主键折衷

时间:2013-08-20 16:06:04

标签: mysql sql

假设有两个实体

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中没有重复项,您将如何重构此关系?

2 个答案:

答案 0 :(得分:4)

使Area ID区域表的PK并在部门和办公室的组合上添加单独的唯一索引。

答案 1 :(得分:1)

您可能需要的是UNIQUE约束:

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

它就像一个主键,除了它接受NULL值,你可以在一个表中有多个。