Matze: DB-Struktur übernehmen

Beitrag lesen

Denormalisierung hat mit der Zerlegung reeller Informationen in eine für die Datenbank Sinnvolle "Format" zu tun.

Als Beispiel:

Tabelle adresse

Vorname Name Strasse Wohnort PLZ Land

denormalisiert könnte es so ausehen:

vname_id name_id Strasse_id wohnort_id PLZ_id Land_id

die jeweiligen Werte verweisen auf die Id der einträge einer entsprechenden Tabelle mit einer Liste an vornamen nachnamen usw.

Dies ist ein extremes Beispiel soll aber verdeutlichen was damit gemeint ist.

Mit einer denormalisierung werden Referenzen auf andree Datenstämme gebildet und der eigentlich Datensatz entsprechend zerissen.

Der vorteil daran ist, dass sich wiederholende Inhalte mit einer id Referenziert wird. die ist typischerweise eine Zahl DB Systeme kommen damit am besten zurecht und liefern eine gute performance in umfassenderen Select statements. Mit der Reduzierung eines Character inhaltes auf einen Verweis einer Id kann sehr vil speicher sparen.

Ausserdem kann eine Information z.B. Vorname wenn er öfters benötigt wird in einer einzigen Tabelle gepflegt werden. in den weitern Tabellen wo man diesen Namen benötigt verweisst man dann auf die id evneutell 4 Stellige Nummer anstatt z.B. Hans Joachim. Damit vermeidet man Redundanzen und unotigen speicherverbrauch in DB Systemen.

Für das obige Beispiel hört sich das ziemlich unsinnig an. Ist es vermutlich auch aber bei vielen anderen Anforderungen wo viele  Informationen doppelt und dreifach oder öfters benötigt wird erspart die viel arbeit.

Stelle sich man mal vor, das Finanzamt würde die Steuer für einen BMW 320 i Bauhreihe E36 um 3 Prozent erhöhen.

Dann müsste bei einem schlechten sehr reelen Db Design bei allen 2,5 Millionen (-> nur ein Beispiel Wert) DB Einträgen zu dem jeweiligen Fahrzeu der Wert erhöht werden. Nehmen wir an die Tabelle sieht wie folgt aus.

Halter Fahrzeug_typ Hersteller Steuersatz

währedn wenn die Fahrzeuge typen in einer seperaten Tabelle stehen würden und dort auch der Steuersatz von 7,9 %
dann konnten man mit referenz auf die Id schon ein paar Megabite sparen.

Ich bin mir unsicher, wieviel bit ein Char Zeichen hat aber trotzdem sollte die erparniss erkennbar sein oder?

Das gleich ist dann in einer suche nach Haltern mit dem bestimmten Fahrzeug der Fall, während man in erster Tabelle eine gross Liste in den Ram ladet mit der Information des Fahrzeuges und des Halters kann man per Id schneller und effizienter die Halter ermitteln.

Die DB kann leichter und besser Zahlen vergleichen als Buchstaben.

Diesen Vorgang der Zerlegung nennt man Denormlaisierung. ein reeller Bezug ist dann gegeben, wenn in einer Tabelle der Datensatz vollständig erscheint und einen reellen Bezug hat.

Die Daten sind deshalb nicht unreal oder falsch.