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

标签 sql database database-design relational-database ssms

我有表:

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

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

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

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

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

我知道 set enforce key constraints to NO 不是解决方案:)

最佳答案

如果您有这些要求:

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

那么你是对的,它是一个 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)
  ) ;

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

关于sql - 如何在 SQL Server Management Studio 中设置 1 到 0...1 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349055/

相关文章:

用于返回任何数据库列的 Java REST 端点

security - 我的密码盐应该有多大?

php - 从SQL中的文本字段中提取单词

sql - 从大字符串中查找特定字符串的所有位置

database - 更新一对多表的最有效方法

mysql - 所有数据库表中 CreatedDate 和 ModifiedDate 列的优缺点

database - 有没有人使用地址行 2

mysql - 检查 csv 文件中是否存在数据库记录

mysql - 将 LIKE 与多行子查询结合使用时如何避免错误 1242

sql - 从表中的重复记录中获取最新 ID