Datenbanken Wintersemester 2004/2005 Prof. Dr. Laue

Werbung
©2005, Holger Hartmann
Datenbanken
Wintersemester 2004/2005
Prof. Dr. Laue
Zusammenfassung
keine Gewähr für Korrektheit!
Datenbank: Sammlung von Daten die miteinander in Beziehung stehen und in einer bestimmten
Struktur vorliegen.
3-Ebenen-Modell:
– Anwendersicht
spezielle Sichten stellen Ausschnitte aus der Gesamheit der Daten dar
– Logische Ebene (Datenbanksystem)
Gesamtmodell aller Daten des Unternehmens
– physikalische Ebene (Massenspeicher)
beinhaltet Aufteilung der Daten, Zugriffswege, Zugriffsrechte ...
Ebenen müssen unabhängig voneinander sein
Entity-Relationship-Model:
Entities: Objekte der realen Welt, E
Entity-set: Zusammenfassung von Objekten des gleichen Typs, E
Attribute: Eigenschaften oder Merkmale von Objekten , A1, ..., An
jedem wird ein Wertebereich zugeordnet: D(Ai)
jedes Entity E aus E wird beschrieben durch (e1, ..., en), wobei ei ∈ D(Ai)
Entities eines Entitiy-sets haben die gleichen Attribute
Schlüssel: minimale Menge von Attributen, deren Einträge ein Objekt bereits festlegen
also minimales S ⊆ A={A1, ... , An } die ein Objekt festlegen
Primärschlüssel: spezieller Schlüssel
Sekundärschlüssel: Schlüssel die nicht Primärschlüssel sind
Beziehung: zwischen E1 , ..., En ist eine Teilmenge E1 x...x En , also gewisse Tupel (E1 ,..., En)
Entity-Relationship-Diagramm:
Attribute = Kreise
Entity-Sets = Rechtecke
Beziehungen = Rauten
Schlüsselattribute werden unterstrichen
(1,n)-Beziehung: Zu jedem Entitiy aus E2 gehört höchstens ein Entity aus E1
(n,m)-Beziehung: Es dürfen mehrere Entities aus E2 zu mehreren Entites aus E2 in Beziehung sein
is-a-Beziehung: Jedes Entity aus E1 ist spezialisierung eines Entites aus E2
Datenmodelle:
1. Netzwerk
besteht nur aus Entitiy-Sets mit (1-n)-Beziehungen
Datenstruktur: Zeigerketten
Owner-Typ: Entity-Set mit 1
Member-Typ: Entity-Set mit n
Darstellung durch Bachmann-Diagramm:
(1-n)-Beziehungen werden durch einen Pfeil dargestellt, Entity-Sets durch ein Rechteck
(n-m)-Beziehungen müssen zu einer (1-n) und einer (1-m) Beziehung aufgelöst werden
Bewertung: + schneller Zugriff über Zeigerketten,
– erfüllt nicht das 3-Ebenen-Modell, da Zugriffsmethoden von der Speichermethode
abhängig ist --> Anfrage erfolgt auf physikalischer Ebene und nicht auf logischer.
2. Hierarchisches Datenmodell
Datenstruktur: Bäume, wobei die Entity-Sets die Knoten sind.
Es gibt nur (1-n)-Beziehungen, die Member-Typen sind die Söhne der Owner-Typen.
Tritt ein Entity-Set in mehreren Beziehungen auf, werden virtuelle Kopien erzeugt.
Kopien werden nie für Owner-Typen der Beziehungen eingesetzt
Bewertung: + schneller Zugriff bezüglich der jeweiligen Hierarchie
– langsamer Zugriff anhand von Eigenschaften (sind in Blätter beschrieben)
– hohe Abhängigkeit der Anwenderprogramme von der Speicherung
--> 3-Ebenen-Modell wird nicht ausreichend genutzt
3. Relationales Modell
vermeidet Zeiger. Die Beziehungen werden wie Entities behandelt
Datenstruktur: Tabelle
Spalten tragen Attributnamen (A1,A2, ..., An), Zeilen sind Wertetupel
Tupel t = (a1, a2, ..., an) hat in der i-ten Spalte einen Eintrag ai aus dem Wertebereich von Ai
Auf die Tabellen können folgende Operationen angewendet werden:
Schnitt, Vereinigung, Differenz, Projektion, Selektion, natürlicher Verbund, θ-Verbund
Die Projektion der Tabelle auf die Attribute Ai , ... , Ai wird mit i ,... ,i T  bezeichnet
Die Selektion der Tabelle T bez. der Formel F wir mit  F T  bezeichnet
der natürliche Verbund wird mit T1 |><| T2 gekennzeichnet (T1 |><| T2) |><| T3 = T1 |><| (T2 |><|
T3)
Bewertung: + Datenunabhängikeit nach 3-Ebenen-Modell gewährleistet
– bei Verbundoperationen langsamer als die anderen Modelle
1
k
1
k
Data Dictionary: Datenbank über Datenbank
SYSCATALOG: Tupel für jede Tabelle
SYSCOLOUMS: Tupel für jedes Attribut
algebraische Optimierung: Selektion unter Verbund im Anfragebaum schieben
Projektion unter Verbund schieben, in der Projektion muss das Verbundsattribut mit
aufgenommen werden
Beschleunigung des Zugriffs durch Indizes:
I(Tabelle, Attribut) liefert sortierte TIDs von den Attributen zurück
--> Selektionen können schneller durchgeführt werden
bei Verbundsoperationen nur linearer Aufwand da entsprechende Attribute sortiert sind
Physikalische Ebene:
Daten werden blockweise sortiert auf der Platte abgelegt. Index auf Blockanfänge
B*-Baum: vollständige Datensätze nur in den Blättern.
Indexseiten erhalten neben den Zeigern nur Vergleichswerte
B*-Bäume mit Zeigern in Blättern: es werden nur Adressen der Daten gespeichert
--> Seiten der Daten könnnen voll ausgenutzt werden --> Speicherersparnis
Bei mehreren Zugriffswegen auf Daten gibt es jedoch Probleme beim Löschen
1.Lösung: Löschkennzeichen bei Datensatz --> anderer Zugriffsweg stellt fest das Daten
ungültig sind, allerdings Speicherplatzverschwendung, Reorganisation der Datenbank nötig
2.Lösung: eigentliche Datensätze durch Zeiger auf Datensätze ersetzen.
--> physikalischer Speicherplatz kann verschoben oder gelöscht werden
TID-Konzept (Tupel-Identifier):
Datensatz von Adresse besteht aus 2 Teilen: 1. Adresse der Datenseite
2. Nummer der Adresse des Datensatzes in einem Adressfeld auf der Seite
auf der Datenseite können statt Datensätze auch wieder TIDS stehen (Überlauf)
Dynamisches Hashen: Addresse für Datensatz wird durch Hashfunktion ermittelt
bei zu großer Datenmenge (viele Kollisionen) wird die nächste Stelle der Hashadresse
hinzugenommen
Mehrdimensionale Anfragen:
gesucht sind alle Datensätze mit ui ≤ wi < oi bei Datensätzen der Form w = (w1, w2, ..., wk)
a) für jede Komponente ein Baum, Problem große Zwischenlösungen wegen Schnitt der Lösungen
b) B-Baum für jede Kombination von Attributen, keine überflüssigen Zwischenergebnisse aber bei
k Attributen 2k Teilmengen --> nur für spezielle häufig auftretende Anfragen sinnvoll
Datensätze werden als Punkte in k-dim Raum interpretiert.
Gridfile:
Datenraum wird in Quader zerlegt, Punkte in Quader kommen auf eine Datenseite. Bei
Suchanfrage wird Suchquader definiert
--> es werden nur wenige Daten geholt die nicht zur Anfrage gehören
Nachteil: Nur bei statisch bekannten Datensätzen sinnvoll.
Raum wird solange zerlegt, bis die Datensätze in den Quadern auf eine Seite passen
Nachteil: bei stark korrelierten Daten viele leere Quader, gut bei gleichmäßig verteilten Daten
in Raum werden nacheinander Daten eingefügt. Quader wird aufgeteilt wenn zuviele Einträge
drin sind. Es wird die Komponente aufgespalten die bei Zerlegung in der Mitte in gleichbelegte
Teile zerfällt.
Löschen: bei Unterbelegung mit Nachbarn verschmelzen (es muss wieder ein Quader entstehen)
Nachteil: Datenbanksystem kann bei manchen Intervallen nicht die Mitte bestimmen
Entwurfsstrategie relationaler Datenbanken
 = {A1, A2, ..., An) : Attributmenge
Relation R besteht aus Menge von Abbildungen von Â,
Tupel: Abbildungen einer Relation
Format der Relation über Â: F(Â) enthält alle endlichen Relationen von Â
semantische Bedingung auf Â: γ : F(Â) --> {wahr, falsch}
Relationsschema: S(Â, Γ) beinhaltet alle Relationen auf  bei denen Γ erfüllt ist
funktionale Abhängigkeiten: z.B. X --> Y : wenn X festgelegt ist, so auch Y
Nullwerte: Werte die nicht bekannt sind, werden mit δ gekennzeichnet
Achtung: der äußere Verbund ist nicht assoziativ
+
Γ : Menge funktionaler Abhängigkeiten die von Γ logisch impliziert wird
Schlüssel: X ⊆ Â von S(Â, Γ) heißt Schlüssel, wenn es minimal X --> Â bestimmt
Schlüssel eines S(Â, Γ) können jedoch unterschiedlich viele Attribute besitzen
in Schlüssel dürfen keine NULL-Werte eingetragen werden
--> Informationen ohne Wert beim Schlüssel können nicht gespeichert werden
--> es werden mehrere Relationsschemata gebildet
Datenbankschemata: DS(S1, S2, ..., Sn, Γ), Γ semantische Bedingung auf ( S1, S2, ..., Sn)
Beispiel für Schema: ( R1, R2, ..., Rn) ∈ DS
Fremdschlüssel: Spalte oder Spaltengruppe die auf den Primärschlüssel in einer anderen
Tabelle verweist
Universalrelationbedingung γUR: wird erfüllt wenn ein R∈S(Â, Γ) existiert, mit
π(R) = (R1, R2, ..., R3), Ri = πÂi(R), die Relationen also aufgeteilt werden können
--> Datenbankschemata werden dann mit DS(S1, S2, ..., Sn, {γUR}) bezeichnet
verlustloser Verbund: Wenn stets R = |><|i=1n Ri , bzw. die Zerlegung von S(Â, Γ) injektiv ist
Algorithmus für Test auf verlustlosen Verbund bei funkitonalen Abhängikeiten:
gegeben: S(Â, Γ) und (Â1, Â2,..., Âm)
Frage: ist Zerlegung von S(Â, Γ) bezüglich (Â1, Â2,..., Âm) verlustlos?
Erstelle Tabelle mit den Zeilen Â1, Â2,..., Âm und den Spalten A1, A2, ..., An
Falls das Attribut Ai in der Attributmenge Âj ist, setze ein a in die Tabelle,
anderenfalls setze ein bi (i : Zeilennummer) in die Tabelle
Durchlaufe Γ mit X--> Y. Falls 2 Zeilen mit gleichen Einträgen bei X existieren, so setze
die Einträge auch bei Y gleich (entweder auf a, oder auf den kleineren Index bei b)
Wenn alle γi durchlaufen sind und es eine Zeile mit nur a's existiert, ist der Verbund
über (Â1, Â2,..., Âm) verlustlos.
Armstrong Axiome:
A1: Ist Y ⊆ X so gilt X Y
A2: Gilt X Y so auch XZ YZ
A3: Gilt X Y und Y  Z , so auch X  Z
B1: X  X
B2: Ist X YC ∈G und Z CW ∈ , dann gilt auch X  ZC
B3: Gilt X YZ , so auch X Y
Ableitungsgraphen:
besteht aus Knoten X ⊆ Â und Pfeilen aus Γ
Anfangsmenge: Knotenmenge auf die keine Pfeile zeigen
Algorithmus zur Berechnung von X+ : Linclosure
gegeben: Menge funktionaler Abhängigkeiten Γ, Attributmenge X ⊆ Â
1. Initialisiere: Lege für jedes Attribut eine Liste an, in welche die FDs eingetragen werden
bei denen das Attribut auf der linken Seite steht. Durchlaufe alle diese Listen und erhöhe
den counter zu den FDs um 1 ( alle counter mit n Attributen links haben den Wert n)
Füge in newdep und update den Schlüssel X ein. Update ist eine FIFO-Warteschlange
2. entnehme Wert aus update und durchlaufe dessen Liste. Senke bei den entsprechenden
FDs die counter um 1. Hat eine FD den counter 0, so füge die rechte Seite der FD zu
newdep hinzu (falls einer der Wert noch nicht in newdep ist), dieselben Werte werden
auch update hizugefügt.
3. Wiederhole Schritt 2 solange noch Werte in update sind gebe dann newdep aus
abhängigkeitserhaltend: Eine Abbildung π, die R in (R1, R2, ..., Rn) zerlegt und bei der jedes
zurückverknüpfte R alle ∈ erfüllt
--> bei abhängigkeiteserhaltenden Zerlegungen brauchen nur die lokalen Γi überprüft
werden, um sicherzustellen, dass das globale R alle ∈ erfüllt
π abhängigkeitserhaltend <=> π surjektiv
π hat verlustlosen verbund <=> π injektiv
äquivalenz funkitonaler Abhängigkeiten:
≡ ' ⇔ alle ' ∈ ' werden von  logisch induziert
alle ∈ werden von  ' logisch induziert
volle Abhängigkeit: wenn auf der linken Seite der Abhängigkeit ein Attribut entfernt wird, liegt
die Abhängigkeit nicht mehr in Γ+
transitive Abhängigkeit: ein Attribut A ist von Y abhängig, Y gleichzeitig von X, dann ist
A transitiv über Y von X abhängig (X darf nicht von Y abhängig sein und A nicht in X
bzw. Y vorkommen)
{
}
Normalformen:
Normalformen höherer Ordnung erfüllen auch die Normalformen tieferer Ordnung
1NF: Eine Relation (Tabelle) befindet sich in der ersten Normalform, wenn alle Attribute atomare
Werte enthalten und keine Wiederholungsgruppen (beinhalten den selben Wert) auftreten
2NF: Jedes Nichtschlüsselattribut (NSA)ist funktionell vom gesamten Primärschlüssel
abhängig (automatisch wenn der Primärschlüssel nur aus einem Teil besteht)
3NF: Jedes NSA ist von jedem Schlüssel nicht transitiv abhängig
BCNF(Boyce-Codd-Normalform):Jedes Attribut ist von jedem Schlüssel nicht transitiv abhängig
es gibt Tabellen die sich nicht abhängigkeitserhaltend von 3NF in BCNF umformen lassen
Algorithmus zur Zerlegung in BCNF-Schemata:
gegeben: S(Â, Γ) mit einer Menge Γ von funktionalen Abhängigkeiten
gesucht: DS(S1(Â1, Γ1), ..., Sn(Ân, Γn); Γ0) mit allen Si(Âi, Γi) in BCNF
1. Initialisiere DS(S1, Γ0), wobei S1 = S
2. Ist Si nicht in BCNF, dann suche eine FD, bei der auf der linken Seite ein X steht, dass
kein Schlüssel enthält und auf der rechten Seite nur ein Attribut A steht, welches nicht
in X vorkommt.
Zerlege Si in Si1 und Si2:
Âi1 enthält die rechte Seite der FD vereinigt mit der linken: { A }∪ X
Γi1 enthält alle FDs mit den Attributen aus Âi1 :  i1= Â  i 
Âi2 enthält alle Attribute außer der rechten Seite der FD also A : Â i2= Â i ∖ { A }
Γi2 enthält alle FDs mit den Attributen aus Âi2 :  i1 = Â  i 
Wiederhole 2. solange bis jedes Si in BCNF ist
3. gebe die Zerlegung aus
i1
i2
Test auf BCNF:
1. Suche 2 Attribute {A, B} in Âi bei denen A ∈ ( Âi \ {A,B})+ vorkommt
werden keine gefunden liegt BCNF vor
2. füge in Y alle Werte von Âi ein bis auf B : Y = Âi \ {B}
3. solange ein weiteres Paar {A, B'} mit der Eigenschaft von 1. gefunden wird, entferne
B' aus Y: Y = Y \{ B'}
4. Setze Âi1 = Y und Âi2 = Âi \ {A}
das Schema Si1 ist nun in BCNF, Si2 muss jedoch noch weiter untersucht werden
Die erreichte Zerlegung in BCNF hat einen verlustlosen Verbund, ist jedoch nicht zwingend
abhängigkeitserhaltend
nichtredundant: ein Γ , bei dem keine Abhängigkeit entfernt werden darf:  ¬≡ ∖ {}
rechtsreduziert: ein Γ , bei dem jede FD nur ein Attribut auf der rechten Seite hat
linksreduziert: ein Γ, bei dem auf keiner linken Seite ein Attribut weggelassen werden darf
Algorithmus:
1. alle rechten Seiten aufspalten und in Γ die entsprechenden FDs ersetzen
2. überprüfen ob Informationen redundant sind
(z.B. ist CE --> A redundant wenn ein C --> A vorliegt
3. wenn 2 gleiche linken Seiten vorliegen überprüfen ob die Hülle vom einen ohne das
andere dessen rechte Seite mit einschließt, dann wäre es redundant
4. bei den linken Seiten mit mehreren Attributen überprüfen ob nicht einzelne Attribute
durch andere Beziehungen überflüssig sind ( ACD –> B kann zu CD –> B vereinfacht
werden, wenn eine C –> A existiert.
5. Die noch vorliegenden FDs bilden das nichtredundante Γ1
erster Synthesealgorithmus:
gegeben: ein S(Â, Γ) mit einer nichtredundanten und reduzierten Menge von FDs Γ
1. Durchlaufe alle γi aus Γ und lege für alle Attribute in γi ein Âi an mit Γi = { γi }
2. das letzte Âi enthält den Schlüssel X, das zugehörige Γ die leere Menge
3. gebe die Si(Âi, Γi) aus
existiert ein γ = X -->Y in S(Â, Γ), X ist der Schlüssel, so kann das letzte Schema für einen
gesonderten Schlüssel entfallen
äquivalenz bezüglich Γ: X, Y aus Â, wenn X --> Y und Y --> X in Γ+ (Schreibweise: X ≡Y )
Lemma: sei  1 ≡ 2 auf  und jeweils nichtredundant. Ist X-->Y in Γ1 so existiert ein U-->V in
Γ2 mit X ≡U
Partition: E Γ(X) beinhaltet alle FDs U --> V aus Γ, bei denen X ≡U
E   X  beinhaltet E Γ(X) wenn es nicht leer ist
minimales Γ: wenn es kein Γ' gibt, das äquivalent zu Γ ist, aber weniger FDs enthält
direkt abhängig: X ̇ Y bedeutet, dass X das Y direkt unter Γ bestimmt, es gibt in der
nichtredundanten Menge  ' ≡ also keine Abhängigkeit U -->V mit X ≡U
Lemma A: Γ sei nichtredundant: Sei X --> Y in E Γ(X) und Y aus  mit Y ≡ X . Dann existiert
eine Regel Z --> W in E Γ(X) mit Y ̇ Z
Lemma B: Sei Γ minimal und X aus Â. Dann existiert kein Y-->U aus E Γ(X) und kein Z-->V aus
E Γ(X) mit Y ≠ Z und Y ̇ Z
Die Abbildung E Γ1(X) --> E Γ2(X) ist eine Bijektion, wenn Γ1 und Γ2 äquivalent und minimal sind
Algorithmus zur Konstruktion einer minimalen Menge Γ:
1. Γ durch äquivalentes nichtredundantes Γ' ersetzen
vorgehen: zunächst wird Γ ' = Γ gesetzt
nun wird bei jeder FD X-->Y aus Γ ' geprüft ob Y auch in der Hülle von X bez. Γ' liegt,
wenn die FD X-->Y aus Γ ' entfernt wird (mit Linclosure). Ist dies der Fall wird sie aus
Γ' entfernt
2. Äquivalenzklassen von E  '  X  bestimmen
vorgehen: Matrix M bilden, die so viele Zeilen wie linke Seiten von Abhängigkeiten
besitzt und soviele Spalten wie Abhängigkeiten. Die Matrix enthält eine 1 wenn, die
linke Seite der Abhängigkeiten in den Spalten in der Hülle von der linken Seite der
Zeilen ist. Ansonten wird eine 0 eingetragen. Hierfür ist für jede Zeile einmal Linclosure
aufzurufen
X ≡ U wenn es ein V, Z gibt mit m(X, U-->V) = 1 und m(U, X-->Z) = 1
3. Durchlaufe E  '  X  mit E  '  X 
Durchlaufe E  '  X  mit Y --> U
Durchlaufe E  '  X ∖ {Y U } mit Z --> V
Ist (Y--> U) ≠ (Z --> V) und Y ̇ Z , so
ersetze Y-->U und Z-->V durch Z-->UV
4. Gebe das so veränderte Γ' aus
Test auf Y ̇ Z :
Y--> U und Z-->V aus E  '  X 
̇
Bilde Linclosure Y ,  ' ∖ E  '  X =Y
Linclosure muss hierfür modifiziert werden:
count soll auch für die FDs aus E Γ(X) bestimmt werden. Ist für eine Abhängigkeit R-->S
count = 0, ist R⊆Y ̇
Y ̇ Z ⇔ Z ⊆Y ̇
zusammengesetzte funktionale Abhängigkeit: (X1, ..., Xk) --> Y,
wenn alle Xi --> Y und alle Xi nach Xj
ringförmige Menge:
 X 1, ... , X k 
∪
k
i=1
Y mit Xi, Yi aus E Γ(X) = {X1 --> Y1, ..., Xk --> Yk}
2. Synthesealgorithmus:
1. Ersetze Γ durch eine reduzierte minimale ringförmige Menge
2. die Âi bestehen aus den Xi vereinigt mit dem Y aus der ringförmigen Abhängigkeit
das Γi besteht aus X1 --> Âi, ..., Xk --> Âi
3. Falls kein Âi einen Schlüssel für S(Â, Γ) enthält, wird Sm = S(X, Ø) hinzugefügt
Mehrwertige Abhängigkeiten (MVD)
Def: Sei R eine Relation auf  und X,Y aus Â. Dann erfüllt R die mehrwertige Abhängigkeit
X -->> Y genau dann, wenn für alle t, s ∊ R mit s |X = t |X ein u∊R existiert mit u |X = s |X ,
u|Y = t|Y und u|Â \ (X ∪Y) = s|Â \ (X ∪Y)
X -->> Y gilt, wenn ein verlustloser Verbund aus (X∪Y) und (X∪Z) vorliegt, mit X,Y,Z
paarweise disjunkt --> wird eine solche Abhängigkeit erkannt kann zerlegt werden
4. Normalform (4NF)
Ein Relationsschema S(Â, Γ) ist in 4NF, wenn aus X-->>Y ∊ Γ+ mit Y ⊈ X, X∪Y ≠  und Y≠Ø
folgt, dass X einen Schlüssel für S enthält
Algorithmus zur Zerlegung in 4NF (Ergänzung zum Zerlegungsalgorithmus in BCNF):
1. Suche ein X -->> Y, wobei X keinen Schlüssel enthält
2. Zerlege Schema: Âi1 = X cY,  i1= Â  i 
Âi2 = Âi \ Y,  i2 = Â  i 
i1
i2
Axiome für mehrwertige Abhängigkeiten:
M1: Es gilt immer X -->> X
M2: X-->>Y impliziert X∪Z -->>Y
M3: X-->>Y und X -->>Z impliziert X-->>Y∪Z
M4: X-->>Y und X -->>Z impliziert X-->>Y1Z
M5: X-->>Y und Y -->>Z impliziert X-->>Z \ Y
M6: X-->>Y und Y∪W -->> Z impliziert X∪W -->>Z \ (Y∪W)
M7: X-->>Y und Z = Â \ {X,Y} impliziert X -->> Z
C1: X-->Y impliziert X-->> Y
C2: X-->>Y, Z-->W, WfY und Y1Z = Ø impliziert X-->W
Verbundabhängigkeit:
R erfüllt die Verbundabhängigkeit |><|i=1nÂi genau dann, wenn R = |><|i=1n πÂi(R) erfüllt
die mehrwertige Abhängigkeit ist ein Spezialfall der Vebundabhängigkeit
5.Normalform (5NF):
Ein Relationsschema S(Â, Γ) ist in 5NF, wenn jede Verbundabhängigkeit in Γ+ bereits von den
Schlüsselabhängigkeiten Xi --> Â impliziert wird
Der Chase-Prozess:
 = {A1, ..., An}, Σ = {ai, bi | i 0ù}
Tableau: Menge von Tupeln t: Â --> Σ mit Eigenschaften:
- in der i'ten Spalte befinden sich nur a's mit Index i
- kein Symbol aus Σ tritt in verschiedenen Spalten auf
Menge der auftretenden Symbole: Bild(T), beinhaltet alle Elemente des Tableaux
ρ : mögliche Abbildung der ai und bi auf die Relation
--> ρ(T) ist eine Teilmenge der Relation. In T werden die ai und bi durch die Werte von ρ ersetzt
T(R) besteht aus allen ρ(T)s
subsummiert: Eine Zeile t wird von einer anderen Zeile subsummiert, wenn alle a's der Zeile t auch
in der anderen Zeile vorkommen
sub(T): enthält nur Zeilen die nicht mehr subsummiert werden können
2 Tableaux sind identisch, wenn sub(T1) = sub(T2)
Herunterladen