Es gibt viele Tabellen, bei denen man eine Identitätsspalte als Primärschlüssel haben möchte. Im Falle der von Ihnen beschriebenen M:M-Beziehungstabelle ist es jedoch am besten, KEINE neue Identitätsspalte als Primärschlüssel zu verwenden.
Der Link von RThomas in seinem Kommentar liefert hervorragende Gründe, warum es sich empfiehlt, KEINE Identitätsspalte hinzuzufügen. Hier ist diese Verbindung .
Die Nachteile überwiegen in so gut wie jedem Fall, aber da Sie nach den Vor- und Nachteilen gefragt haben, füge ich auch ein paar unwahrscheinliche Vorteile hinzu.
Nachteile
-
Erhöht die Komplexität
-
Kann zu doppelten Beziehungen führen, es sei denn, Sie erzwingen die Eindeutigkeit der Beziehung (was bei einem Primärschlüssel standardmäßig der Fall wäre).
-
Wahrscheinlich langsamer: db muss zwei Indizes statt einem pflegen.
Profis
Alle Profis sind ziemlich skizzenhaft
-
In einer Situation, in der Sie den Primärschlüssel der Beziehungstabelle als Verknüpfung zu einer separaten Tabelle (z. B. einer Prüfungstabelle) verwenden müssen, wäre die Verknüpfung wahrscheinlich schneller. (Wie bereits erwähnt - das Hinzufügen und Entfernen von Datensätzen wird wahrscheinlich langsamer sein. Wenn Ihre Beziehungstabelle eine Beziehung zwischen Tabellen ist, die selbst eindeutige IDs verwenden, ist der Geschwindigkeitszuwachs durch die Verwendung einer Identitätsspalte in der Verknüpfung im Vergleich zu zwei Spalten minimal).
-
Die Anwendung kann der Einfachheit halber davon ausgehen, dass jede Tabelle, mit der sie arbeitet, eine eindeutige ID als Primärschlüssel hat. (Das ist ein schlechtes Design in der Anwendung, aber Sie haben vielleicht keine Kontrolle darüber.) Sie könnten sich ein Szenario vorstellen, in dem es besser ist, etwas zusätzliche Komplexität in die DB einzuführen als die zusätzliche Komplexität in eine solche Anwendung.