Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist die Verwendung von char als Primär-/Fremdschlüssel ein Nein, Nein?

Leistung ist nicht wirklich das Hauptproblem, zumindest nicht für mich. Das Problem dreht sich eher um Ersatzschlüssel im Vergleich zu natürlichen Schlüsseln.

Ländercodes sind nicht statisch. Sie können und werden sich ändern. Länder ändern Namen (z. B. von Äthiopien zu Eritrea). Sie entstehen (z. B. der Zerfall Jugoslawiens oder der Sowjetunion) und sie vergehen (z. B. West- und Ostdeutschland). In diesem Fall ändert sich der ISO-Standardcode.

Mehr unter Namensänderungen seit 1990:Länder, Städte und mehr

Ersatzschlüssel sind in der Regel besser, da sich bei diesen Ereignissen die Schlüssel nicht ändern, sondern nur die Spalten in der Referenztabelle.

Aus diesem Grund wäre ich eher geneigt, Länder- und Währungstabellen stattdessen mit einem int-Primärschlüssel zu erstellen.

Abgesehen davon benötigen varchar-Schlüsselfelder mehr Platz und haben bestimmte Leistungsnachteile, die wahrscheinlich kein Problem darstellen, es sei denn, Sie führen eine große Anzahl von Abfragen durch.

Der Vollständigkeit halber möchten Sie vielleicht auf verweisen Von App-Entwicklern begangene Fehler bei der Datenbankentwicklung .