sql >> Databasteknik >  >> RDS >> Mysql

Databasdesign:Sammansatt nyckel kontra primärnyckel för en kolumn

Det låter som att du samlar in data för en telefonkatalog. Är du? Varför är stater viktiga för dig? Svaret på denna fråga kommer förmodligen att avgöra vilken databasdesign som fungerar bäst för dig.

Du kanske tycker att det är uppenbart vad en stad är. Det är inte. Det beror på vad du ska göra med datan. I USA finns den här enheten som kallas MSA (Metropolitan Statistical Area). Kansas City MSA sträcker sig över både Kansas City, Kansas och Kansas City, Missouri. Huruvida MSA-enheten är vettig eller inte beror på den avsedda användningen av data. Om du använde riktnummer i USA för att bestämma städer, skulle du sluta med en helt annan gruppering än MSA. Återigen, det beror på vad du ska göra med datan.

I allmänhet när hierarkiska mönster av politiska underavdelningar går sönder, är den mest allmänna lösningen att överväga förhållandet många-till-många. Du löser det här problemet på samma sätt som du löser andra många-till-många-problem. Genom att skapa en ny tabell, med två främmande nycklar. I det här fallet är de främmande nycklarna IdAreacode och IdStates.

Nu kan du ha en arecode i många stater och en stat som spänner över många riktnummer. Det verkar synd att acceptera denna extra omkostnad för att täcka bara ett undantag. Vet du om undantaget du har upptäckt bara är toppen av ett isberg, och det finns många sådana undantag?



  1. Prestanda för tabellvariabler i SQL Server

  2. MySQL:varför varchar(254) och inte varchar(255)?

  3. Laravel ordning resultat efter kolumn på polymorf tabell

  4. Enkelt sätt att beräkna median med MySQL