Sql server 不带PK的UserRoles表

Sql server 不带PK的UserRoles表,sql-server,database-schema,composite-primary-key,Sql Server,Database Schema,Composite Primary Key,我有以下表格(除其他外): 使用者 部门 角色 用户角色 UserRoles表包含以下字段: 用户ID 罗莱德 部门ID(空) 这里的想法是我可以为用户指定一个特定的角色,对于特定的部门,如果DepartmentId为空,则此角色适用于所有部门 这里的问题是我无法从UserRoles表中的三个字段中生成复合主键,因为DepartmentId可以为空 我应该只使用一个没有主键的唯一索引,因为我不能只为前两列使用主键(这将防止用户对多个部门具有相同的角色),还是应该将整个结构更改为其他结构(任何想法

我有以下表格(除其他外):

  • 使用者
  • 部门
  • 角色
  • 用户角色
  • UserRoles
    表包含以下字段:

  • 用户ID
  • 罗莱德
  • 部门ID(空)
  • 这里的想法是我可以为用户指定一个特定的角色,对于特定的部门,如果
    DepartmentId
    为空,则此角色适用于所有部门

    这里的问题是我无法从
    UserRoles
    表中的三个字段中生成复合主键,因为
    DepartmentId
    可以为空


    我应该只使用一个没有主键的唯一索引,因为我不能只为前两列使用主键(这将防止用户对多个部门具有相同的角色),还是应该将整个结构更改为其他结构(任何想法都将受到欢迎).

    我将使DepartmentID不为null,并指定一个值0来表示所有部门。这将有助于您创建PK和查询,现在您可以简单地说where DepartmentID=0而不是where DepartmentID为null。

    downvoter,是否愿意分享原因?我无法将其设置为0,除非我将FK删除到Departments表中。您可以使用ALTER table