假设有两个实体
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中没有重复项,您将如何重构此关系?
答案 0 :(得分:4)
使Area ID
区域表的PK并在部门和办公室的组合上添加单独的唯一索引。
答案 1 :(得分:1)
您可能需要的是UNIQUE
约束:
ALTER TABLE `Area` ADD UNIQUE(`department`, `office`)
它就像一个主键,除了它接受NULL
值,你可以在一个表中有多个。