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)
)
hier Verknüpfungstabelle ist authorbook warum Primärschlüssel (authorid, BOOKID) verwendet wirdWarum implementiert Junction-Tabelle von vielen zu vielen Relation in SQL sowohl Fremdschlüssel als Primärschlüssel?
warum nicht eine separate Tabelle ID haben und es Primärschlüssel machen?
Sie können es so oder so tun. Wenn breitere Datentypen vorhanden sind, z. B. Varchare, ist eine dünne PK zum Skalieren vorzuziehen. Für spezielle Anwendungsfälle des Compositings müssen Sie in speziellen Anwendungsfällen die int id wie hier [http://stackoverflow.com/a/38340726] haben. – Drew
Warum einen Ersatzschlüssel zu den Ersatzschlüsseln hinzufügen? Wenn die Auflösungstabelle kein Master für ein anderes Detail sein soll, gibt es keinen Grund, der Tabelle einen weiteren bedeutungslosen Schlüssel hinzuzufügen. Als eine Industrie sind wir mit Surrogates verrückt geworden, IMHO. –