SQL 中的两个复合主键

Two Composite Primary Key in SQL

我试图定义 table 如下:

CREATE TABLE dbo.[User]
(
  Id int NOT NULL IDENTITY PRIMARY KEY,
  Name nvarchar(1024) NOT NULL
);

CREATE TABLE [Group] 
(
  Id int NOT NULL IDENTITY PRIMARY KEY,
  Name nvarchar(1024) NOT NULL
);

CREATE TABLE [UserToGroup]
(
  Name VARCHER(20)
  UserId int NOT NULL,
  GroupId int NOT NULL,
  PRIMARY KEY CLUSTERED ( UserId, Name),
  PRIMARY KEY CLUSTERED ( GroupId, Name),
  FOREIGN KEY ( UserId ) REFERENCES [User] ( Id ) ON UPDATE  NO ACTION  ON DELETE  CASCADE,
  FOREIGN KEY ( GroupId ) REFERENCES [Group] ( Id ) ON UPDATE  NO ACTION  ON DELETE  CASCADE
);

如何使用两个复合主键创建 table?

 Name VARCHAR(20) NOT NULL,
 UserId int NOT NULL,
 GroupId int NOT NULL,
 UNIQUE ( UserId, Name),
 UNIQUE ( GroupId, Name)

在关系模型和 SQL 中,一个键与另一个键之间没有逻辑上的区别,因此没有充分的理由使用不同的语法来指定一个键而不是其他键。然而,无论好坏,SQL 标准的作者决定限制 PRIMARY KEY 约束语法在每个 table 中只能使用一次,并且在需要多个约束语法的情况下键,您必须改用一个或多个 UNIQUE 约束。可以说,放弃该限制是可取的,但因为它基本上只是一点语法糖,不太可能很快发生。