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

2 回答 2

4

制作Area IDArea表的PK,并在部门和办公室的组合上添加一个单独的唯一索引。

于 2013-08-20T16:09:23.067 回答
1

您可能需要的是一个UNIQUE约束:

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

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

于 2013-08-20T16:11:49.173 回答