sql >> Databáze >  >> RDS >> Mysql

Návrh databáze:Složený klíč vs. primární klíč s jedním sloupcem

Zní to, jako byste shromažďovali data pro telefonní seznam. Jsi ty? Proč jsou pro vás státy důležité? Odpověď na tuto otázku pravděpodobně určí, který návrh databáze vám bude nejlépe vyhovovat.

Možná si myslíte, že je jasné, co je město. To není. Záleží na tom, co s daty budete dělat. V USA existuje tato jednotka nazvaná MSA (Metropolitan Statistical Area). Kansas City MSA zahrnuje Kansas City, Kansas a Kansas City, Missouri. Zda jednotka MSA dává smysl, nebo ne, závisí na zamýšleném použití dat. Pokud byste k určování měst použili předvolby v USA, skončili byste s velmi odlišným seskupením než MSA. Opět záleží na tom, co budete s daty dělat.

Obecně, kdykoli se rozpadají hierarchické vzorce politických pododdělení, nejobecnějším řešením je uvažovat o vztahu mnoho k mnoha. Tento problém řešíte stejným způsobem, jako řešíte jiné problémy typu many-to-many. Vytvořením nové tabulky se dvěma cizími klíči. V tomto případě jsou cizí klíče IdAreacode a IdStates.

Nyní můžete mít jeden arecode v mnoha státech a jeden stát zahrnující mnoho kódů oblasti. Zdá se, že je škoda přijmout tuto dodatečnou režii na pokrytí pouze jedné výjimky. Víte, zda výjimka, kterou jste odhalili, je jen špičkou ledovce a takových výjimek je mnoho?



  1. Duplicitní záznam „0“ pro klíč „PRIMARY“

  2. Chybné znaky při tisku textu z tabulky utf8_unicode_ci Mysql

  3. Změní se ID prostředku při každém spuštění aplikace

  4. MySql:Zobrazit sloupce, ale vyloučit vše kromě názvů polí