前の質問から、nmの関係で複合主キーを使用することについていくつかのアイデアを得ました。私の状態は非常に似ていますが、少し異なります。
[Person]
PERSON_ID: int, primary key
CLIENT_ID: int, primary key
Name: nvarchar(xx)
primary_key( PERSON_ID, CLIENT_ID);
[Group]
GROUP_ID: int
CLIENT_ID: int
Name: nvarchar(xx)
primary_key( GROUP_ID, CLIENT_ID);
ここで、mysql-workbenchツールを使用してリレーションシップテーブルを生成すると、テーブルが作成されます。
オプション1:
[PersonHasGroup]
PERSON_ID: int
CLIENT_ID: int
GROUP_ID: int
CLIENT1_ID: int
primary_key( PERSON_ID, CLIENT_ID, GROUP_ID, CLIENT1_ID);
私の場合、両方のclient_idは通常同じ値になるので、次のようにテーブルを編集しました
オプション2:
[PersonHasGroup]
PERSON_ID: int
CLIENT_ID: int
GROUP_ID: int
primary_key( PERSON_ID, CLIENT_ID, GROUP_ID);
それらは良い習慣ですか?私の他の同僚が好むのは少し異なります。彼らは使用します:
オプション3:
[PersonHasGroup]
PERSON_HAS_GROUP_ID: int, auto-increment
CLIENT_ID: int
PERSON_ID: int, foreign key
GROUP_ID: int, foreign key
primary_key( PERSON_HAS_GROUP_ID, CLIENT_ID);
私の関係が多対多の説明である場合、どのプラクティスが適切であるかを例を挙げて説明すると、非常に役立ちます:)