0

2 つのエンティティがあるとします。

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

それらは多対一の関係にあります。そのため、特定の部門のオフィスには複数のマネージャーを配置できますが、1 人のマネージャーは特定の部門の 1 つのオフィスにしか割り当てることができません。

したがって、重複を避けるために、AREA に「部門 + オフィス」を主キーとして持つ必要があります。

しかし、2 つのテーブルをリンクするには ID が必要なので、AREA の主キーは Area.ID になります。しかし、これは次のようになる可能性があることを意味します。

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

そんなことありえないはず!

AREA に重複がないようにするには、この関係をどのようにリファクタリングしますか?

4

2 に答える 2

4

AreaArea IDテーブルの PK を作成し、部門とオフィスの組み合わせに個別の一意のインデックスを追加します。

于 2013-08-20T16:09:23.067 に答える
1

おそらく必要なのはUNIQUE制約です:

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

NULL値を受け入れ、テーブル内に複数持つことができることを除いて、主キーと同じです。

于 2013-08-20T16:11:49.173 に答える