sql >> Database >  >> RDS >> Oracle

Is het echt beter om genormaliseerde tabellen te gebruiken?

Het hangt ervan af ... het samenvoegen van tabellen is inherent langzamer dan het hebben van één grote tafel die 'vooraf is samengevoegd', dat wil zeggen gedenormaliseerd. Door echter te denormaliseren, gaat u gegevensduplicatie creëren en worden uw tabellen groter. Normalisatie wordt als een goede zaak gezien, omdat het databases creëert die 'elke' vraag kunnen beantwoorden. Als het goed wordt gedaan, kun je een select maken om bij je gegevens te komen. Dit is niet het geval in sommige andere vormen van DB, en dat zijn nu (meestal) historische irrelevanties, de genormaliseerde/relatie DB heeft die strijd gewonnen.

Terug naar je vraag, het gebruik van de-normalisatie om dingen sneller te laten gaan is een algemeen aanvaarde techniek. Het is normaal gesproken het beste om uw DB een tijdje te laten draaien, zodat u weet wat u moet de-normaliseren en wat u met rust moet laten, en het is ook gebruikelijk om de gegevens in de 'juiste' genormaliseerde vorm te laten en gegevens in een reeks gedenormaliseerde rapportages te trekken regelmatig tafels. Als dat proces wordt uitgevoerd als onderdeel van de rapportrun zelf, zijn de gegevens ook altijd up-to-date.

Als voorbeeld van overnormalisatie heb ik in het verleden DB's gezien waar de dagen van de week en maanden van het jaar in aparte tabellen werden uitgetrokken - datums zelf werden genormaliseerd - je kunt te ver gaan.



  1. Complexe SQL-query met meerdere tabellen en relaties

  2. Nieuwe Oracle-compatibiliteitsfuncties in PostgresPlus Advanced Server 9.3Beta

  3. ORA-00918:kolom dubbelzinnig gedefinieerd in SELECT *

  4. Een kolom bijwerken in MySQL