Meine Antwort ist, dass es keine klare Antwort gibt. Wählen Sie einfach einen Ansatz innerhalb Ihres Projekts und konsistent sein. Beide haben ihre Plus- und Minuspunkte.
@cletus macht einen guten Punkt über die Verwendung von generierten Schlüsseln, aber wenn Sie in eine Situation geraten, in der die Daten relativ statisch sind, wie Ländercodes, erscheint die Einführung eines generierten Schlüssels zu komplex. Trotz der realen Weltpolitik wird das Erscheinen von Ländercodes nicht wirklich ein Problem für die meisten Geschäftsprobleme sein (aber wenn Ihre Daten alle 190-210 Länder aktiv betreffen, folgen Sie diesem Rat).
Die universelle Verwendung von Ersatzschlüsseln ist eine gute und beliebte Strategie. Aber denken Sie daran, es kommt als Antwort auf die Modellierung von Datenbanken mit natürlichen Schlüsseln für alles. Nein! Öffnen Sie ein 15 Jahre altes Datenbankbuch. Die Verwendung von natürlichen Schlüsseln überall bringt Sie definitiv in schwierige Situationen, da das anfängliche Verständnis der Problembereiche sich als falsch erweist. Sie möchten Konsistenz in Ihren Modellierungspraktiken haben, aber die Verwendung verschiedener Techniken für deutlich unterschiedliche Situationen ist in Ordnung.
Ich vermute, dass die Leistung für die meisten modernen Datenbanken auf var (2) Fremdschlüssel die gleichen (oder besser) als Int-Felder sein wird. Datenbanken unterstützen seit Jahren textuelle Fremdschlüssel.
Da wir keine weiteren Informationen über das Projekt haben, wenn Sie die Ländercodes als Fremdschlüssel verwenden möchten, und Sie die Möglichkeit dazu haben, würde ich sagen, dass es in Ordnung ist. Es wird einfacher sein, mit den Daten zu arbeiten. Es ist ein wenig gegen gängige Praktiken, aber - in diesem Fall - wird es dich nicht in irgendeine Ecke zurückversetzen.
Äthiopien hat seinen Namen geändert?!? – SeanJA
Verdammt das Telefon, machte mich mitten in der Eingabe dieser genauen Antwort. Gut gesagt! – Eric
@SeanJA: Laut diesem Link ja. Es könnte eine vorübergehende Änderung gewesen sein. – cletus