Normalisieren und Denormalisieren

Eine Normalisierung dient dazu, eine redundanzfreie, speicherminimale Datenbasis zu modellieren. Eine zweckmäßige Denormalisierung einer normalisierten Datenbasis wird durch Zusammenführen und Aufteilen von Datenbanktabellen erreicht.

Einführung

Eine Normalisierung dient dazu, eine redundanzfreie, speicherminimale Datenbasis zu modellieren. Mit der Erstellung eines konzeptionellen Modells in einem Entitäten-Beziehungsmodell (Entity Relationship Model) erreichen Sie leicht die 3. Normalform, wenn Sie transitive oder direkte Abhängigkeiten von Attributen in einer Entität vermeiden. Die 3. Normalform ist der praxisnahe Standard in realen Projekten.

Ein normalisiertes ER-Modell wird durch ein initiales Mapping in ein strukturgleiches Datenbankmodell übertragen, was somit eine ebenfalls normalisierte Datenbasis darstellt. Das Mapping verknüpft dabei die korrespondierenden Elemente (Entität und Tabelle, Attribut und Tabellenspalte) mit Abhängigkeiten.

Wenn aus irgendeinem Grunde denormalisiert werden muss, dann realisieren Sie dies im Datenbankmodell durch Zusammenführen von Tabellen und Aufteilen von Tabellen nach Spalten oder Zeilen. Dies kann dazu führen, dass Attribute einer Entität in mehreren Datenbanktabellen abgebildet werden. Ebenso kann eine Datenbanktabelle die Datenbasis für mehrere Entitäten bilden. Durch den Erhalt der Mapping-Abhängigkeiten wird der Zusammenhang zwischen ER-Modell und DB-Modell weiterhin vollständig dokumentiert.

Das Zusammenführen von Tabellen zum Zwecke des Denormalisierens kann durch Aufteilen in die ursprünglichen Tabellen zurückgenommen werden. Sind mehr als zwei Tabellen in einer zusammengeführt worden, dann sind zwei Fälle zu unterscheiden. Wenn ein korrespondierendes konzeptionelles Schema vorhanden ist, dann wird ausgehend von der ausgewählten führenden Tabelle die stufenweise Aufteilung in weitere Tabellen aus diesem Schema abgeleitet. Bei eigenständigen Datenbankschemata obliegt die Auswahl der weiteren aufzuteilenden Tabellen der Intention des Benutzers.

Denormalisieren im Datenbankdiagramm

Sie denormalisieren in Innovator for Information Architects im Datenbankdiagramm.

Zusammenführen von Tabellen über einen Fremdschlüssel zum eindeutigen Schlüssel (Roll Up)

So gehen Sie vor

  1. Selektieren Sie die Fremdschlüsselkante, die die zusammenzuführenden Tabellen verbindet.

  2. Wählen Sie im Kontextmenü Zusammenführen>Zum eindeutigen Schlüssel>Anzahl (1-64).

    Die Spalten der Fremdschlüsseltabelle werden in die Tabelle mit dem eindeutigen Schlüssel übernommen (ein Satz pro Anzahl des Befehls).

    Die verbleibende Tabelle enthält ein Element vom Typ Aufgenommene Tabelle mit dem Merkmal Richtung "zum Primärschlüssel".

    Die verschobenen Spalten bekommen alle die Null-Eigenschaft "null".

    Die Spalten des Fremdschlüssels werden zu den jeweiligen Spalten des referenzierten Schlüssels zusammengeführt.

    Die Tabelle des Fremdschlüssels wird gelöscht.

Zusammenführen von Tabellen über einen Fremdschlüssel zum Fremdschlüssel (Roll Down)

So gehen Sie vor

  1. Selektieren Sie die Fremdschlüsselkante, die die zusammenzuführenden Tabellen verbindet.

  2. Wählen Sie im Kontextmenü Zusammenführen>Zum Fremdschlüssel.

    Die Spalten der Tabelle mit dem referenzierten Schlüssel werden in die Tabelle mit dem Fremdschlüssel übernommen.

    Die verbleibende Tabelle enthält ein Element vom Typ Aufgenommene Tabelle mit dem Merkmal Richtung "zum Fremdschlüssel".

    Die verschobenen Spalten behalten ihre Null-Eigenschaft, es sei denn, dass es ein optionaler Fremdschlüssel war. Wenn Tabellen zu einem optionalen Fremdschlüssel zusammengeführt werden, dann bekommen alle aufgenommenen Spalten die Null-Eigenschaft "null".

    Die Spalten des referenzierten Schlüssels werden zu den jeweiligen Spalten des Fremdschlüssels zusammengeführt.

    Die Tabelle des eindeutigen Schlüssels wird gelöscht.

Zusammenführen von Geschwistertabellen (Merge)

So gehen Sie vor

  1. Selektieren Sie zwei Datenbanktabellen, die je einen mit "Z" markierten Fremdschlüssel zur selben Tabelle haben.

  2. Wählen Sie im Kontextmenü Zusammenführen>Geschwistertabellen.

    Die Spalten der zweitselektierten Tabelle werden in die erstselektierte Tabelle übernommen.

    Die verbleibende Tabelle enthält ein Element vom Typ Aufgenommene Tabelle mit dem Merkmal Richtung "zum Geschwister".

    Alle Spalten beider Tabellen bekommen die Null-Eigenschaft "null".

    Die Primärschlüssel werden zu einem verschmolzen.

    Die zweitselektierte Tabelle wird gelöscht.

Aufteilen einer Tabelle nach Zeilen (Horizontal Split)

So gehen Sie vor

  1. Selektieren Sie eine Datenbanktabelle.

  2. Wählen Sie im Kontextmenü Aufteilen>Zeilen.

    Eine Kopie der Tabelle mit identischen Spalten und Fremdschlüssel entsteht.

    Fremdschlüssel, die die Tabelle vorher referenziert haben, werden zu je zwei optionalen Fremdschlüsseln; einer referenziert die alte Tabelle und einer die neue.

Aufteilen einer Tabelle nach Spalten (Vertical Split)

So gehen Sie vor

  1. Selektieren Sie im Abschnittsinhalt der Tabellenspalten einer Datenbanktabelle ein oder mehrere Tabellenspalten.

  2. Wählen Sie im Kontextmenü Aufteilen>Spalten.

    Eine neue Tabelle entsteht, in die die selektierten Spalten verschoben werden. Die neue Tabelle erhält zusätzlich eine Kopie des Primärschlüssels, dessen Spalten gleichzeitig einen Fremdschlüssel auf die alte Tabelle bilden.

Zusammengeführte Tabellen wieder aufteilen

Zusammenhang

Im Datenbankdiagramm können Sie zusammengeführte Datenbanktabellen wieder aufteilen. Sie machen damit die oben genannten Zusammenführungen von Tabellen stufenweise rückgängig.

  • Wenn zwei Tabellen in einer zusammengeführt wurden, dann werden diese Tabellen mit dem Kontextmenübefehl Aufteilen>Tabelle direkt wieder so aufgeteilt.

  • Wenn mehr als zwei Tabellen in einer zusammengeführt wurden, dann erscheint ein Dialog, in dem Sie die führende Tabelle auswählen können.

    • Wenn ein korrespondierendes konzeptionelles Schema vorhanden ist, dann wird ausgehend von der ausgewählten führenden Tabelle die stufenweise Aufteilung und Zuordnung weiterer Tabellen aus diesem Schema abgeleitet. Deshalb werden keine weiteren Tabellen zur Auswahl angeboten.

    • Bei eigenständigen Datenbankschemata obliegt die Auswahl der weiteren Tabellen der Intention des Benutzers. Die ausgewählten Tabellen werden mit der führenden Tabelle zu einer separaten Tabelle zusammengeführt und diese wird über eine Fremdschlüsselkante mit der aufgeteilten Tabelle verbunden. Nicht ausgewählte Tabellen verbleiben in der selektierten Tabelle.

Hinweis

Beim Aufteilen einer zusammengeführten Tabelle wird standardmäßig der Name der aufgenommenen Tabelle für die neue Tabelle verwendet. Wenn die Tabellen durch automatisches Mapping gepflegt werden, dann wird der Name aus der verknüpften Entität abgeleitet.

So gehen Sie vor

  1. Selektieren Sie eine zusammengeführte Datenbanktabelle. Zusammengeführte Datenbanktabellen haben die Eigenschaft "hat aufgenommen".

  2. Wählen Sie im Kontextmenü Aufteilen>Tabelle.

    Wenn die Tabelle genau eine Tabelle aufgenommen hat, dann wird diese wieder ausgegliedert.

    Wenn die Tabelle mehrere Tabellen aufgenommen hat, dann erscheint der Dialog Tabelle '{0}' aufteilen.

  3. Wählen Sie in der Auswahlliste Führende Tabelle die führende Tabelle aus.

    Wenn das Datenbankschema aus dem konzeptionellen Schema abgeleitet wurde, dann wird die Zuordnung weiterer Tabellen aus dem konzeptionellen Schema abgeleitet.

    Andernfalls enthält der Dialog zusätzlich die Liste Weitere Tabellen. Aktivieren Sie die Auswahlfelder der Tabellen, die mit der führenden Tabelle in eine Tabelle abgespalten werden sollen. Nicht ausgewählte Tabellen verbleiben in der selektierten Tabelle.

    Bestätigen Sie die Auswahl mit OK.

    Die Aufteilung wird im Diagramm angezeigt.