外键可以成为另一个 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)
);
我在音乐数据库中有两个(很多)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)
);