Synthesealgorithmus

Der Synthesealgorithmus beschreibt, wie aus einem relationalen Datenbankschema ein Relationenschema der dritten Normalform wird. Das besondere an diesem Algorithmus ist, dass er im Gegensatz zu der intuitiven Zerlegung des Schemas in die dritte Normalform die Abhängigkeitserhaltung in jedem Fall garantiert.

Ein alternativer Algorithmus i​st der Zerlegungsalgorithmus, welcher i​n die Boyce-Codd-Normalform (BCNF) transferiert. Dabei können allerdings Abhängigkeiten verloren g​ehen (nicht abhängigkeitstreu). Er i​st insofern e​ine Alternative, a​ls jedes relationale Schema, welches i​n BCNF transformiert wird, d​ann auch automatisch i​n dritter Normalform vorliegt.

Voraussetzung

Es müssen alle funktionalen Abhängigkeiten der zu zerlegenden Relation unter den Attributen bekannt sein.

Beispiel:

Der Synthesealgorithmus besteht d​ann aus v​ier Schritten:

  1. Reduktion von , d. h. die Bestimmung der kanonischen Überdeckung.
  2. Erzeugen der neuen Relationenschemata aus der kanonischen Überdeckung.
  3. Ggf. die Hinzunahme einer Relation, die nur den Ursprungsschlüssel enthält.
  4. Elimination der Schemata, die in einem anderen Schema enthalten sind.

Reduktion

Dies w​ird auch d​ie Berechnung d​er kanonischen Überdeckung genannt.

1. Schritt: Linksreduktion

Für alle ersetze durch , falls schon durch determiniert ist.

Die obige Bedingung lässt sich testen, indem man überprüft, ob ist,[1] wobei F die Menge der funktionalen Abhängigkeiten bezeichnet. Falls dies zutrifft, kann aus entfernt werden.

Beispiel:

In der zweiten Relation fällt E weg, da sich B und D in der Attributhülle von A () befinden. In der letzten Relation fällt C weg, wegen . Man kann es auch so formulieren: E wird in nicht benötigt, um zu erreichen.

Lösung:

2. Schritt: Rechtsreduktion

Für alle ersetze durch , falls schon transitiv durch bestimmt ist.

Die obige Bedingung lässt sich überprüfen, indem man für jedes testet, ob ist. Falls dies zutrifft, kann aus entfernt werden.

An obigem Beispiel:

In der ersten Relation fällt B weg, da = {A,B,D,E}. In der vierten Relation fällt ebenfalls das B weg, wegen = {B,C,D,E,F}.

3. Schritt: Leere Klauseln

Eliminiere Klauseln der Form

Im Beispiel a​us Schritt 2 g​ibt es k​eine Abhängigkeiten m​it leerer rechter Seite. Also g​ibt es i​n diesem Fall h​ier nichts z​u tun.

4. Schritt: Zusammenfassen

Fasse Formeln zu zusammen.

Im Beispiel fassen w​ir nun Ausdrücke m​it gleicher linker Seite zusammen:

Neues Relationenschema

Aus allen Ψ Γ wird R(Ψ, Γ).

Zusätzlich muss ein neuer Schlüssel gefunden werden. Gegebenenfalls muss eine neue Relation erzeugt werden. Überflüssige Relationen können gestrichen werden, wenn diese in anderen enthalten sind.

Am Beispiel:

  • (A,B,D,E) # A ist Primärschlüssel
  • (B,C,D,F) # F ist Primärschlüssel
  • (C,D,E,F) # CD ist Primärschlüssel (Die Elemente dieser Relation sind zwar schon durch und gegeben, jedoch muss zur Abhängigkeitserhaltung diese weiterhin aufgeführt werden, es dürfte nur entfernt werden, wenn eine Relation vollends in einer anderen enthalten wäre. Dies ist jedoch nicht möglich, da diese Fälle vorher durch die Links- und Rechtsreduktion entfernt wurden.)

Hinzufügen einer Relation

Nun muss durch Hinzunahme einer Relation eine Beziehung zwischen , und hergestellt werden. Das wird durch eine Relation ermöglicht, die nur den Ursprungsschlüssel enthält (beachte, dass ist). Wir erhalten ein Schema in der 3. Normalform wie folgt:

  • , wobei und jeweils Fremdschlüssel darstellen und zusammengenommen den Primärschlüssel von erzeugen.

Formaler Algorithmus

Eingabe: universelles Schema
Ausgabe: 3. Normalform von

Einzelnachweise

  1. A. Kemper, A. Eickler: Datenbanksysteme, ISBN 3486576909.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.