Sql-Server-2008

SqlServer:一個表的PK可以是其他兩個表的FK嗎?

  • September 23, 2014

我有三個表項目,使用者和 proj_user。proj_user 表的 PK 是 project 和 users 表的 pk eg(project_id,user_id) 的 FK

我的問題是,project_id 和 user_id 的數據是否可能不同,比如?:

project_id = '12345'user_id = 'abc987'


編輯感謝您的快速回复。但只要看看這個場景

TABLE project (
   project_id PRIMARY KEY
   ...
)

TABLE users (
   user_id PRIMARY KEY
   ...
)

TABLE proj_user (
proj_user_id
project_id
user_id
PRIMARY KEY (proj_user_id),
FOREIGN KEY (proj_user_id) REFERENCES projects (project_id),
FOREIGN KEY (proj_user_id) REFERENCES projects (user_id)
)

我希望project_idanduser_id值不同。

我需要在這裡改變什麼?

如果我正確閱讀了您的問題,那麼您將描述以下內容:

TABLE project (
   project_id PRIMARY KEY
   ...
)

TABLE users (
   user_id PRIMARY KEY
   ...
)

TABLE proj_user (
   project_id,
   user_id,
   PRIMARY KEY (project_id, user_id),
   FOREIGN KEY (project_id) REFERENCES projects (project_id),
   FOREIGN KEY (user_id) REFERENCES users (user_id)
)

…這是完全有效的,是的。

是的,proj_user 表的主鍵可以是 project_id 和 user_id 的複合鍵。這些列的數據類型可以不同,例如您的範例中的 integer 和 varchar。這些列的數據類型必須與引用的項目和使用者表中的數據類型相匹配。

引用自:https://dba.stackexchange.com/questions/77368