sql >> Databasteknik >  >> RDS >> Oracle

Är det verkligen bättre att använda normaliserade tabeller?

Det beror på ... att gå med i tabeller är i sig långsammare än att ha ett stort bord som är "föranslutet", dvs avnormaliserat. Men genom att avnormalisera kommer du att skapa dataduplicering och dina tabeller kommer att bli större. Normalisering ses som en bra sak, eftersom det skapar databaser som kan svara på "alla" frågor, om det görs på rätt sätt kan du bygga ett urval för att komma till din data. Detta är inte fallet i vissa andra former av DB, och det är nu (för det mesta) historiska irrelevanser, den normaliserade/relationen DB vann den kampen.

Tillbaka till din fråga, att använda avnormalisering för att få saker att gå snabbare är en väl accepterad teknik. Det är normalt bäst att köra din DB ett tag så att du vet vad du ska avnormalisera och vad du ska lämna ifred, och det är också vanligt att lämna data i sin "korrekta" normaliserade form och dra data till en uppsättning avnormaliserade rapporter bord regelbundet. Om den processen görs som en del av själva rapportens körning är uppgifterna också alltid uppdaterade.

Som ett exempel på övernormalisering har jag sett DB:er tidigare där veckodagarna och årets månader drogs ut i separata tabeller - själva datumen normaliserades - du kan gå för långt.



  1. MySQL startar inte

  2. Hur man skriver en .Net-applikation som fungerar med både SqlServer och Oracle (nu när System.Data.OracleClient är utfasad)

  3. Hur kör jag en lagrad procedur en gång för varje rad som returneras av en fråga?

  4. ISO-8859-1-tecken trunkerar text som infogas i utf-8 mysql-kolumn