Mysql
 sql >> Database >  >> RDS >> Mysql

L'uso di char come chiave primaria/estranea è un no?

Le prestazioni non sono davvero il problema principale, almeno non per me. Il problema riguarda più il surrogato che le chiavi naturali.

I codici paese non sono statici. Possono e cambiano. I paesi cambiano nome (es. Etiopia in Eritrea). Nascono (ad es. la dissoluzione della Jugoslavia o dell'Unione Sovietica) e cessano di esistere (ad es. Germania occidentale e orientale). Quando ciò accade, il codice standard ISO cambia.

Altro in Cambiamenti di nome dal 1990:Paesi, città e altro

Le chiavi surrogate tendono ad essere migliori perché quando si verificano questi eventi le chiavi non cambiano, solo le colonne nella tabella di riferimento lo fanno.

Per questo motivo sarei più propenso a creare invece tabelle di paesi e valute con una chiave primaria int.

Detto questo, i campi chiave varchar utilizzeranno più spazio e presenteranno alcuni svantaggi in termini di prestazioni che probabilmente non costituiranno un problema a meno che tu non stia eseguendo un numero enorme di query.

Per completezza, puoi fare riferimento a Errori di sviluppo del database commessi dagli sviluppatori di app .