外键可以成为另一个 table 的复合主键的一部分吗?

Can a Foreign Key be part of a Composite Primary Key for another table?

我在音乐数据库中有两个(很多)table:

音乐会:ArtistID、ConcertID、ConcetName、VenueID ConcertDetails:ConcertDate、ConcertID、费用

如您所见,ConcertDetails table 使用 ConcertID,它也在 Concerts table 中。我将 ConcertDate 和 ConcertID 结合起来,为 ConcertDetails 创建一个复合主键。但是,由于这与 Concerts table 中的 ConcertID 相关,因此它也需要是一个外键。这样可以吗?

当然可以。主键的子集作为外键是很常见的。例如,任何多对多 table 都会这样做。你的情况:

CREATE TABLE ConcertDetails (
  ConcertDate DATE NOT NULL,
  ConcertID INT NOT NULL,
  PRIMARY KEY (ConcertDate, ConcertID),
  FOREIGN KEY (ConcertID) REFERENCES Concerts(ConcertID)
);