Pferd für Kurse. Um meine Voreingenommenheit zu verdeutlichen: Ich bin in erster Linie Entwickler, also geht es mir hauptsächlich darum, den Benutzern eine funktionierende Anwendung zu bieten.
Ich habe an Systemen mit natürlichen Schlüsseln gearbeitet und musste viel Zeit aufwenden, um sicherzustellen, dass sich Wertänderungen durchsetzen.
Ich habe an Systemen gearbeitet, die nur Ersatzschlüssel verwenden, und der einzige Nachteil war der Mangel an denormalisierten Daten für die Partitionierung.
Die meisten traditionellen PL/SQL-Entwickler, mit denen ich zusammengearbeitet habe, mochten Surrogatschlüssel wegen der Anzahl der Tabellen pro Join nicht, aber unsere Test- und Produktionsdatenbanken kamen nie ins Schwitzen; die zusätzlichen Joins beeinträchtigten die Anwendungsleistung nicht. Bei Datenbankdialekten, die Klauseln wie "X inner join Y on X.a = Y.b" nicht unterstützen, oder bei Entwicklern, die diese Syntax nicht verwenden, machen die zusätzlichen Joins für Surrogatschlüssel die Abfragen schwieriger zu lesen und verlängern die Eingabe und Überprüfung: siehe Beitrag von @Tony Andrews. Aber wenn Sie ein ORM oder ein anderes Framework zur SQL-Generierung verwenden, werden Sie das nicht bemerken. Touch-Typing mildert das Problem ebenfalls.
26 Stimmen
@Joachim Sauer: Ein Argument darüber, ob eine Sache subjektiv ist, kann selbst subjektiv sein, ohne dass dies in irgendeiner Weise mit der Objektivität oder Subjektivität der fraglichen Sache zu tun hat. Es sei denn, Sie sind bereit, die genauen objektiven Kriterien zu nennen, die etwas objektiv machen. Es gibt Dinge, die man "offene Begriffe" nennt, wie zum Beispiel die Anzahl der Haare, die ein Bart braucht. Man kann objektiv sagen, dass eine Person ohne Kinnhaare keinen Bart hat, und eine mit 5.000 Haaren pro Zentimeter Länge hat einen Bart, aber irgendwo in der Mitte ist ein subjektives Urteil erforderlich, um eine objektive Feststellung zu treffen.
2 Stimmen
@Manrico: Sie müssen sich nur Folgendes fragen: Wenn ich keinen Ersatzschlüssel verwende, ist mein Primärschlüssel dann immer noch unveränderlich? Wenn die Antwort nein lautet, dann sollten Sie ernsthaft die Verwendung eines Ersatzschlüssels in Betracht ziehen. Auch wenn der Primärschlüssel auch nur teilweise aus Benutzereingaben besteht, sollten Sie die Verwendung eines Ersatzschlüssels in Betracht ziehen. Und warum? Wegen der Gefahr von Datenanomalien.
1 Stimmen
@TylerRick Aber das ist keine wirklich gute Frage. Sie fragt nach einer allgemeingültigen Lösung für alle Situationen, obwohl es offensichtlich keine gibt, wie der "Religionskrieg" beweist, dessen sich der Fragesteller sehr wohl bewusst ist (Zitat: "Da haben wir es wieder, das alte Argument taucht immer noch auf..."). Anstatt sich zu fragen, ob sich die Welt verändert hat und endlich ein zwingender Grund vorliegt, sich immer für eine Seite zu entscheiden, ist es besser, diese Frage für jede konkrete Situation immer wieder zu stellen und SO zu posten, wenn man sich nicht sicher ist. Das ruft nur Dogmatismus hervor.