Ich würde INT-IDs als Schlüssel anstelle von ISO-Codes verwenden und Ihnen erklären, warum:
Die Organisation, für die ich gearbeitet habe, verwendet "eigene Währung" (LBP) - z.B. wenn ein Benutzer eine Transaktion durchführt, erhält er einen bestimmten Betrag LBP als Bonus. Darüber hinaus kann er diese LBPs in USD, EUR usw. umtauschen und umgekehrt, mit LBPs für Dienstleistungen bezahlen usw. Außerdem habe ich die Währung BTC (Bitcoin) nicht im ISO-Standard gefunden.
Ja, dies sind keine offiziellen Währungen, aber es ist aus Sicht des Systems und der Benutzer flexibler, sie als Währungen zu haben und nicht als zusätzliches Produkt, das der Benutzer kaufen und verkaufen kann.
Die Organisation, für die ich gearbeitet habe, verwendet keine INTS als Primärschlüssel, sie verwendet ISO-Codes als IDs (zusätzlich zu diesen zusätzlichen Währungen).
Offiziell ist LBP der ISO-Standard für das Libanesische Pfund - daher werden sie das Libanesische Pfund nicht reibungslos in das System integrieren können.
Wenn Sie Ihre Währungen anhand des Codes identifizieren und in Zukunft eine neue Währung als ISO-Standard registriert wird (sagen wir, LBE oder BTC) - dann werden diese Währungen mit "Ihren" Währungen in Konflikt geraten.
Jemand hat hier erwähnt, dass ein zusätzlicher INT-Schlüssel für Währungen einen zusätzlichen Index darstellt. Aber entschuldigen Sie, ist das ein Problem für 300 Datensätze (ungefähre Anzahl der Währungen)? Außerdem hat die Verwendung von INTs als Primärschlüssel für Währungen einen zusätzlichen Vorteil: Stellen Sie sich eine Tabelle mit 1M Transaktionen vor, die Beträge und Währungen enthält, und was ist effizienter: INTs oder CHARS?
Also würde ich mich für INTs entscheiden.