如何在SQL Server Management Studio中设置1到0 ... 1的关系

111*_*110 0 sql database database-design ssms relational-database

我有桌子:

Users{UserId ...}
Professors{UserId ...}
Run Code Online (Sandbox Code Playgroud)

UserId在两个表中都设置为PK并且建立了1:1的关系.

但是,如果我尝试插入新用户,它不起作用,因为它也需要在Professor表中插入.

我想让一个用户在教授表中只能有1条记录,但我也想让它不必存在于教授表中(我不想让所有用户教授:)).

如何在SQL Server Management Studio中设置1到(0 ... 1)的关系?

我知道set强制关键约束NO不是解决方案:)

ype*_*eᵀᴹ 6

如果您有这些要求:

  • 用户可以是教授 - 或者不是
  • 教授永远是用户

那么你是正确的,这是一种1 :: 0..1关系.在SQL中,它可以像这样实现:

CREATE TABLE Users
  ( UserId INT NOT NULL
  , ...
  , PRIMARY KEY (UserId)
  ) ;

CREATE TABLE Professors
  ( UserId INT NOT NULL
  , ...
  , PRIMARY KEY (UserId)
  , FOREIGN KEY (UserId)
      REFERENCES Users (UserId)
  ) ;
Run Code Online (Sandbox Code Playgroud)

根据您的描述,您可能以相反的顺序定义了外键约束.