2014-12-03 161 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 
); 
相关问题