sql >> Database >  >> RDS >> Mysql

Database-ontwerp:samengestelde sleutel versus primaire sleutel met één kolom

Het klinkt alsof je gegevens verzamelt voor een telefoonboek. Ben jij? Waarom zijn staten belangrijk voor u? Het antwoord op deze vraag zal waarschijnlijk bepalen welk databaseontwerp het beste voor u werkt.

Je denkt misschien dat het duidelijk is wat een stad is. Het is niet. Het hangt ervan af wat u met de gegevens gaat doen. In de VS is er een eenheid genaamd MSA (Metropolitan Statistical Area). De Kansas City MSA omvat zowel Kansas City, Kansas als Kansas City, Missouri. Of de MSA-eenheid zinvol is of niet, hangt af van het beoogde gebruik van de gegevens. Als u netnummers in de VS zou gebruiken om steden te bepalen, zou u een heel andere groepering krijgen dan MSA's. Nogmaals, het hangt af van wat u met de gegevens gaat doen.

Wanneer hiërarchische patronen van politieke onderverdelingen kapot gaan, is de meest algemene oplossing over het algemeen om de relatie veel-op-veel te beschouwen. U lost dit probleem op dezelfde manier op als andere veel-op-veel problemen. Door een nieuwe tabel te maken, met twee externe sleutels. In dit geval zijn de refererende sleutels IdAreacode en IdStates.

Nu kunt u één landcode hebben in vele staten en één staat die vele netnummers omvat. Het lijkt zonde om deze extra overhead te accepteren om slechts één uitzondering te dekken. Weet u of de uitzondering die u hebt ontdekt slechts het topje van de ijsberg is, en dat er veel van dergelijke uitzonderingen zijn?



  1. Twee kolommen als primaire sleutels in mysql?

  2. Hoe kunnen beperkingen met externe sleutels tijdelijk worden uitgeschakeld met T-SQL?

  3. SentryOne-gegevens verzenden naar de Azure SQL Database DTU-calculator

  4. Aangepast inlogscherm maken in Oracle Forms 10g