sql >> Databasteknik >  >> RDS >> Mysql

Är det nej nej att använda char som primär/främmande nyckel?

Prestanda är egentligen inte huvudfrågan, åtminstone inte för mig. Frågan handlar mer om surrogat vs naturliga nycklar.

Landskoder är inte statiska. De kan och förändras. Länder byter namn (t.ex. Etiopien till Eritrea). De uppstår (t.ex. Jugoslaviens eller Sovjetunionens upplösning) och de upphör att existera (t.ex. Väst- och Östtyskland). När detta händer ändras ISO-standardkoden.

Mer i Namnändringar sedan 1990:Länder, städer och mer

Surrogatnycklar tenderar att vara bättre för när dessa händelser inträffar ändras inte nycklarna, bara kolumner i referenstabellen gör det.

Av den anledningen skulle jag vara mer benägen att skapa land- och valutatabeller med en int-primärnyckel istället.

Med detta sagt kommer varchar-nyckelfält att använda mer utrymme och ha vissa prestandanackdelar som förmodligen inte kommer att vara ett problem om du inte utför ett stort antal frågor.

För fullständighetens skull kanske du vill hänvisa till Databasutvecklingsmisstag gjorda av apputvecklare .



  1. Uppföljare:multipla where-sats

  2. MySQL-fråga för att hitta kunder som har beställt två specifika produkter

  3. PostgreSQL skickar data från rekursiv CTE till funktion

  4. Avslutat Java-projekt, skapar nu jar- eller .exe-fil (med databas)