Synthesealgorithmus-Normalform

Synthesealgorithmus-Normalform

Die Synthesealgorithmus-Normalform beschreibt, wie aus einem Datenbankentwurf ein Relationenschema der dritten Normalform wird.

Ein alternativer Algorithmus ist der Zerlegungsalgorithmus, welcher in die Boyce-Codd-Normalform (BCNF) transferiert. Dabei können allerdings Abhängigkeiten verloren gehen (nicht abhängigkeitstreu).

Inhaltsverzeichnis

Voraussetzung

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

Beispiel:

  • R = Relation(A,B,C,D,E,F)
  • F = { {A} → {B,E}, {A,E} → {B,D}, {F} → {C,D}, {C,D} → {B,E,F}, {C,F} → {B} }

Der Synthesealgorithmus besteht dann aus vier Schritten:

  1. Reduktion von F, 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 wird auch die Berechnung der kanonischen Überdeckung genannt.

1.Schritt: Linksreduktion

Für alle \psi  \in \Psi ersetze \Psi \rightarrow \Gamma durch \Psi  \setminus \{\psi\} \rightarrow \Gamma , falls Γ schon durch  \Psi \setminus \{\psi\} \rightarrow \Gamma determiniert ist.

Die obige Bedingung lässt sich testen, indem man überprüft, ob \psi \in AttributHuelle(F, \Psi \setminus \{\psi\}) ist, wobei F die Menge der funktionalen Abhängigkeiten bezeichnet. Falls dies zutrifft, kann ψ aus Ψ entfernt werden.

Beispiel: Relation\left(A,B,C,D,E,F\right)

  • A \rightarrow B,E
  • A\mathbf{E} \rightarrow B,D
  • F \rightarrow C,D
  • CD \rightarrow B,E,F
  • \mathbf{C}F \rightarrow B

In der zweiten Relation fällt E weg, da sich E in der Attributehülle von A (A + = {A,B,D,E}) befindet. In der letzten Relation fällt C weg, wegen F + = {B,C,D,E,F}. Man kann es auch so formulieren: E wird in AE \rightarrow B,D nicht benötigt, um B,D zu erreichen. B,D befinden sich auch in der Attributehülle von A (A + = {A,B,E,D}) wobei E zum Aufbau dieser Hülle benötigt wird (A + = {A} \cup {B,E} \cup {B,D}).

Lösung:

  • A \rightarrow B,E
  • A \rightarrow B,D
  • F \rightarrow C,D
  • CD \rightarrow B,E,F
  • F \rightarrow B

2.Schritt: Rechtsreduktion

Für alle \gamma \in \Gamma ersetze \Psi \rightarrow \Gamma durch \Psi \rightarrow \Gamma \setminus\{\gamma\}, falls γ schon transitiv durch Ψ bestimmt ist.

Die obige Bedingung lässt sich überprüfen, indem man für jedes \gamma \in \Gamma testet, ob \gamma \in
\text{AttributHuelle}((F \setminus (\Psi \rightarrow \Gamma)) \cup (\Psi \rightarrow (\Gamma \setminus \gamma)),\Psi) ist. Falls dies zutrifft, kann γ aus Γ entfernt werden.

An obigem Beispiel:

  • A \rightarrow \mathbf{B},E
  • A \rightarrow B,D
  • F \rightarrow C,D
  • CD \rightarrow \mathbf{B},E,F
  • F \rightarrow B


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

  • A \rightarrow E
  • A \rightarrow B,D
  • F \rightarrow C,D
  • CD \rightarrow E,F
  • F \rightarrow B

3.Schritt: Leere Klauseln

Eliminiere Klauseln der Form  \Psi \rightarrow \varnothing

Im Beispiel aus Schritt 2 gibt es keine Abhängigkeiten mit leerer, rechter Seite. Also gibt es in diesem Fall hier nichts zu tun.

4.Schritt: Zusammenfassen

Fasse Formeln a \rightarrow b_0 , a \rightarrow b_1 \dots zu a \rightarrow b_0 \cup b_1 \dots zusammen.

Im Beispiel fassen wir nun Ausdrücke mit gleicher linker Seite zusammen:

  • A \rightarrow E,B,D
  • F \rightarrow B,C,D
  • CD \rightarrow E,F

Neues Relationenschema

Aus allen Ψ \to Γ 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:

  • R1(A,B,D,E) # A ist Primärschlüssel
  • R2(B,C,D,F) # F ist Primärschlüssel
  • R3(C,D,E,F) # CD ist Primärschlüssel (Die Elemente dieser Relation sind zwar schon durch R1 und R2 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 würden.)

Hinzufügen einer Relation

Nun muss durch Hinzunahme einer Relation eine Beziehung zwischen R1, R2 und R3 hergestellt werden. Dies wird durch eine Relation R4 ermöglicht, die nur den Ursprungsschlüssel AF (AF + ={A,B,C,D,E,F}) enthält. Wir erhalten ein Schema in der 3. Normalform wie folgt:

  • R1(A,B,D,E)
  • R2(B,C,D,F)
  • R3(C,D,E,F)
  • R4(A,F), wobei A und F jeweils Fremdschlüssel darstellen und zusammengenommen den Primärschlüssel von R4 erzeugen.

Formaler Algorithmus

Eingabe: universelles Schema R=(U,F)
Ausgabe: 3. Normalform D von R

B:=Reduktion(F)
R:={}
i:=0
for each Y\subseteq U mit (\exist A \in U):Y\rightarrow A \in B
   i := i+1
   X_i:=Y\cup\{A\in U|Y\rightarrow A \in B\}
   R_i:=(X_i,\pi_{X_{i1}}(B))
   R:=R\cup\{R_i\}
if (\forall R_i\in R): X_i\rightarrow U\notin B^+
   i: = i+1
   R:=R\cup\{R_i\}
D:=(R,\{\ \})

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Boyce-Codd-Normalform — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • Zerlegungsalgorithmus Normalform — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • 1NF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • 2NF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • 3NF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • 5NF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • BCNF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • Datenbanknormalisierung — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • Relationentheorie — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Unter Normalisierung eines relationalen Datenbankschemas versteht… …   Deutsch Wikipedia

  • Normalisierung (Datenbank) — Die Normalisierung eines relationalen Datenschemas überführt es in eine Form, die keine vermeidbaren Redundanzen mehr enthält. Ein konzeptionelles Schema, das Datenredundanzen enthält, kann dazu führen, dass bei Änderungen der damit realisierten… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”