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

Databasedesign:Sammensat nøgle vs primærnøgle i én kolonne

Det lyder som om du samler data til en telefonbog. Er du? Hvorfor er stater vigtige for dig? Svaret på dette spørgsmål vil sandsynligvis afgøre, hvilket databasedesign der vil fungere bedst for dig.

Du tror måske, at det er indlysende, hvad en by er. Det er ikke. Det afhænger af, hvad du skal med dataene. I USA er der denne enhed kaldet MSA (Metropolitan Statistical Area). Kansas City MSA spænder over både Kansas City, Kansas og Kansas City, Missouri. Hvorvidt MSA-enheden giver mening eller ej, afhænger af den tilsigtede brug af dataene. Hvis du brugte områdekoder i USA til at bestemme byer, ville du ende med en meget anden gruppering end MSA'er. Igen, det afhænger af, hvad du vil gøre med dataene.

Generelt, når hierarkiske mønstre af politiske underafdelinger bryder sammen, er den mest generelle løsning at overveje forholdet mange-til-mange. Du løser dette problem på samme måde, som du løser andre mange-til-mange problemer. Ved at oprette en ny tabel med to fremmednøgler. I dette tilfælde er fremmednøglerne IdAreacode og IdStates.

Nu kan du have én arecode i mange stater og én stat, der spænder over mange områdekoder. Det virker en skam at acceptere denne ekstra overhead for kun at dække én undtagelse. Ved du, om den undtagelse, du har afdækket, kun er toppen af ​​isbjerget, og der er mange sådanne undtagelser?



  1. Sådan fungerer REGEXP_INSTR() i MariaDB

  2. Opbygning af sikker offentlig API med PHP/MYSQL

  3. Få tællinger af alle tabeller i et skema

  4. Forbind med i Oracle SQL