Nein, Sie müssen NICHT immer einen numerischen AutoInc-PK haben.
Wenn Sie Ihre Daten sorgfältig analysieren, identifizieren Sie häufig natürliche Schlüssel in den Daten. Dies ist häufig der Fall, wenn die Daten für das Unternehmen eine intrinsische Bedeutung haben. Manchmal sind die PKs Artefakte aus alten Systemen, die die Geschäftsbenutzer als zweite Sprache verwenden, um Attribute ihres Systems zu beschreiben. Ich habe Fahrzeug-VIN-Nummern gesehen, die beispielsweise als Primärschlüssel einer "Fahrzeug" -Tabelle in einem Flottenmanagementsystem verwendet werden.
Wenn Sie jedoch bereits eine eindeutige Kennung haben, verwenden Sie diese. Erstellen Sie keinen zweiten, bedeutungslosen Primärschlüssel. Es ist verschwenderisch und kann Fehler verursachen.
Manchmal können Sie eine AutoInc-PK verwenden, um einen für den Kunden aussagekräftigen Wert zu generieren, z. B. Richtliniennummern. Setzen Sie den Startwert auf einen sinnvollen Wert und wenden Sie Geschäftsregeln für führende Nullen usw. an. Dies ist wahrscheinlich ein Ansatz, der das Beste aus zwei Welten ist.
Wenn Sie eine geringe Anzahl von Werten haben, die relativ statisch sind, verwenden Sie Werte, die für den Systembenutzer sinnvoll sind. Warum sollten Sie 1,2,3 verwenden, wenn Sie L, C, H verwenden könnten, wobei L, H und C für Leben, Auto und Privat in einem Versicherungskontext vom Typ "Versicherungsvertrag" stehen, oder, um auf das VIN-Beispiel zurückzukommen, wie wäre es mit "TO"? "für Toyota? Alle Toyata-Fahrzeuge haben eine Fahrgestellnummer, die mit "TO" beginnt. Dies ist eine Sache, an die sich die Benutzer weniger erinnern müssen, und die die Wahrscheinlichkeit verringert, dass sie Programmier- und Benutzerfehler einführen. Sie können sogar als Ersatz für eine vollständige Beschreibung in Managementberichten verwendet werden, um die Berichte zu vereinfachen zu schreiben und vielleicht schneller zu generieren.
Eine Weiterentwicklung davon ist wahrscheinlich "eine Brücke zu weit", und ich empfehle es im Allgemeinen nicht, aber ich beziehe es der Vollständigkeit halber ein, und Sie finden möglicherweise eine gute Verwendung dafür. Verwenden Sie also die Beschreibung als Primärschlüssel. Für sich schnell ändernde Daten ist dies ein Gräuel. Für sehr statische Daten, die bei All The Time gemeldet werden , ist dies möglicherweise nicht der Fall. Ich erwähne es nur, damit es dort als eine Möglichkeit sitzt.
Ich benutze zwar AutoInc-PKs, aber ich beschäftige mich nur mit meinem Gehirn und suche zuerst nach besseren Alternativen. Die Kunst des Datenbankdesigns macht etwas Sinnvolles, das schnell abgefragt werden kann. Zu viele Joins behindern dies.
BEARBEITEN Ein weiterer wichtiger Fall, in dem Sie keine automatisch generierte PK benötigen, sind Tabellen, die die Schnittmenge zweier anderer Tabellen darstellen. Um bei der Auto-Analogie zu bleiben, hat ein Auto 0..n Zubehörteile. Jedes Zubehörteil ist bei vielen Autos vorhanden. Um dies darzustellen, erstellen Sie eine Car_Accessory-Tabelle, die die PKs von Car and Accessory und andere relevante Informationen über den Link Dates etc. enthält.
Was Sie (normalerweise) nicht benötigen, ist ein AutoInc PK auf diesem Tisch - auf diesen kann nur über das Auto zugegriffen werden.