代码之家  ›  专栏  ›  技术社区  ›  1110

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

  •  2
  • 1110  · 技术社区  · 12 年前

    我有桌子:

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

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

    但是,如果我尝试插入新用户,它就无法工作,因为它需要插入 Professor 桌子也是。

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

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

    我知道将强制密钥约束设置为NO不是一个解决方案:)

    3 回复  |  直到 12 年前
        1
  •  8
  •   ypercubeᵀᴹ    12 年前

    如果您有以下要求:

    • 用户可以是教授,也可以不是
    • 教授总是用户

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

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

        2
  •  0
  •   SCV    12 年前

    我认为你应该在这里使用外键。 Professor ID应该是用户表中的外键,这将解决您的所有问题。

    只需查找什么是外键以及如何编写外键查询

        3
  •  -1
  •   Jonysuise    12 年前

    在professors表中,您应该创建一个ProfessorID,并将UserID添加为可为null的FK。