sql >> Base de Datos >  >> RDS >> Mysql

¿Usar char como clave principal/foránea es no no?

El rendimiento no es realmente el problema principal, al menos no para mí. El problema es más acerca de las claves sustitutas frente a las naturales.

Los códigos de países no son estáticos. Pueden y cambian. Los países cambian de nombre (por ejemplo, Etiopía a Eritrea). Surgen (por ejemplo, la desintegración de Yugoslavia o la Unión Soviética) y dejan de existir (por ejemplo, Alemania Occidental y Oriental). Cuando esto sucede, el código estándar ISO cambia.

Más en Cambios de nombre desde 1990:países, ciudades y más

Las claves sustitutas tienden a ser mejores porque cuando ocurren estos eventos, las claves no cambian, solo lo hacen las columnas en la tabla de referencia.

Por esa razón, me inclinaría más por crear tablas de países y monedas con una clave principal int.

Dicho esto, los campos de clave varchar usarán más espacio y tendrán ciertas desventajas de rendimiento que probablemente no serán un problema a menos que esté realizando una gran cantidad de consultas.

Para completar, puede consultar Errores de desarrollo de bases de datos cometidos por desarrolladores de aplicaciones .