外键是否可以成为另一个表的复合主键的一部分?

DJP*_*CHS 3 mysql foreign-keys composite-primary-key

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

音乐会:ArtistID,ConcertID,ConcetName,VenueID ConcertDetails:ConcertDate,ConcertID,Cost

您看到的ConcertDetails表使用ConcertID,它也在Concerts表中.我结合ConcertDate和ConcertID为ConcertDetails制作复合主键.但是,由于这与Concerts表中的ConcertID相关,因此它也需要是外键.这样可以吗?

Bil*_*win 7

当然是.主键的子集通常是外键.例如,任何多对多表都会这样做.在你的情况下:

CREATE TABLE ConcertDetails (
  ConcertDate DATE NOT NULL,
  ConcertID INT NOT NULL,
  PRIMARY KEY (ConcertDate, ConcertID),
  FOREIGN KEY (ConcertID) REFERENCES Concerts(ConcertID)
);
Run Code Online (Sandbox Code Playgroud)