0
我有一個SQL表用戶有一些用戶與PK的。我需要使用表Users中的相同用戶創建第二個表UserInfo。我將這些表格與FK連接起來。困難是我需要兩個表的用戶都有相同的主鍵。像User(UserId 5)的用戶「Peter」必須在UserInfo表中具有(UserInfoId 5)。這是可能的,如果是這樣,我該怎麼做?兩個相連的表中有相同的記錄具有相同的外鍵
我有一個SQL表用戶有一些用戶與PK的。我需要使用表Users中的相同用戶創建第二個表UserInfo。我將這些表格與FK連接起來。困難是我需要兩個表的用戶都有相同的主鍵。像User(UserId 5)的用戶「Peter」必須在UserInfo表中具有(UserInfoId 5)。這是可能的,如果是這樣,我該怎麼做?兩個相連的表中有相同的記錄具有相同的外鍵
要麼有一個一對一的關係Users
和UserInfo
之間,在這種情況下是UserInfo.UserID
同時PRIMARY KEY和外鍵。
CREATE TABLE UserInfo (
UserID int PRIMARY KEY,
Info varchar(max),
CONSTRAINT FK_UserInfo_User FOREIGN KEY (UserID) REFERENCES Users(UserID)
ON DELETE CASCADE
);
OR
你有一對多的關係Users
和UserInfo
之間,在這種情況下UserInfo.UserID
是一個外鍵,你需要一個單獨的PRIMARY KEY UserInfo.UserInfoID
。
CREATE TABLE UserInfo (
UserInfoID int PRIMARY KEY,
UserID int NOT NULL,
Info varchar(max),
CONSTRAINT FK_UserInfo_User FOREIGN KEY (UserID) REFERENCES Users(UserID)
ON DELETE CASCADE
);
聽起來這是一對一的關係,並且您希望強制在兩個表中始終存在相應的記錄。 由於插入到一個表中將是原子的,我不認爲你可以執行一個循環的PK-FK-PK場景。 如果表格不太寬,則將這些字段添加到基表中。如果你需要一個單獨的桌子,因爲它實際上太寬了;那麼您可以將可選/可空字段重構爲第二個表,並在基表中保留必需/不可爲空的字段。 – Aaron 2014-12-03 18:48:47