sql >> Database >  >> RDS >> Mysql

Is het gebruik van char als primaire/buitenlandse sleutel een nee nee?

Prestaties zijn niet echt het belangrijkste probleem, althans niet voor mij. Het probleem gaat meer over surrogaat versus natuurlijke sleutels.

Landcodes zijn niet statisch. Ze kunnen en zullen veranderen. Landen veranderen namen (bijv. Ethiopië naar Eritrea). Ze ontstaan ​​(bijvoorbeeld het uiteenvallen van Joegoslavië of de Sovjet-Unie) en houden op te bestaan ​​(bijvoorbeeld West- en Oost-Duitsland). Wanneer dit gebeurt, verandert de ISO-standaardcode.

Meer in Naamswijzigingen sinds 1990:landen, steden en meer

Surrogaatsleutels zijn meestal beter omdat wanneer deze gebeurtenissen plaatsvinden, de sleutels niet veranderen, alleen kolommen in de referentietabel.

Om die reden zou ik eerder geneigd zijn om land- en valutatabellen te maken met een primaire sleutel int.

Dat gezegd hebbende, varchar-sleutelvelden nemen meer ruimte in beslag en hebben bepaalde prestatienadelen die waarschijnlijk geen probleem zullen zijn, tenzij u een groot aantal zoekopdrachten uitvoert.

Voor de volledigheid kun je verwijzen naar Fouten bij het ontwikkelen van databases gemaakt door AppDevelopers .



  1. MySQL Fire Trigger voor zowel invoegen als bijwerken

  2. Hulp bij een MySql-query - De rijen met het groepsgewijze maximum van een bepaalde kolom

  3. Hoe u een tabel in PostgreSQL kunt draaien

  4. Master-Master MySQL-databasereplicatie configureren