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

时间:2017-04-23 22:00:08

标签: mysql foreign-keys composite-primary-key

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

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

如您所见,ConcertDetails表使用ConcertID,它也在Concerts表中。我结合了ConcertDate& ConcertID为ConcertDetails制作复合主键。但是,由于这与Concerts表中的ConcertID有关,因此它也需要是外键。可以这样做吗?

1 个答案:

答案 0 :(得分:6)

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

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