Wenn sich Ihre Namensspalte ändert, ist sie nicht wirklich ein guter Kandidat für einen Primärschlüssel. Ein Primärschlüssel sollte eine eindeutige Zeile einer Tabelle definieren. Wenn es geändert werden kann, tut es das nicht wirklich. Ohne weitere Einzelheiten über Ihr System zu erfahren, kann ich nicht sagen, aber dies könnte eine gute Zeit für einen Ersatzschlüssel sein.
Ich werde dies auch in der Hoffnung hinzufügen, die Mythen der Verwendung von automatisch inkrementierenden Ganzzahlen für alle Ihre Primärschlüssel zu zerstreuen. Es ist NICHT immer ein Leistungsgewinn, sie zu benutzen. Tatsächlich ist es oft genau das Gegenteil. Wenn Sie eine automatisch inkrementierende Spalte haben, bedeutet dies, dass jede INSERT-Operation im System jetzt einen zusätzlichen Aufwand beim Generieren eines neuen Werts hat.
Auch, wie Mark hervorhebt, mit Ersatz-IDs für alle Ihre Tabellen, wenn Sie eine Kette von Tabellen haben, die verwandt sind, müssen Sie alle diese Tabellen zusammenfügen, um sie zu durchlaufen. Bei natürlichen Primärschlüsseln ist dies normalerweise nicht der Fall. Das Verbinden von 6 Tabellen mit Ganzzahlen ist normalerweise langsamer als das Verbinden von 2 Tabellen mit einer Zeichenfolge.
Sie verlieren auch häufig die Fähigkeit, Set-basierte Operationen auszuführen, wenn Sie IDs für alle Ihre Tabellen automatisch inkrementieren.Anstatt 1000 Zeilen in eine übergeordnete Tabelle einzufügen und dann 5000 Zeilen in eine untergeordnete Tabelle einzufügen, müssen Sie nun die übergeordneten Zeilen nacheinander in einen Cursor oder eine andere Schleife einfügen, um die generierten IDs zu erhalten, damit Sie sie zuweisen können zu den verwandten Kindern. Ich habe gesehen, wie sich ein 30-Sekunden-Prozess in einen 20-Minuten-Prozess verwandelte, weil jemand darauf bestand, automatisch inkrementierende IDs für alle Tabellen in einer Datenbank zu verwenden.
Endlich (zumindest aus Gründen, die ich hier listet - gibt es sicherlich andere), die Verwendung von automatisch inkrementierenden IDs auf allen Ihren Tabellen fördert schlechtes Design. Wenn der Designer nicht mehr darüber nachdenken muss, was ein natürlicher Schlüssel für eine Tabelle sein könnte, führt dies in der Regel dazu, dass fehlerhafte Duplikate in den Daten landen. Sie können versuchen, das Problem mit eindeutigen Indizes zu vermeiden, aber meiner Erfahrung nach werden Entwickler und Designer diese zusätzlichen Anstrengungen nicht durchführen und nach einem Jahr der Verwendung ihres neuen Systems finden sie heraus, dass die Daten ein Chaos sind, weil die Datenbank nicht hatte richtige Einschränkungen für die Daten durch natürliche Schlüssel.
Es gibt sicherlich eine Zeit für Ersatzschlüssel, aber blind auf allen Tischen zu verwenden, ist fast immer ein Fehler.
Eine Ausnahme, die normalerweise gefunden wird, ist für 'System' Daten. Das heißt, Sie definieren sich Statusfelder etc .. – ShoeLace