sql >> Database >  >> RDS >> Mysql

Is het praktisch om een ​​tabel dynamisch te normaliseren?

Het hangt een beetje van je gebruik af. De genormaliseerde aanpak (parkeren is een tafel) zal de volgende vragen gemakkelijker maken:

  • Hoeveel vogelwaarnemingen zijn er geweest voor elk park
  • In welk park heb je de meeste kans om vogel XYZ te zien
  • Er zijn waarschijnlijk nog veel meer van dit soort vragen

Maar ja, je loopt tegen een aantal plakkerige problemen aan. Het patroon "als park XYZ niet bestaat, plaats het dan in de parktafel" lijdt aan een raceconditie waarmee je te maken krijgt.

Nu, wat dacht je van enkele argumenten tegen normalisatie hier... De meeste klantendatabases slaan mijn adres waarschijnlijk op als "123 Foo Street", zonder de straatnaam dynamisch te normaliseren (we zouden een straattabel kunnen hebben en daar "Foo Street" plaatsen, en dan verwijzen waarom ik dit ter sprake breng, om te laten zien dat zelfs de jongens die een hekel hebben aan herhaalde gegevens waarschijnlijk zullen erkennen dat er een lijn is die je niet per se hoeft te overschrijden.

Een ander dwaas voorbeeld zou zijn dat we achternamen zouden kunnen delen. Hebben we echt een tabel nodig voor unieke achternamen en vervolgens een externe sleutel ernaar uit andere tabellen? Er kunnen enkele toepassingen zijn waarbij dit nuttig is, maar voor 99% van de toepassingen die er zijn, gaat dit te ver. Het is gewoon meer werk en minder performant voor weinig tot geen winst.

Dus ik zou overwegen hoe ik gegevens uit de tabel wil kunnen opvragen. Eerlijk gezegd zou ik in dit geval waarschijnlijk een aparte tafel maken voor parken. Maar in andere gevallen heb ik ervoor gekozen om dat niet te doen.

Dat zijn mijn twee cent, één cent na belastingen.



  1. php oci8 ext laadt niet Kan dynamische bibliotheek niet laden

  2. Hoe vind ik Unicode/niet-ASCII-tekens in een NTEXT-veld in een SQL Server 2005-tabel?

  3. Geparametriseerde dynamische SQL-query

  4. Voer een PostgreSQL .sql-bestand uit met behulp van opdrachtregelargumenten