CREATE TABLE Books(
BookID SMALLINT NOT NULL PRIMARY KEY,
BookTitle VARCHAR(60) NOT NULL,
Copyright YEAR NOT NULL
)
CREATE TABLE Authors(
AuthID SMALLINT NOT NULL PRIMARY KEY,
AuthFN VARCHAR(20),
AuthMN VARCHAR(20),
AuthLN VARCHAR(20)
)
CREATE TABLE AuthorBook(
AuthID SMALLINT NOT NULL,
BookID SMALLINT NOT NULL,
PRIMARY KEY (AuthID, BookID),
FOREIGN KEY (AuthID) REFERENCES Authors (AuthID),
FOREIGN KEY (BookID) REFERENCES Books (BookID)
)
这里结表authorbook 为什么主键(AUTHORID,BOOKID)用于为什么sql中的多对多关系表实现外键为主键?
为什么不能有一个单独的表ID,并使其主键?
你可以这样做。当更广泛的数据类型存在时,比如varchars,缩放比较好的是PK。对于合成的特殊用例,你肯定需要在特殊用例中看到int id(这里是http://stackoverflow.com/a/38340726)。 – Drew
为什么添加一个代理键到什么已经是代理键?除非决议表要成为另一个细节的主人,否则没有理由在表中添加另一个无意义的关键字。作为一个行业,我们对替代品感到疯狂,恕我直言。 –