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

Er brug af char som primær/fremmednøgle et nej nej?

Ydeevne er egentlig ikke hovedproblemet, i hvert fald ikke for mig. Spørgsmålet handler mere om surrogat vs naturlige nøgler.

Landekoder er ikke statiske. De kan og ændrer sig. Lande skifter navn (f.eks. Etiopien til Eritrea). De bliver til (f.eks. Jugoslaviens eller Sovjetunionens opløsning), og de ophører med at eksistere (f.eks. Vest- og Østtyskland). Når dette sker, ændres ISO-standardkoden.

Mere i Navneændringer siden 1990:Lande, byer og mere

Surrogatnøgler har en tendens til at være bedre, fordi når disse begivenheder sker, ændres nøglerne ikke, kun kolonner i referencetabellen gør.

Af den grund ville jeg være mere tilbøjelig til at oprette lande- og valutatabeller med en int-primærnøgle i stedet for.

Når det er sagt, vil varchar-nøglefelter bruge mere plads og have visse ydeevnemæssige ulemper, som sandsynligvis ikke vil være et problem, medmindre du udfører et stort antal forespørgsler.

For fuldstændighedens skyld kan du henvise til Databaseudviklingsfejl lavet af appudviklere .



  1. mysql Flere fremmednøgler i en tabel til den samme primærnøgle

  2. 12c Forældede funktioner

  3. Slet alle rækker undtagen første N fra en tabel med en enkelt kolonne

  4. Sådan får du det korte månedsnavn fra en dato i MySQL