admin

如何在SQL Server Management Studio中将1设置为0'-1关系

sql

我有表:

Users{UserId ...}
Professors{UserId ...}

UserId在两个表中都设置为PK,并建立了1:1关系。

但是,如果我尝试插入新用户,则无法使用,因为它也需要在Professor表中插入。

我想使一个用户在Professor表中只能有1条记录,但我也想使其不必在Professor表中存在(我不想让所有用户都教授:))。

如何在SQL Server Management Studio中将1设置为(0 … 1)关系?

我知道将强制执行键约束设置为NO并不是解决方案:)


阅读 205

收藏
2021-07-01

共1个答案

admin

如果您有以下要求:

  • 用户可以是教授,也可以不是
  • 教授永远是用户

那么你是正确的,那是一种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)
  ) ;

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

2021-07-01