sql >> Database >  >> RDS >> Mysql

MySQL:meerdere tabellen of één tabel met veel kolommen?

Elke keer dat informatie één-op-één is (elke gebruiker heeft één naam en wachtwoord), is het waarschijnlijk beter om het in één tabel te hebben, omdat het het aantal joins vermindert dat de database nodig heeft om resultaten op te halen. Ik denk dat sommige databases een limiet hebben voor het aantal kolommen per tabel, maar in normale gevallen zou ik me daar geen zorgen over maken, en je kunt het altijd later splitsen als dat nodig is.

Als de gegevens één-op-veel zijn (elke gebruiker heeft duizenden rijen met gebruiksinformatie), moet deze worden opgesplitst in afzonderlijke tabellen om dubbele gegevens te verminderen (dubbele gegevens verspillen opslagruimte, cacheruimte en maken de database moeilijker te onderhouden ).

Mogelijk vindt u het Wikipedia-artikel over databasenormalisatie interessant, aangezien de redenen hiervoor uitgebreid worden besproken:

Databasenormalisatie is het proces van het organiseren van de velden en tabellen van een relationele database om redundantie en afhankelijkheid te minimaliseren. Normalisatie omvat meestal het verdelen van grote tabellen in kleinere (en minder overbodige) tabellen en het definiëren van relaties daartussen. Het doel is om gegevens te isoleren, zodat toevoegingen, verwijderingen en wijzigingen van een veld in slechts één tabel kunnen worden gedaan en vervolgens via de gedefinieerde relaties door de rest van de database kunnen worden verspreid.

Denormalisatie is ook iets om rekening mee te houden, omdat er gevallen zijn waarin het herhalen van gegevens beter is (omdat het de hoeveelheid werk die de database moet doen bij het lezen van gegevens vermindert). Ik raad je ten zeerste aan om je gegevens zo genormaliseerd mogelijk te maken om te beginnen, en alleen te denormaliseren als je op de hoogte bent van prestatieproblemen bij specifieke zoekopdrachten.



  1. Proberen eigendom van niet-object in te krijgen

  2. hoe gebruik je check constraint in oracle?

  3. Een datum-/tijdwaarde converteren naar een tekenreeks in SQL Server met CONVERT()

  4. Aqua Data Studio