2014-12-03 205 views
0

我有一個SQL表用戶有一些用戶與PK的。我需要使用表Users中的相同用戶創建第二個表UserInfo。我將這些表格與FK連接起來。困難是我需要兩個表的用戶都有相同的主鍵。像User(UserId 5)的用戶「Peter」必須在UserInfo表中具有(UserInfoId 5)。這是可能的,如果是這樣,我該怎麼做?兩個相連的表中有相同的記錄具有相同的外鍵

+0

聽起來這是一對一的關係,並且您希望強制在兩個表中始終存在相應的記錄。 由於插入到一個表中將是原子的,我不認爲你可以執行一個循環的PK-FK-PK場景。 如果表格不太寬,則將這些字段添加到基表中。如果你需要一個單獨的桌子,因爲它實際上太寬了;那麼您可以將可選/可空字段重構爲第二個表,並在基表中保留必需/不可爲空的字段。 – Aaron 2014-12-03 18:48:47

回答

1

要麼有一個一對一的關係UsersUserInfo之間,在這種情況下是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

你有一對多的關係UsersUserInfo之間,在這種情況下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 
); 
相關問題