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

Er det praktisk at normalisere en tabel dynamisk?

Det kommer lidt an på dit forbrug. Den normaliserede tilgang (park er en tabel) vil gøre følgende forespørgsler lettere:

  • Hvor mange fugleobservationer har der været for hver park
  • I hvilken park er det mest sandsynligt, at du ser fuglen XYZ
  • Der er sikkert en del flere forespørgsler som denne

Men ja, du løber ind i nogle klæbrige problemer. Mønsteret "hvis park XYZ ikke eksisterer, så indsæt det i parkbordet" lider af en racetilstand, som du bliver nødt til at håndtere.

Hvad med nogle argumenter imod normalisering her... De fleste kundedatabaser gemmer sandsynligvis min adresse som "123 Foo Street", uden at normalisere gadenavnet dynamisk (vi kunne have en vejtabel og sætte "Foo Street" der, og derefter henvise til det fra andre tabeller. Hvorfor bringer jeg dette op, for at vise, at selv de fyre, der hader gentagne data, nok vil erkende, at der er en grænse, du ikke nødvendigvis behøver at krydse.

Et andet dumt eksempel ville være, at vi måske deler efternavne. Har vi virkelig brug for en tabel for unikke efternavne og derefter fremmednøgle til den fra andre tabeller? Der kan være nogle applikationer, hvor dette er nyttigt, men for 99% af applikationerne derude, går dette for vidt. Det er bare mere arbejde og mindre ydende for ringe eller ingen gevinst.

Så jeg vil overveje, hvordan jeg vil være i stand til at forespørge data tilbage fra tabellen. Helt ærligt i dette tilfælde ville jeg nok lave et separat bord til parker. Men i andre tilfælde har jeg valgt ikke at gøre det.

Det er mine to øre, en øre efter skat.



  1. Når du bruger Symfonys ACL, er det så bedre at bruge en JOIN-forespørgsel eller en IN-array-forespørgsel?

  2. Sådan får du UTC Datetime fra UNIX_TIMESTAMP() i MySQL

  3. Postgresql OM KONFLIKT i sqlalchemy

  4. Tildeling af rettigheder til yderligere MySQL-database, der forårsager problemer