【问题标题】:Can a Foreign Key be part of a Composite Primary Key for another table?外键可以成为另一个表的复合主键的一部分吗?
【发布时间】:2017-04-23 22:00:07
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多