Wenn Sie eine Tabelle mit einem mehrspaltigen Primärschlüssel haben, ist dies in der Regel das Ergebnis einer Join-Tabelle (viele zu viele), die zu einer eigenen Entität heraufgestuft wurde (und daher ihren eigenen Primärschlüssel verdient). Es gibt viele, die argumentieren, dass eine Join-Tabelle standardmäßig eine Entität sein sollte, aber das ist eine Diskussion für einen anderen Tag.
Betrachten wir eine hypothetische Beziehung von vielen zu vielen:
Student * --- * Klasse
(Ein Schüler kann in mehreren Klassen sein, eine Klasse kann mehrere Schüler haben).
Zwischen diesen beiden Tabellen befindet sich eine Junction-Tabelle mit dem Namen StudentClass (oder ClassStudent, je nachdem, wie Sie sie schreiben). Manchmal möchten Sie Dinge nachverfolgen, wie wenn der Schüler in der Klasse war. So fügen Sie es der StudentClass-Tabelle hinzu. Zu diesem Zeitpunkt ist StudentClass zu einer einzigartigen Entität geworden ... und sollte einen Namen erhalten, um sie als solche zu erkennen, z. B. Einschreibung.
Schüler 1 --- * Einschreibung * --- 1 Klasse
(Ein Schüler kann viele Einschreibungen haben, jede Einschreibung ist für eine Klasse (oder umgekehrt, eine Klasse kann viele Einschreibungen haben, jede Einschreibung ist für einen Schüler).
Nun können Sie beispielsweise abfragen, wie viele Schüler im vergangenen Jahr in der Klasse Chemie 101 eingeschrieben waren. Oder in welchen Klassen war der Student John Doe während seines Studiums an der Acme University eingeschrieben? Dies war ohne den separaten Primärschlüssel möglich. Wenn Sie jedoch einen Primärschlüssel für die Anmeldung haben, können Sie diese Anmeldungen (nach ID) einfacher abfragen. Wie viele Schüler haben eine bestandene Note erhalten?
Die Entscheidung, ob eine Entität eine PK verdient, hängt davon ab, wie viel Abfragen (oder Manipulationen) Sie für diese Entität ausführen. Nehmen wir zum Beispiel an, Sie wollten die Aufgaben anhängen, die für einen Schüler in einer Klasse erledigt wurden. Der logische Ort zum Anhängen dieser Entität (Zuweisung) befindet sich in der Registrierungsentität. Wenn Sie der Registrierung einen eigenen Primärschlüssel geben, werden die Zuweisungsabfragen einfacher.