Post on 12-Jan-2016
description
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
1
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (2|8)
(2) Synthese
Ausgangspunkt: Menge U von Attributen Menge F von fA‘s
Prinzipielle Vorgehensweise:
Schrittweises Zusammenfassen von Attributen und fA‘s zu Relationsschemata unter Berücksichtigung der 3NF-Eigenschaft.
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
2
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (3|8)
• Dieser erzeugt 3NF-Relationen (sogar BCNF).
• Bei großem F aufwendig, da redundante fA‘s entfernt werden müssen:
• „Membership-Problem“Geg.: G ( F+), g GFrage: g (G \ {g})+ ?
Hierzu mehrfach Berechnung von F+ bzw. andererMengen von fA’s notwendig.
Zur Synthese gibt es einen Algorithmus
„Synthese-Algorithmus“nach Bernstein 1976,
Biskup, Dayal, Bernstein 1979
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
3
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (4|8)
Synthesealgorithmus (grob)Gegeben: U, F (U); Relation r:(U | F); K (bel.) Schlüssel
[A] Wandle F um zu H mitH ~ F und H „möglichst einfach“:
H: L1 R1; L2 R2; ...; Lk Rk
o.B.d.A.: ij Li Lj; Li Ri = Ø (i, j = 1, ..., k)
[B] Mache aus jedem Li Ri eine Relation
ri :(LiRi | Li Ri) (i = 1, ..., k)
Ist (r1, r2, ..., rk ) eine Zerlegung von r? (vgl. 1.6.2, Def. S.2/7)
(Z1) Attribute: Es gilt i (LiRi) = U‘ U, aber ist möglich!
(1)(Z2) fA‘s: i {Li Ri} = H ~ F und somit F+, sogar H+ = F+. (2)
[C] falls i: Li U F+: (r1, r2, ..., rk ) (3)
falls nein: (r0, r1, r2, ..., rk ) mit r0:(K | Ø) (4)
ist verlustfreie fA-erhaltende Zerlegung von rin BCNF-Relationen
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
4
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (5|8)
(1) Sei S:= U \ U‘; dann gilt:
a S: a ist Attribut jedes Schlüssels in r!
(2) Falls „Zerlegung“ (s. (Z1)), dann fA-erhaltend!
(3) In diesem Fall kann es keine “isolierten“ Attribute a geben –
d.h. S = Ø! – somit „Zerlegung“.
(4) In diesem Fall sind alle isolierten Attribute in K –
d.h. S K! (wg. (1)) – somit wieder „Zerlegung“.
(3&4) In beiden Fällen:
Zerlegung enthält Schlüssel, somit verlustfrei!
Anmerkungen zu „Synthesealgorithmus (grob)“:
zurück
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
5
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (6|8)
[A] „Wandle F um zu H mit H ~ F und H ‚möglichst einfach‘ “:
1. Schritt: Mache alle f F einfach Ergebnis: F‘; F‘ ~ F
2. Schritt: Entferne überflüssige Attributeder linken Seiten der fA‘sErgebnis: G; G ~ F; alle f G sind elementar
3. Schritt: Finde nicht redundante Überdeckung in G,Ergebnis: H; H ~ G
Synthesalgorithmus (ausführlich):
Gegeben: U, F F(U); Relation r:(U | F); K (bel.) Schlüssel o.B.d.A.: F enthält keine trivialen fA‘s
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
6
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (7|8)
[B] Mache aus jedem Li Ri eine Relation ri :(LiRi | Li Ri)
4. Schritt: Fasse funktionale Abhängigkeiten mit gleicher linker Seite Li
zu einer Klasse zusammen. Ergebnis: Hi = {Li b | Li b H} (i =1, …, m)
Setze: Ri = {b | Li b Hi} (i =1, …, m)
5. Schritt: Konstruiere Relationsschemata: - := {ri: (Li Ri | Hi) | i =1, …, m}
(es gilt dabei natürlich auch: - := {ri: (Li Ri | Li Ri) | i =1, …, m} )
Rel
atio
nent
heor
ie
A
IFB
S
S20
01
7
1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata 1.6.4 Algorithmen zur Bildung von 3NF-Relationsschemata (8|8)
[C] 6. Schritt: Prüfe, ob irgendeine Attributmenge Li Ri
bereits einen Schlüssel von r enthält.
Falls Li U F+ für ein i, dann
:= -
sonst := - {r0 : (K | Ø)}
Ergebnis: ist
- Zerlegung von r
- verlustfrei
- fA-erhaltend
- in 3NF (sogar in BCNF).