從Previous Question我對於在n-m關係中具有複合主鍵有一些想法。我的情況非常相似,但有點不同。具有N-M關係的複合主鍵
[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工作臺工具生成的關係表中它的作用是什麼它創建一個表:
選項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);
哪些做法是合適的,當我的關係是多到多用一個例子解釋會有很多有益的:)
您確實需要人的PK'CLIENT_ID'? – 2012-08-12 09:52:53
你是什麼意思?是的,我很確定我需要它:)而這不是問題 – 2012-08-12 14:33:09
所以你說兩個不同的人可以有相同的'PERSON_ID'? – 2012-08-12 22:03:03