在MySQL中,如何將2個外鍵組合成一個主鍵?組合外鍵
我有兩個表,一個Staff
,一個Roles
,每個包含他們自己的主鍵StaffID
和RoleID
。我創建了第三張名爲StaffRole
的表格,其中包含StaffID
和RoleID
,請記住這是一對多的關係,因爲工作人員可能有一個或多個角色。
如何結合StaffID
和RoleID
的外鍵爲表StaffRole
創建新的唯一主鍵。
在MySQL中,如何將2個外鍵組合成一個主鍵?組合外鍵
我有兩個表,一個Staff
,一個Roles
,每個包含他們自己的主鍵StaffID
和RoleID
。我創建了第三張名爲StaffRole
的表格,其中包含StaffID
和RoleID
,請記住這是一對多的關係,因爲工作人員可能有一個或多個角色。
如何結合StaffID
和RoleID
的外鍵爲表StaffRole
創建新的唯一主鍵。
從技術上說,你所描述的是不是一個一個一對多關係,而是它是一個許多一對多關係,因爲一個Staff
記錄涉及到很多Role
記錄,但一個Role
記錄也涉及許多不同的Staff
。您使用連接表StaffRole
是處理關係的典型方法。
這是語義,但它不是真的是結合這兩個外鍵的問題,只是創建第三個鍵,它是兩者的組合,也是主鍵。因此,您的表格將有兩個FOREIGN KEY
定義,兩列各一個,以及兩列中的一個PRIMARY KEY
定義均爲。
CREATE TABLE StaffRole (
StaffID INT NOT NULL,
RoleID INT NOT NULL,
/* Composite primary key on both columns */
PRIMARY KEY (StaffID, RoleID),
/* Two separate foreign keys */
FOREIGN KEY (StaffID) REFERENCES Staff (StaffID),
FOREIGN KEY (RoleID) REFERENCES Roles (RoleID)
) ENGINE=InnoDB;
注意,我指定InnoDB
作爲表類型,因爲MySQL不會強制對MyISAM表的FOREIGN KEY
秒。
您可以創建一個StaffRoleID作爲主鍵,並使用StaffID和RoleID作爲外鍵。
乾杯隊友,完美的作品:) – user3074612
不客氣,祝你好運。 –