Vorlesung Informationssysteme 1. Das relationale Modell WS 2016/17

Werbung
Prof. Dr. rer.nat.habil. Bernhard Thalheim
Information Systems Engineering
Department of Computer Science
Christian-Albrechts-University Kiel
Olshausenstr. 40
D - 24098 Kiel
Vorlesung Informationssysteme 1. Das relationale Modell WS 2016/17
1 Relationale Datenbanken
1.1 Das relationale Datenmodell
Eigentlich: die relationale Datenmodellierungssprache!
1.1.1 Informale Einführung
• Relationen zum Speichern von Information über Dinge (der Realität).
• Einträge in Tabellen auf Kombinationen einfacher Werte beschränkt, d.h. nur “flache” Tupel.
• Keine Wiederholungen von Tupeln in Tabellen zu (Mengenkonzept).
• Beziehungen zwischen Objekten in unterschiedlichen Tabellen als gegeben durch identische Werte in gemeinsamen assoziierten Attributen.
Spezialfall des (nachfolgenden (Kapitel 2 sowie 4)) Entity-Relationship-Modelles:
keine Relationship-Typen
damit gelten spezifische Einschränkungen:
keine expliziten rekursiven Typen
Sichten ohne rekursive Definition
Vorteil: nur ein Typenkonstruktur
⇒
einfache Theorie, einfache Operationen, einfache Systeme, Optimierung
deshalb dann:
• Möglichkeit, einfache elementare Operationen zu definieren.
• Direkte Verwendbarkeit von Begriffen und Sprachen aus der Logik.
Dafür:
umfangreiche Theorie der Integritätsbedingungen z.B.
funktionale Abhängigkeiten X −→ Y
Gültigkeit von funktionalen Abhängigkeiten
mehrwertige Abhängigkeiten X →
→ Y
Verbundabhängigkeiten (X1 , ...Xm )
Inklusionsabhängigkeiten R[X] ⊆ S[Y ]
Wichtigste Klasse der Integritätsbedingungen:
Schlüssel (minimale, kürzeste)
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
2
1.2 Formale Einführung
Gegeben sei ein (Basis-)Datentypenschema BT
BT mit Elementen D = (domain(D), Ops(D), P red(D)
z.B. Integer[4Byte] oder auch String[250] mit speziellen potentiellen Wertebereichen
wobei jeder Wertebereich mit einer einheitlichen Interpretation für seine Werte versehen ist
sowie mindestens einer realisierbaren Speicherdarstellung und Repräsentationsdarstellung.
Annahme der Datenbank-Technologie: Wertebereiche sind disjunkt
damit Typensicherheit aber auch Abbildungsnotwendigkeit 5::Integer ̸= 5::String .
Preis für die Typensicherheit: Im weiteren müssen dann Werte mit analoger Bedeutung explizit miteinander assoziiert werden.
1.2.1 Relationstypen
Relationstyp (auch Relationenschema) R = (attr(R), keys(R), Σ(R))
über (Basis-)Datentypenschema BT
• endliche Menge von Attributen von R mit einer Zuordnung der Attribute A ∈ attr(R) zu einem Wertebereichstyp,
d.h. dom(R.A) = W für W ∈ BT
• primärer Schlüssel X oder Menge von Schlüsseln keys(R) ⊆ 2attr(R)
sowie Integritätsbedingungen Σ
Σ ⊆ LR
für die logische Sprache LR über R .
Anmerkungen: Leere Attributmengen sind nicht allzu sinnvoll.
Oft wird anstatt einer Attributmenge eine Folge von verschiedenen Attribute zugelassen.
Alternativ kann auch ein Attribut als (Name,Wertebereichtstyp)-Paar Ai : dom(Ai ) angegeben werden.
Wir präferieren hier die klassische Sichtweise. Alternativ kann man auch einen Relationstyp funktional einführen
(Objekte sind dann Funktionen, die jedem Attribut einen Wert zuordnen. Jede Funktion ist identifizierbar durch ihre
Identität.).
Ein Schlüssel soll der eindeutigen Identifikation eines Objektes innerhalb einer Klasse (s.u.) dienen. Die Integritätsbedingungen sollen die Klassen auf die sinnvoll möglichen Klassen einschränken.
Anstelle einer Zuordnung von Wertebereichstypen für einen einzelnen Relationstyp kann auch generelle Zuordnung
durch ein Assoziationsschema zum Namensraum U mit
dom : U → BT
benutzt werden.
R dient als Bezeichner des Relationstyps.
Anmerkung: In der Literatur auch gebräuchlich sind Relationsschema, Relation, ... .
Abgekürzte Schreibweisen: (R, attr(R)), R = ({A1 , ..., An })
Vorläufig: Σ = ∅ (bis zur Einführung der Bedingungen).
Wir fordern hier nicht (obwohl in der Literatur und Praxis oft benutzt):
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
3
unique name assumption für Attribute aller Relationstypen sondern nur unique name assumption innerhalb eines Relationstyps.
Damit ist ein Relationstyp hinreichend einfach realisierbar. Deshalb wird ein solcher Typ mit einfachen unstrukturierten Attributen auch Typ in erster Normalform genannt.
Festlegung: Attribute mit der gleichen Bedeutung in der Anwendung können auch mit dem gleichen Bezeichner annotiert werden.
Z.B. Name von Person, Student, Dozent, Radfahrer, ... versus Name von Firma und Person.
Objekt von o vom Typ R, wobei o auch den Integritätsbedingungen (die zutreffen) genügen muß
z.B. spezifischen Beschränkungen der Wertebereiche.
Wir schreiben o = (o(A1 ), ...o(An )) für die Ai -Werte von o.
Anmerkung: Wir können auch Objekte mit undefinierten Werten zulassen, z.B. NULL. Es ist aber sinnvoll, Objekte
weitestgehend zu bestimmen, d.h. auch auf NULL zu verzichten.
Im relationalen Datenmodell sind Objekte dann Tupel.
Anmerkung: Die Auffassung setzt implizit voraus, daß Tupel immer in allen Attributen definiert sind. Durch diese
Festlegung können Probleme vermieden werden, die mit undefinierten Werte verknüpft sind.
Wir fordern hier
entity integrity assumption für alle Attribute des Primärschlüssels (es werden im Primärschlüssel keine undefinierten Werte verwendet).
Man kann auch bei Tupeln eine Annotation verwenden, d.h. o = (oA1 , .., oAn ) kann man auch
(A1 : oA1 , .., An : oAn ) .
Diese Schreibweise erlaubt eine bessere Integration. Schränkt man sich jedoch ein auf eine Reihenfolge der Attribute, dann ist dies unnötig.
Instanz (Ausprägung) [Klasse] RC als zeitveränderliche Menge von endlich vielen Objekten vom Typ R ,
die die Integritätsbedingungen erfüllt (RC ∈ SAT(Σ(R))) und
deren Objekte sich in allen Schlüsseln keys(R) unterscheiden.
(Ist dann Modell im Sinne der Modelltheorie der mathematischen Logik.)
Eine Klasse kann dann verstanden werden als eine endliche Teilmenge des kartesischen Produktes der zugehörigen
Wertebereiche mit den keys(R) und Σ(R) - Beschränkungen!
Achtung: Bei einer Relation ist die Ordnung der Attribute fixiert.
X ⊆ attr(R) ist Schlüssel einer Klasse vom Typ R, falls alle Objekte in dieser Klasse durch ihre X-Werte unterschieden werden können.
D.h. es sind nur solche Klassen RC zulässig, die alle Schlüsselbedingungen in keys(R) erfüllen.
Ein Schlüssel ist minimal für eine Klasse, wenn keine echte Teilmenge von X ein Schlüssel ist.
Anmerkung: Ist X ein Schlüssel von RC , dann ist auch für Y ⊆ attr(R) die Menge X ∪ Y ein Schlüssel von RC .
Damit können wir uns bei der Angabe der Schlüssel auf die minimalen Schlüssel einschränken.
Beachte: Wir geben mit dem Relationstyp bereits alle Schlüssel an. RC kann zusätzliche Schlüssel besitzen, insbesondere minimale Schlüssel, die eine echte Teilmenge eines minimalen Schlüssels in R sind.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
4
Aufgrund der Mengendefinition: Jede Relation hat mindestens einen Schlüssel, nämlich attr(R).
Eine Relation kann viele Schlüssel haben. Wieviele?
Wir betrachten für Anwendungen die sinnvollen Schlüssel und nicht die zufällig für eine einzelne Klasse zutreffenden.
Anmerkung:Wir sprechen hier von Schlüsseln und minimalen Schlüsseln
in anderen Bücher oft Superschlüssel und Schlüssel verwandt
mitunter auch Schlüsselkandidat
Ein Schlüssel wird ausgezeichnet zur Hauptidentifikation: Primärschlüssel (Bedeutung: besondere Unterstützung
durch das Datenbank-Management-System)
außerdem: kürzeste Schlüssel bzgl. der Anzahl der Attribute oder auch Sekundärschlüssel
Meist wird angenommen: Schlüssel nicht leer!
ansonsten nur einelementige Klassen betrachtet.
Anmerkung: Möchte man nur den Primärschlüssel auszeichnen und die anderen Schlüssel Σ(R) zuordnen, dann
kann ein Typ auch - im Falle der Nichtbetrachtung der Integritätsbedingungen - einfach durch
(A1 , ..., Ak , Ak+1 , ...An )
bezeichnet werden für keys(R) = { {A1 , ..., Ak } } .
Implementationsentscheidung: Primärschlüssel-Werte sind stets vollständig definiert;
wird bei den meisten Systemen gefordert und demzufolge auch in der Literatur.
Im Folgenden nehmen wir häufig eine beliebige, aber feste Ordnung auf den Attributen eines Relationstyps als
gegeben an; außerdem identifizieren wir öfter einen Relationstyp mit seinem Bezeichner.
1.2.2 Zur Beachtung: Implizite Annahmen der Spezifikationssprache
Harmonisierte Assoziationen zu Basis-Datentypen d.h. falls domRi (A) und domRj (A) beide definiert sind,
dann sind sie gleich
dann kann auch dom als eine Funktion geführt werden
kann ausgebaut werden zur unique name assumption: noch Attribute mit gleicher Bedeutung tragen gleichen ‘Namen’
kann noch weiter ausgebaut werden zur unique flavour assumption:
nur Attribute mit gleichem Namen können durch (Un)Gleichungsanfragen verbunden werden
bei allen anderen Attributen ist dies wenig sinnvoll
für disziplinierte Entwicklung durch aus sinnvoll
Primary key assumption: alle Werte zum Primärschlüssel sind definiert
weiterhin: Alle Objekte sind identifizierbar
Mengensemantik für alle Klassen, alle Komponenten (z.B. Attribute, Relationennamen)
in SQL-Datenbanken allerdings: Multimengen-Semantik
Endlichkeitsannahme: alle Klassen sind endlich, eine Datenbank besteht aus endlich vielen Klassen
1.2.3 Datenbankschema, Datenbank, Datenbanksystem
Relationales Datenbankschema DB = (R1 , ..., Rk , Φ)
für eine Instanz (Datenbank)
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
5
• endliche, nichtleere Folge verschiedenen Relationstypen (damit auch Menge) und
• eine Menge von Integritätsbedingungen, die über LR1 ,...,Rk definiert sind.
Oft angereichert (sinnvoll!!) mit einer Erklärung der Bedeutung der einzelnen Attribute und Relationstypen.
attr(DB) = {Ri .A | A ∈ attr(Ri ), 1 ≤ i ≤ k }
Bei eindeutiger Zuordnung kann auch Ri für Ri .A weggelassen werden.
Wir fordern hier
unique name assumption für alle Relationstypen.
Eine Datenbank zu DB besteht aus den Relationen (Klassen) R1C , , ...RkC , die den Integritätsbedingungen Φ genügen.
Datenbanksystem = Datenbank-Management-System + Kollektion von Datenbanken
Dynamisches Relationenschema Dyn R = (R,Dyn Σ)
über R = (R, X, Σ) über Datenschema BT
Dynamische Integritätsbedingungen Dyn Σ über ListSAT ((R))
Dynamisches relationales Datenbankschema DB = (Dyn R1 , ...,Dyn Rn ,Dyn Φ)
db - Instanz eines relationalen Datenbankschemas
Dyn db - Liste von Instanzen eines relationalen Datenbanksschemas, in der Dyn Φ gilt
1.2.4 Vorschau: Klassifikation der Integritätsbedingungen
Statische Integritätsbedingungen für eine Datenbank oder eine Klasse meist als implikative Formeln oder auch
Hornformeln
Gleichungspostulate, die aus der Gültigkeit von (Un-)Gleichungen die (Un-)Gültigkeit von weiteren Gleichungen folgt, insbesondere
• funktionale Abhängigkeiten
insbesondere Schlüsselbeziehungen
Existenzpostulate, die aus der Existenz von Objekten die Existenz von anderen Objekten fordern, insbesondere
• Inklusionsabhängigkeiten
• Exklusionsabhängigkeiten
• mehrwertige, hierarchische und Verbundabhängigkeiten
Anzahlbeschränkungen, die eine Minimal-/Maximalanzahl von Objekten in Klassen oder Datenbanken
angeben (formulierbar oft als Gleichungspostulate)
Dynamische Integritätsbedingungen für Listen von Datenbanken bzw. Klassen
Transitionsabhängigkeiten, die aufeinanderfolgende Elemente einer Liste beschränken
temporale Formeln, mit denen für Listen die Gültigkeit eines Zustandes für ein Element der Liste postuliert
wird
Instanz ist eine Liste von Klassen, in der Dyn Σ gilt
Update-Operationen
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
6
• Insert - Einfügen eines Elementes in eine Menge
• Delete - Streichen eines Elementes aus einer Menge nach entsprechender Identifikation
• Update - Verändern von Attributwerten nach vorgegebener Spezifikation (single-tuple oder multiple-tuple je nach Spezifikation)
Zusätzliche Annahme: Unique-name-assumption
Attribute mit den gleichen Namen meinen Gleiches.
Zusammenhang wird über Inklusionsbeziehung modelliert.
1.2.5 Vorschau: Referentielle Integritätsbedingung (foreign key constraint) für Φ
Gegeben seien zwei Relationstypen R1 , R2 und ein (minimaler) Schlüssel Y von R2 mit attr(R1 ) = {A1 , ..., An1 }
und attr(R2 ) = {B1 , ..., Bn2 } .
Y seine Folge von Attributen aus attr(R2 ) bestehend aus k Attributen. X sei eine Folge von Attributen aus
attr(R1 ). Y bestehe aus einem Schlüssel in R2 .
Y ist Fremdschlüssel in R1 , falls nur solche Objekte in R1C zugelassen sind, die auch für die X-Werte als Y -Werte
in R2C existieren.
Formal: ∀o1 ∈ R1C ∃o2 ∈ R2C ∀i ∈ {1, ..k} : o1 (Ai ) = o2 (Bi ) .
R1 [X] ⊆ R2 [Y ]
Mit der referentiellen Integrität können Klassen verbunden werden. Ein Objekt in der Klasse R1C setzt die Existenz
eines Objektes in R2C voraus.
Anmerkung: Meist wird gefordert, daß alle Attribute in Y bzw. X jeweils paarweise verschieden sind. Warum?
1.2.6 Einschub: Probleme des relationalen Modelles
Darstellung einer Beziehung von Objekten
(Relationenmodell unterscheidet nicht zwischen Objekt und Beziehung)
• als eigenes Relationenschema
• als Teil eines Relationenschemas, das mehrere Relationenschemata verknüpft
Problem:
• Redundanz
• Konsistenz
• Verluste (Anomalien)
Lösung: Normalformen
• unique-name-assumption
gleiche Namen bedeuten das Gleiche
Anmerkung zur Normalisierung: andere Formen neben der vertikalen (attributbasierten) Normalisierung sind
• horizontale Normalisierung
• deduktive Normalisierung
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
7
Probleme mit nichtnormalisierten Schemata
VORLESUNGSBESUCH
Kurs
....
Raum
...
Zeit
...
Semester
....
Lesender
....
Student
...
Note
...
Eine Verlegung einer Vorlesung in einen anderen Raum bedingt eine umfangreiche Änderung in der Tabelle (nicht
nur die Änderung eines Datums);
Löschen einer Note des letzten Studenten läßt letzten Hinweis auf Vorlesung verschwinden;
ein Eintrag einer neuen Vorlesung ist erst mit der Belegung von Studenten möglich
damit ist die Tabelle nicht in der geeigneten Form
Lösung : Normalisierung (s. Kapitel 3)
1.2.7 Darstellung durch Hypergraphen
Relationales Datenbankschema läßt sich durch Hypergraphen darstellen.
Damit: Querying Hypergraphen
Beispiel aus dem Unibeispiel
Bestimme für den Studenten “Alf Brummkopf” den Fachbereich seines Hauptfaches.
Relationen:
• Person = ({Name.First, Name.Fam, Name.Titel, Addr...., Personennummer} ,
{ Personennummer}, ∅)
• Student = ( { StudNr, Person.Personennummer, Hauptfach.Fachber.DName }, {StudNr},
{ { Personennummer } −→ { StudNr } } )
• sonstige Semantik: Student[Person.Personennummer] ⊆ Person[Personennummer] ...
Damit kann dann die Anfrage im Hypergraphen direkt dargestellt werden.
PERSON
Name
Adresse
Spezialis
PNum
Kurs
Semester
SNum
Note
TEILNAHME
Zeit
Raum
VORLES
Hauptf
Nebenf
Betreuer
STUDENT
Darstellung erfolgt nach Einführung der Algebra.
PROFESSOR
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
8
1.2.8 Die unterlegten Basis-Datentypen
Datentypen sind gegeben durch
• Wertebereich,
• Operationen mit entsprechenden Axiomen,
• Prädikate mit entsprechenden Axiomen.
Daraus sind insbesondere die folgenden Eigenschaften für die Benutzung in Datenbanken von Relevanz:
Präzision und Genauigkeit und daraus resultierende Eigenschaften von Operationen
Granularität
Ordnungsrelationen zur Anordnung von Werten mit unterschiedlichen Ordnungschemata
Klassifikation (linear, hierarchisch, ...; eindimensional, mehrdimensional; polydimensional; analytisch/synthetisch;
mono-/polythetisch)
Speicherformate ggf. mit Auswahl
Präsentationsformate ggf. mit Verkürzunsregeln
Default-Werte mit spezifischer Bedeutung
Rundungsregeln zur Anpassung von / an Werte anderer Typen
Maßeinheiten mit ggf. Umwandlungsregeln
Aggregationsoptionen
Ggf. wird mit der Assoziation eines Datentypen mit einem Attribut eine Verfeinerung vorgenommen.
Außerdem können Nullwerte zugelassen sein, assoziierbar sein oder auch verboten sein.
Funktionen besitzen an den “Randpunkten” i.a. anderes Verhalten.
Spezielle Implementations-Eigenschaften von Attributen u.a. Typen (meaning)
1. Zeitinvariante Attribute (kein update) (eigentlich aber eine Implementationseinschränkung (es ist nichts in
der ‘real world’ zeitinvariant))
Vorteil: keine Inkonsistenz von Attributwerten (besonders bei Frendschlüsseln bzw. referentieller Integrität - einfache
Pflege)
2. Einelementige Schlüssel
Vorteil: einfache Organisation
3. (Keine-Nullwerte)-Beschränkung (Totalität von Attributen)
Vorteil: verwendbar für alles
4. Ausschluß von Hierarchien
Vorteil: lesbare und einfache Darstellung von Objekten
5. Totale, ausschließliche Schlüssel
Vorteil: Standardrepräsentation, updates sind eindeutig, unique-meaning-assumption, universal-relation-assumption
6. Default-Werte anstatt Nullwerte
Vorteil: updates einfacher
Nachteil: Anfragen verschieden interpretierbar
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
9
Aber Preis dafür ist hoch:
• Schemas weit entfernt vom Verständnis
• inflexibel, unnatürlich, redundant
• Integritätsbedingungen unterrepräsentiert
• Anfragen sind schwierig darzustellen
Auffinden der gesuchten Information
Auswahl bestimmter Objekte durch Spezifikation:
der Benutzer beschreibt die Zeile (oder Zeilen) mit Hilfe von Mengenoperationen (Relationenalgebra) (Welche
Information soll aus der Datenbank geliefert werden?)
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
10
1.3 Erste Einführung in die Theorie relationaler Datenbanken
Zur Erinnerung: 1. Normalform: alle Attribute sind atomar.
Alle Relationstypen können separat als Einzeltyp betrachtet werden.
Preis dafür: umfangreiche Theorie der Integritätsbedingungen
Wiederholung: Aufgrund der Mengendefinition: Jede Relation hat mindestens einen Schlüssel: attr(R) .
Maximale Schlüsselanzahl:
(
∥R∥
)
⌊ ∥R∥
2 ⌋
läßt sich die Relationengröße abschätzen und bleibt relativ stabil, dann sind fast alle minimalen Schlüssel von der
Länge 2 ∗ log|dom(R)| (|RC |)
1.3.1 Funktionale Abhängigkeiten
Funktionale Abhängigkeiten X −→ Y
für einen Relationstyp R und X, Y ⊆ attr(R).
Einschub: Projektsoperation informal
Gültigkeit von funktionalen Abhängigkeiten
zwei Tupel mit den gleichen X-Werten haben auch gleiche Y -Werte
Alternative Formulierung: Die X-Werte determinieren die Y-Werte.
Es gibt eine Funktion, durch die die X-Werte auf die Y-Werte abgebildet werden.
Beispiele:
VORLESUNG: { Kurs, Semester } −→ { Lesender, Zeit, Raum }
VORLESUNG: { Semester, Raum, Zeit} −→ { Kurs }
STUDENT: { PNum } −→ { SNum }
STUDENT: { SNum } −→ { PNum }
Axiomatisierung für jeweils einen Typen
Axiome
X ∪ Y −→ Y
Regeln
weitere Regeln:
X −→ Y
X ∪ Z ∪ W −→ Y ∪ Z
X −→ Y , Y −→ Z
X −→ Z
X −→ Y , Y ∪ W −→ Z
X ∪ W −→ Z
X −→ Y , X −→ Z
X −→ Y ∪ Z
X −→ Y ∪ Z
X −→ Z
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
Theorem 1 Diese Axiomatisierung ist korrekt und vollständig.
Hüllenkonstruktion mit Schalen
Σ1 := {X −→ {A} | A ∈ Y for X −→ Y ∈ Σ}
X0 := X
Xi+1 := {A | Z ⊆ Xi , Z −→ {A} ∈ Σ1 }
Lemma 1 Aus Y ⊆ X ∗ folgt Σ |= X −→ Y
Beweis: Nachrechnen der Regeln
Lemma 2 Σ |= X −→ X +
Beweis: durch Induktion über die Schalen der Hüllenkonstruktion
i = 0 : Reflexivität
i+1: Annahme gültig für i-Schale
d.h. X −→ Xi is in RC gültig
Induktionsziel: X −→ Xi+1 is in RC gültig
damit gilt insbesondere für Objekte mit t =X t′ auch t =Xi t′
Es sei nun V −→ W in RC gültig
Fall 1: V ̸⊆ X “nothing to prove”
Fall 2: V ⊆ X : damit falls t =V t′ für t, t′ ∈ RC damit auch wegen Gültigeit in RC t =W t′
Zum anderen aber : aufgrund der Schalenkonstruktion der Hülle:
t =Xi+1 t′
Lemma 3 Y ⊆ X ∗ falls Σ |= X −→ Y
Beweis über die Konstruktion einer Kontraposition
Armstrong-Relation RC mit der gezeigt werden kann Y ̸⊆ X +
Kontraposition: t, t′ mit t(A) = t′ (A) gdw. A ∈ X +
1. {t, t′ } ̸|= X −→ Y für eine X −→ Y ∈ Σ
damit auch ein Attribut von Y nicht Element von X +
damit Eigenschaft erfült
2. {t, t′ } |= Σ
gegeben nun V −→ W ∈ Σ
Fall 1 : {t, t′ } |= V −→ W wegen t ̸=V t′
Fall 2 : t =V t′ damit auch W ⊆ X ∗ wegen vorigen Lemmas
damit auch t =X t′ und somit {t, t′ } |= V −→ W
Schichtung und graphische Darstellung für funktionale Abhängigkeiten
Beispiel:
{ PersNr } −→ { Name, Raum, PLZ, Straße }
{ Raum } −→ { PersNr }
{ Ort, Bundesland, Straße } −→ { PLZ }
{ PLZ } −→ { Ort, Bundesland }
{ Ort, Bundesland } −→ { Vorwahl, Einwohneranzahl }
{ Bundesland } −→ { ParteiMinisterpräsident }
11
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
12
1.3.2 Mehrwertige Abhängigkeiten
X →
→ Y
Gültigkeit mehrwertiger Abhängigkeiten
mehrere äquivalente Definitionen:
• Die Y -Werte hängen von den X-Werten prädikativ ab und nur von diesen.
(σX=x (RC ))[Y ] = (σX=x∧Z=z (RC ))[Y ]
Z = R \ (X ∪ Y )
Durch Z-Werte kann man die tupel nicht genauer unterscheiden, wenn man die X-Werte schon zur Unterscheidung herangezogen hat.
• Stimmen zwei Tupel über X überein, dann exisitiert ein drittes Tupel, das Werte vom ersten Tupel über
X ∪ Y und vom zweiten Tupel über X ∪ (R \ Y ) übernimmt.
∀t1 , t2 ∃t3 ((PR (t1 ) ∧ PR (t1 ) ∧ t1 =X t2 ) −→ (PR (t3 ) ∧ t1 =X∪Y t3 ∧ t2 =X∪Z t3 ))
• Die Relation läßt sich in der genesteten Form X, Y \ X, R \ (X ∪ Y ) darstellen.
X
Y \X
R \ (X ∪ Y )
A1 ... Ak B1 ... Bl C1 ... Cm
... ... ...
... ... ...
... ... ...
• Man kann die Relation verlustfrei zerlegen in eine Projektion über X ∪ Y und über X ∪ (R \ Y ). Alle Tupel
und nur diese lassen sich aus diesen Projektionen wiedergewinnen.
Beispiele:
→ { Nebenf }
STUDENT: { PNum } →
→ { Betreuer }
STUDENT: { SNum } →
Axiomatisierung gemeinsam mit funktionalen Abhängigkeiten
Axiome
X ∪ Y −→ Y ;
X ∪Y
Regeln
→
→ Y |Z
X −→ Y
X −→ Y , Y −→ Z
X ∪ V ∪ W −→ Y ∪ V
X −→ Z
X →
→ Y |Z
X ∪Y ∪Z →
→ V | W ∪U , X →
→ Y ∪V ∪W | Z ∪U
X →
→ Z|Y
X ∪Y →
→ V | Z ∪W ∪U
X −→ Y
Z = attr(R) − (X ∪ Y )
X →
→ Y |Z
X →
→ Y | V , Z −→ W
W ⊆ Y, Y ∩ Z = ∅ .
X −→ W
1.3.3 Verbundabhängigkeiten
(X1 , ...Xm )
X1 ∪ ... ∪ Xm = R
Gültigkeit der Verbundabhängigkeiten
Man kann die Relation verlustfrei zerlegen in eine Projektion über X1 , ... über Xm . Alle Tupel und nur diese lassen
sich aus diesen Projektionen wiedergewinnen.
CAU Kiel, IfI, ISE
1.3.4
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
13
Inklusionsabhängigkeiten
R[X] ⊆ S[Y ]
auch zur Darstellung der referentiellen Integrität (Tupel, die von Tupelns anderer Relationen referenziert werden)
(Existenzbedingung)
Gültigkeit der Inklusionsabhängigkeiten
Die X-Werte von RC kommen in S C [Y ] vor.
Beispiel:
VORLESUNGSBESUCH[Student] ⊆ STUDENT[SNum]
Exklusionsabhängigkeiten R[X]||S[Y ]
Gültigkeit der Exklusionsabhängigkeiten
Die X-Werte von RC kommen nicht in S C [Y ] vor.
Beispiel:
VORLESUNGSBESUCH[Student] || VORLESUNGSBESUCH[Lesender]
1.3.5 Weitere Bedingungen über funktionale und mehrwertige Abhängigkeiten
siehe auch Entwurfstheorie - hier nur im Vorgriff
2. Normalform Teilschlüssel implizieren nicht Nicht-Schlüsselattribute
3. Normalform jedes Nicht-Schlüssel-Attribut darf nur direkt von einem Schlüssel abhängen (kein transitiver
Schluß)
Boyce-Codd-Normalform jede nicht-triviale funktionale Abhängigkeit ist eine Schlüsselabhängigkeit
4. Normalform jede geltende mehrwertige Abhängigkeit ist ableitbar aus den geltenden Schlüsselabhängigkeiten
5. Normalform jede geltende Verbundabhängigkeit ist ableitbar aus den geltenden Schlüsselabhängigkeiten
Einfüge-, Lösch- und Update-Anomalien treten genau dann nicht auf, wenn nur funktionale Abhängigkeiten gelten
und Relationenschema in BCNF ist
β
CAU Kiel, IfI, ISE
WS 2016/17
Informationssysteme 1. Das relationale Modell
14
1.4 Die relationale Algebra
1.4.1 Operationen der Relationenalgebra und ihre Eigenschaften
Operationen der Relationenalgebra
Selektion: Auswahl einer Zeile mit bestimmten Wertemerkmalen (erfüllen gestellte Bedingung)
Projektion: Auswahl von Teilen von Zeilen (Spalten)
Verbund: Verknüpfung zweier Tabellen zu eienr Tabelle, die alle Attribute beider Tabellen enthält; Zeilen der Ergebnistabelle bestehen aus Verkettung einer Zeile der ersten Tabelle und einer Zeile der zweiten Tabelle, wobei
diese beiden Zeilen in den gemeinsamen Attributen übereinstimmen müssen (dadurch kann Doppelung weggelassen werden)
Umbenennung: Umbenennung von Attributen führt zu neuem Relationstyp und damit auch neuer Klasse
Mengenoperationen: Vereinigung, Durchschnitt, Mengendifferenz
Operationen des relationalen Modelles
′
• Für RC , RC R = (attr(R), keys(R), Σ(R)) :
′
• RC ∪ RC (Vereinigung),
′
• RC ∩ RC (Durchschnitt) und
′
• RC \ RC (Mengen- Differenz)
R \ RC zu einem unendlichen Resultat, sobald ein BasisDagegen führt die Operation Komplement DBT
Datentyp einen unendlichen Wertebereich hat. Sie ist demzufolge unsicher und nicht zugelassen.
Operanden müssen die gleiche Attributmenge in der gleichen Ordnung haben.
• Für RC ∈ SAT (R), A, C ∈ {B1 , ..., Bn }, Wert a ∈ dom(A), Vergl.-op. θ ∈ {≤, ≥, ̸=, =, <, >},
Selektionen σAθa , σAθC sind die Teilmengen {t ∈ RC | t(A)θa} und {t ∈ RC | t(A)θt(C)} von RC .
• Operationen zwischen Schemata:
Für Tupel t über R und Teilmenge Y ⊆ R Projektion von t auf X, t[Y ] : Einschränkung von t auf Y
Projektion RC [Y ] = πX (RC ) von RC auf Y : {t[Y ] | t ∈ RC }
Attributabbildungsfunktion η : R −→ S
S |∃t ∈ RC : s = η(t)}
η -Projektion πη (RC ) = {s ∈ DDD
damit Projektion, Umbenennung, Vervielfachung von Spalten
• Zwei Typen R = (R, X, Σ), R′ = (R′ , X ′ , Σ′ ) und Relationen RC , R′C
• (natürlicher) Verbund RC 1 R′C von RC , R′C
{t | t[{B1 , ..., Bn }] ∈ RC , t[{B1′ , ..., Bn′ ′ }] ∈ R′C } definiert über R ∪ R′
• allgemeiner Verbund (Theta-Join)
• kartesisches Produkt - R ∩ R′ = ∅ - natürlicher Verbund
• Teilverbund (semijoin oder equi-semijoin) RC ×
◃ S C = RC 1 πR∩S (S C )
R∪S |τ (R) ∈ RC ∨ τ (S) ∈ S C }
• verallgemeinerte Vereinigung RC + S C = {τ ∈ DDD
R\S
• Division (Quotient) RC /S C = {τ ∈ DDD |∀ν ∈ πR∩S (S C ) : {τ } ∪ {ν} ⊆ RC }
= {τ ∈ πR∩S (RC )|{τ } 1 πR∩Y (S C ) ⊆ RC }
Die Division ist darstellbar durch
πR−S (RC ) \ πR−S ((πR−S (RC ) × S) \ R) for R − S = attr(R) \ attr(S).
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
15
Diese Operation is wichtig für die horizontale Reduktion oder Dekomposition. Man kann RC /S C
nutzen zur Wiedergewinnung von RC durch
RC = (πattrR ((RC /S C ) × S C )) ∪ (RC \ RC /S C )
Umschreibung: ∀s ∈ S C ∃t ∈ RC : s[attr(S) ∩ attr(R)] = t[attr(S) ∩ attr(R)]
damit ist ein Generalisator mit gegeben.
Die Division wird oft auch mit RC ÷ S C angegeben.
Ein Beispiel einer auf diese Art einfach formulierbaren Anfrage ist
Alle Studenten, die alle Vorlesungen von Thalheim hörten:
Teilnahme ÷ πV orlesN r (σDozent=“T halheim′′ (V orlesung)).
• linker äußerer Verbund
RC ––1 S C = RC 1 S C ∪
{t×N U LL ∈ dom(attr(R)∪attr(S)|πattr(R)∩attr(S) (t) ̸∈ πattr(R)∩attr(S) (S C )}
• rechter äußerer Verbund
RC 1–– S C = RC 1 S C ∪
{N U LL×t ∈ dom(attr(R)∪attr(S)|πattr(R)∩attr(S) (t) ̸∈ πattr(R)∩attr(S) (RC )}
• voller äußerer Verbund
• linker Halb-Verbund (left Semi-Join)
• rechter Halb-Verbund (right Semi-Join)
RC n S C
RC o S C
πattr(R)\attr(S) (RC 1 S C )
=
=
πattr(S)\attr(R) (RC 1 S C )
• Algebra mit Nullwerten
Vorsicht: Ist durch Nullwerte verschieden von bisher betrachteter Algebra!
Nullwerte haben mindestens 14 verschiedene Bedeutungen. Gewöhnlich betrachten wir als Bedeutungen
• (a) unbekannt (no information, unknown)
• (b) not applicable
• (c) not existent
Die Anfragen σN ote<2 (T eilnahme) und σN ote<2∨N ote=N U LL (T eilnahme) sind grundsätzlich verschieden voneinander.
Für den Wert unknown kann man eine Łukasiewicz-Logik verwenden
x AND y 1
unk 0
x OR y 1 unk 0
NOT
1
1
unk 0
1
1 1
1
0
1
unk unk 0
1 unk unk
0
unk
unk
1
0
0
unk
0
0
0
1 unk 0
unk
Der Wert not existent ¬! muß dagegen durch eine stärkere Logik unterstützt werden. Wir wählen zuerst
die stärkste Logik. Wir gehen davon aus, daß eine Nichtexistenz die Wahrheitswerte dominiert.
x AND y 1
¬! 0
x OR y 1
¬! 0
NOT
1
1
¬! 0
1
1
¬! 1
0
1
¬!
¬!
1
¬! ¬! ¬!
¬! ¬! ¬!
0
0
0
¬! 0
0
1
¬! 0
¬!
¬!
Manchmal ist diese Logik zu stark. Es ist durchaus sinnvoll, eine etwas schwächere Form zu benutzen.
Die Existenz dominiert die Konjunktion, verhält sich allerdings indifferent bei der Disjunktion. Dann
ergibt sich die folgende Variante:
x AND y 1
x OR y 1 ¬! 0
NOT
¬! 0
1
1
¬! 0
1
1 1
1
0
1
¬!
¬!
1
¬! ¬! ¬!
1 ¬! ¬!
0
0
¬! 0
1 ¬! 0
¬!
0
0
¬!
Der Wert not applicable ̸∋ ist durch die materielle Logik unterstützbar.
CAU Kiel, IfI, ISE
β
x AND y
1
̸
∋
0
WS 2016/17
1
1
̸
∋
0
̸∋
̸
∋
̸
∋
0
0
0
0
0
Informationssysteme 1. Das relationale Modell
x OR y
1
̸
∋
0
1
1
1
1
̸∋
1
̸
∋
0
0
1
0
0
16
NOT
0
1
̸
∋
1
0
̸
∋
Es ist anzumerken, daß die hier vorgestellten Varianten nur 4 von 9 Möglichkeiten darstellen für eine
Logik der Nullwerte. In der Literatur wird nicht unterschieden zwischen Test auf Θ-Beziehung mit dem
Nullwert und dem Resultat dieses Tests. Es ergibt sich eine relativ einfache Behandlung mit unserem
Ansatz. Entweder ein Nullwert dominiert oder er dominiert nicht oder er wird angesehen als indifferent.
Es existieren eine Reihe von Versuchen, den Nullwert anders zu erklären. So wurde z.B. von E.F.
Codd eine einfache dreiwertige Logik betrachtet. H.-J. Klein verwendet eine 5-wertige Logik und leitet
entsprechende Umformungsregeln für die Behandlung von Tests her. Das hier betrachtete System ist
einfach und natürlich. Es entspricht zudem auch den Theorien für m-wertige Logiken.
• Eigenschaften :
• Verbund: kommutativ, assoziativ,
monoton (RC ⊆ S C ⇒ RC 1 T C ⊆ S C 1 T C ),
absorbtiv (RC ⊆ Rt+ ⇒ RC 1 Rt+ = RC ),
idempotent, RC 1 ∅ = ∅
RC 1 S C = RC × S C falls attr(R) ∩ attr(S) = ∅
RC 1 S C = RC ∪ S C falls attr(R) = attr(S)
•

 σA=c (RC ) 1 S C
C
C
σ
(RC ) 1 σA=c (S C )
σA=c (R 1 S ) =
 A=c
C
R 1 σA=c (S C )
falls A ∈ attr(R) \ attr(S)
falls A ∈ attr(R) ∩ attr(S)
falls A ∈ attr(S) \ attr(R)
• RC ⊆1ki=1 πXi (RC ) für ∪ki=1 Xi = attr(R)
• πXj (1ki=1 RiC ) ⊆ RjC
•
•
•
•
•
RC =1ki=1 πXi (RC ) dann gilt die Verbundabhängigkeit (X1 , ...Xk ) in RC
πX (RC 1 S C ) = πX (RC ) 1 πX (S C ) falls attr(R) ∩ attr(S) ⊆ X
πX (σA=c (RC )) = σA=c (πX (RC )) falls A ∈ X ∩ attr(R)
πX (πY (RC )) = πX∩Y (RC )
verallgemeinerte Vereinigung ist kommutativ, idempotent, monoton, assoziativ, distributiv mit Verbund
• Selektion σA=c , σA̸=c definieren Partition
• σX=Y (RC ) = σA1 =B1 (σA2 =B2 (...σAm =Bm (RC )...)) für X = A1 , ...Am , Y = B1 , ..., Bm
• (RC 1 S C )/S C = RC falls attr(R) ∩ attr(S) = ∅
RC /S C = πattr(R)\attr(S) (RC ) \ πattr(R)\attr(S) ((πattr(R)\attr(S) (RC ) 1 πattr(R)∩attr(S) (S C )) \
RC )
• R = (R, X, Σ), Attribute A ∈ R, B ∈ U \ {B1 , ..., Bn } Relation RC Umbenennung ϱA|B (RC ) :
{t | f or some t′ ∈ RC : t(B) = t′ (A), t[{B1 , ..., Bn } \ {A}] = t′ [{B1 , ..., Bn } \ {A}]}
über ({B1 , ..., Bn } \ {A}) ∪ {B}
• Strukturelle Rekursion Gegeben T , T ′ , Kollektionstypen C T über T (d.h. Wertemengen vom Typ T , Multimengen, Listen)
Operationen wie verallgemeinerte Vereinigung ∪C T , verallgemeinerten Durchschnitt ∩C T , verallgemeinertes leeres Element ∅C T von C T
gegeben h0 über T ′ und 2 Funktionen
h1 : T → T ′
h2 : T ′ × T ′ → T ′
.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
17
• Strukturelle Rekursion mit Insert-Definition für RC über T
srech0 ,h1 ,h2 (∅C T ) = h0
srech0 ,h1 ,h2 ({|s|}) = h1 (s)
für ein-elementige Kollektionen {|s|}
srech0 ,h1 ,h2 ({|s|} ∪C T RC ) = h2 (h1 (s), srech0 ,h1 ,h2 (RC ))
gdw. {|s|} ∩C T RC = ∅C T .
• Strukturelle Rekursion über Vereinigungs-Definition
srech0 ,h1 ,h2 (∅C T ) = h0
srech0 ,h1 ,h2 ({|s|}) = h1 (s)
für einelementige Kollektionen {|s|}
srech0 ,h1 ,h2 (R1C ∪C T R2C ) = h2 (srech0 ,h1 ,h2 (R1C ), srech0 ,h1 ,h2 (R2C ))
∅C T .
gdw. R1C ∩C T R2C =
• Einschränkung auf Funktionen h0 =⊥, Vereinigung ∪T ′ , Nullelement ⊥ of T ′
dann immer wohldefiniert
• eingeschränkte strukturelle Rekursion definiert durch Funktion h1
d.h. Erweiterung der Funktion h1
ext(h1 )(RC ) = srec⊥,h1 ,∪T ′ (RC )
.
Äquivalent zu comprehensions
• allgemeine Aggregation pump definiert durch strukturelle Rekursion mit
Beispiele:
T ′ = IN
• sum mit Startwert 0 und + für h2
d.h. pump = srec0,h1 ,+ = ext(h1 )
• map - restrukturiert jedes Element über T
Typ T ′ ist Kollektionstype
mit einem Paramenter h1 und für RC ⊆ T C wird der Wert {h1 ({s}) | s ∈ RC } erzeugt, d.h.
srec∅,h1 ,∪ = ext(h1 )
nest basiert auf einer Äquivalenzrelation über einem oder mehreren Attributen von T C mit gemeinsamen Werten und Kombinator h2
• filter Operation über splitting von h1 und h2 = ∪, T ′ = {T }, d.h. srec∅,h1 ,∪ = ext(h1 )
definiert über Formeln α von LT mit einer freien Variablen x ( α = α(x), filter = filterα )
{
{s} if |= α(s)
h1 ({s}) =
h0
if ̸|= α(s)
• SQL-Ausdruck der Form Select ... From ... Where ... sind Ausdrücke der Form map(filter(...))
• Group By ... Konstrukt - spezieller map Ausdruck
Beispiele zur relationalen Algebra.
(aus dem Material1 der vorangegangenen Jahre)
Relationen sind Mengen von Tupeln. Deshalb lassen sich die üblichen Mengenoperationen auf Relationen anwenden. Seien R un S zwei Relationen über denselben Attributen. Dann ist
R ∪ S = {t|t ∈ R ∨ t ∈ S}
R ∩ S = {t|t ∈ R ∧ t ∈ S}
R\S = {t|t ∈ R ∧ t ∈
/ S}
Beispiele:
1
Dieser Teil des Skriptum wurde von G. Fiedler (mein Dank dafür) erstellt.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
MITARBEITER
Name
Wohnort
Max Müller
Kiel
Tina Schmidt Lübeck
Klaus Meyer Kiel
STUDENTEN
Name
Max Müller
Andre Petersen
Thomas Ebert
MITARBEITER ∪ STUDENTEN
Name
Wohnort
Max Müller
Kiel
Tina Schmidt
Lübeck
Klaus Meyer
Kiel
Andre Petersen Hamburg
Thomas Ebert
Rendsburg
MITARBEITER ∩ STUDENTEN
Name
Wohnort
Max Müller Kiel
18
Wohnort
Kiel
Hamburg
Rendsburg
MITARBEITER \ STUDENTEN
Name
Wohnort
Tina Schmidt Lübeck
Klaus Meyer Kiel
Wichtig: die Mengenoperationen sind nur für Relationen mit denselben Attributen definiert!
Selektion.
Mit Hilfe der Selektion werden auf Grundlage einer gegebenen aussagenlogischen Formel die Tupel aus einer
Relation ausgewählt, die diese Formel erfüllen. Die Formel φ darf nur Aussagen über Attribute enthalten, die in R
vorhanden sind.
σφ (R) = {t|t ∈ R ∧ t |= φ}
Beispiele:
σW ohnort=′ Kiel′ (MITARBEITER)
Name
Wohnort
Max Müller Kiel
Klaus Meyer Kiel
MITARBEITER ∪ (σW ohnort=′ Rendsburg′ (STUDENTEN))
Name
Max Müller
Tina Schmidt
Klaus Meyer
Thomas Ebert
Wohnort
Kiel
Lübeck
Kiel
Rendsburg
Projektion.
Die Projektion erstellt aus einer gegebenen Relation eine neue Relation, indem sie nur eine Teilmenge der vorhandenen Attribute auswählt. Während die Selektion Tupel auswählt, also bildlich gesprochen Zeilen entfernt“,
”
wählt die Projektion Attribute aus, d.h. es werden Spalten entfernt“. Die Liste der Attribute, die in die Zielrelation
”
übernommen werden sollen, werden der Projektion als Parameter mitgegeben. Die Menge der Zielattribute muß
natürlich eine (echte oder unechte) Teilmenge der Attribute der gegebenen Relation sein. Man beachte, daß Relationen Mengen sind. Falls durch die Projektion doppelte Tupel entstehen, fallen diese zu einem einzigen Tupel in der
Zielrelation zusammen. Da wir Tupel als Funktionen definiert haben, die Attribute auf Werte abbilden, können wir
die Projektion als Einschränkung des Definitionsbereichs der Funktion auf die gewünschten Attribute definieren.
πA1 ,...,An (R) = {t|A1 ,...,An | t ∈ R}
Beispiele:
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
19
πN ame (STUDENTEN)
Name
Max Müller
Andre Petersen
Thomas Ebert
πW ohnort (MITARBEITER)
Wohnort
Kiel
Lübeck
Umbenennung.
Die Umbenennung gibt einem Attribut einen neuen Namen. Die Wertebereichsfunktion muß diese Umbenennung zulassen, d.h. die Datentypen des alten und des neuen Attributs müssen identisch sein. Außerdem darf der
neue Attributname noch nicht in der Menge der Attribute der Relation enthalten sein. Sei attr(R) die Menge der
Attribute der Relation R:
ϱA→B (R) = {t|attr(R)\{A} ∪ {(B, t(A))} | t ∈ R}
Natürlich kann man mehrere Attribute “in einem Rutsch” umbenennen. Dabei schreibt man die einzelnen Umbenennungen mit Komma getrennt als Parameter des Operators. Dies ist dann identisch mit der Nacheinanderausführung der einzelnen Umbenennungen.
Beispiel:
ϱW ohnort→Ort (STUDENTEN)
Name
Ort
Max Müller
Kiel
Andre Petersen Hamburg
Thomas Ebert
Rendsburg
Natürlicher Verbund.
Der natürliche Verbund wird benutzt, um zwei Relationen zu verbinden. Die Attribute der beiden Relationen R
und S lassen sich in drei Gruppen einteilen:
1. Attribute, die in R, aber nicht in S vorkommen
2. Attribute, die in S, aber nicht in R vorkommen
3. Attribute, die in beiden Relationen vorkommen
Die Attribute der dritten Kategorie bilden das verbindende Element“ der beiden Relationen. Wir erzeugen die
”
Tupel t der Ergebnisrelation R ◃▹ S so, daß
1. wenn wir t auf die Attribute von R projizieren, ein gleiches Tupel in R existiert und
2. wenn wir t auf die Attribute von S projizieren, ein gleiches Tupel in S existiert.
Daraus folgt, daß wir alle Paare von Tupeln r ∈ R und s ∈ S betrachten, die in den gemeinsamen Attributen
(Kategorie drei) die gleichen Werte haben. Wir verbinden die beide Tupel r und s zu t und fügen t zur Ergebnisrelation hinzu.
R ◃▹ S = {t | t|attr(R) ∈ R ∧ t|attr(S) ∈ S}
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
20
Wenn wir uns einen Algorithmus zum Berechnen des natürlichen Verbunds zweier Relationen überlegen,
können wir u.a. den Nested-Loop-Join“ anwenden. Seien A1 , ..., An die gemeinsamen Attribute der Relationen R
”
und S, dann berechnet sich der natürliche Verbund T = R ◃▹ S folgendermaßen:
T := ∅
FORALL r IN R DO
FORALL s IN S DO
IF r.A1 = s.A1 AND ... AND r.An = s.An THEN
t := r ∪ s
T := T ∪ {t}
END IF
END FOR
END FOR
RETURN T
Weitere (effizientere) Algorithmen zur Berechnung des natürlichen Verbunds werden wir später kennenlernen.
Beispiele:
VORLESUNG
HOERT
Kuerzel
Bezeichnung
Name
Kuerzel
SysInf IV Datenbanken I
Max Müller
SysInf IV
Info III
Softwaretechnologie
Max Müller
Info III
Info II
Algorithmen und Datenstrukturen
Andre Petersen Info II
SysInf I
Digitale Systeme
Andre Petersen Info III
STUDENTEN ◃▹ HOERT
Name
Wohnort
Max Müller
Kiel
Max Müller
Kiel
Andre Petersen Hamburg
Andre Petersen Hamburg
Kuerzel
SysInf IV
Info III
Info II
Info III
STUDENTEN ◃▹ HOERT ◃▹ VORLESUNG
Name
Wohnort Kuerzel
Bezeichnung
Max Müller
Kiel
SysInf IV Datenbanken I
Max Müller
Kiel
Info III
Softwaretechnologie
Andre Petersen Hamburg Info II
Algorithmen und Datenstrukturen
Andre Petersen Hamburg Info III
Softwaretechnologie
πN ame,Bezeichnung ((σW ohnort=′ Kiel′ (STUDENTEN)) ◃▹ HOERT ◃▹ VORLESUNG)
Name
Bezeichnung
Max Müller Datenbanken I
Max Müller Softwaretechnologie
Der Student Max Müller hört die Veranstaltungen mit den Kürzeln SysInf IV“ und Info III“. Wenn wir die
”
”
Relationen STUDENTEN und HOERT verbinden, ist Name das einzige gemeinsame Attribut. Wir schauen also
alle Tupel in STUDENTEN an. Für jeden gefundenen Studenten schauen wir uns alle Tupel in HOERT an. Wenn
wir einen Studenten und ein HOERT-Tupel finden, die im Attribut Name übereinstimmen, dann verbinden wir die
beiden Tupel und fügen das neue Tupel zum Ergebnis hinzu. Da der Student Thomas Ebert keine Veranstaltung
hört, fällt er aus dem Ergebnis heraus.
Auf die gleiche Art und Weise können wir das so entstandene Ergebnis mit der Relation VORLESUNG verbinden. Kuerzel ist das verbindende Attribut. Da die Veranstaltung SysInf I“ von keinem Studenten gehört wird,
”
taucht sie in der Ergebnisrelation nicht auf.
Falls die beiden Relationen R und S keine gemeinsamen Attribute haben, wird das Kreuzprodukt beider Relationen gebildet, d.h. jedes Tupel aus R wird mit jedem Tupel aus S verknüpft.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
21
Division.
Der Divisionsoperator erlaubt die kompakte Formulierung von für-alle“-Anfragen. Betrachten wir folgende
”
Relationen:
HOERT
Name
Kuerzel
VORLESUNG
Kuerzel
Bezeichnung
Max Müller
SysInf IV
SysInf IV Datenbanken I
Max Müller
Info III
Info III
Softwaretechnologie
Max Müller
Info II
Info II
Algorithmen und Datenstrukturen
Max Müller
SysInf I
SysInf I
Digitale Systeme
Andre Petersen Info II
Andre Petersen Info III
Wenn man jetzt die Anfrage Welcher Student hört alle Vorlesungen“ stellt, dann suchen wir die Namen, für
”
die für jedes Kürzel in der Relation VORLESUNG ein passendes Tupel in der Relation HOERT existiert (in unserem
Beispiel ist dies Max Müller.) Das leistet der Divisionsoperator:
HOERT ÷ (πKuerzel (VORLESUNG))
Name
Max Müller
Formal gesprochen: es existieren zwei Relationen R und S, wobei die Attributmenge der Relation S eine echte
Teilmenge der Attributmenge von R ist: attr(S) ( attr(R). Das Ergebnis der Division ist eine Relation über
den Attributen, die in R, aber nicht in S vorkommen (attr(R ÷ S) = attr(R)\attr(S)). Diese Relation enthält
genau die Tupel t, die aus einem Tupel r ∈ R durch Projektion auf attr(R)\attr(S) entstehen, so daß man dieses
Tupel mit allen Tupeln s ∈ S ergänzen kann, um wieder ein Tupel aus R zu erzeugen. Mit anderen Worten: das
Ergebnistupel t steht in R mit allen Tupeln der Relation S in Beziehung“:
”
R ÷ S = {t | attr(t) = attr(R)\attr(S) ∧ {t} ◃▹ S ⊆ R}
Anfragebeispiele.
Wir wenden nun die vorgestellten Operationen an, um Anfragen an ein Beispielschema zu stellen. Wichtig:
wir stellen Anfragen immer gegen ein Datenbankschema, nicht gegen einen konkreten Datenbankzustand. Die
Auswertung der Anfrage erfolgt stets bzgl. eines konkreten Datenbankzustandes. Unsere Anfrage muß aber für
alle gültigen Zustände unseres Schemas funktionieren.
Wir benutzen folgendes Beispielschema (Primärschlüssel sind unterstrichen):
{
STUDENT({MatrikelNr,Name,Wohnort}),
MITARBEITER({BearbeiterNr,PersonalNr,Name,Wohnort}),
VORLESUNG({VorlesungsNr,Bezeichnung}),
DOZENT({BearbeiterNr,PersonalNr,VorlesungsNr}),
HOERT({MatrikelNr,VorlesungsNr,Wiederholung}),
FINDETSTATT({VorlesungsNr,Zeit,RaumNr}),
RAUM({RaumNr,Bezeichnung})
}
Folgende Fremdschlüssel sind definiert:
DOZEN T [BearbeiterN r, P ersonalN r] ⊆ M IT ARBEIT ER[BearbeiterN r, P ersonalN r]
DOZEN T [V orlesungsN r] ⊆ V ORLESU N G[V orlesungsN r]
HOERT [M atrikelN r] ⊆ ST U DEN T [M atrikelN r]
HOERT [V orlesungsN r] ⊆ V ORLESU N G[V orlesungsN r]
F IN DET ST AT T [V orlesungsN r] ⊆ V ORLESU N G[V orlesungsN r]
F IN DET ST AT T [RaumN r] ⊆ RAU M [RaumN r]
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
22
1. Anfrage Gib die Bezeichnung der Vorlesung ’080104’.“
”
Die Daten zu Vorlesungen stehen in der Relation VORLESUNG. ’080104’ ist eine Vorlesungsnummer einer konkreten Vorlesung, also müssen wir diese konkrete Vorlesung selektieren. Wir interessieren uns nur für die Bezeichnung
dieser Vorlesung, also müssen wir das Ergebnis auf das Attribut Bezeichnung projizieren:
πBezeichnung (σV orlesungsN r=′ 080104′ (V ORLESU N G))
2. Anfrage Gib die Namen aller Studenten, die die Veranstaltung ’080104’ hören, zusammen mit den Namen
”
aller Dozenten der Veranstaltung ’080104’.
Die Daten der Studenten stehen in der Relation STUDENTEN, die Teilnahme in der Relation HOERT. Wenn
wir aus HOERT die Tupel für die Veranstaltung ’080104’ selektieren, erhalten wir die Matrikelnummern der an
’080104’ teilnehmenden Studenten. Wenn wir dieses Zwischenergebnis mit der Relation STUDENTEN verbinden
und anschließend projizieren, erhalten wir die Namen dieser Studenten. Analog verfahren wir mit DOZENT und
MITARBEITER. Beide Relationen zusammen bilden das Ergebnis der Anfrage.
πN ame ((σV orlesungsN r=′ 080104′ (HOERT )) ◃▹ ST U DEN T EN ) ∪
πN ame ((σV orlesungsN r=′ 080104′ (DOZEN T )) ◃▹ M IT ARBEIT ER)
3. Anfrage Angenommen, der Name identifiziert eine Person eindeutig. Gib die Personen, die Dozent einer
”
Veranstaltung sind und sich parallel dazu für diese Veranstaltung als Student angemeldet haben.“
Wir verbinden die DOZENT-Relation mit der MITARBEITER-Relation und projizieren anschließend auf die Attribute Name und VorlesungsNr, so bekommen wir die Namen der Dozenten einer Veranstaltung. Analog verfahren wir mit den eingeschriebenen Studenten. Der Durchschnitt beider Mengen enthält die Personen, die gleichzeitig
Dozent und Student einer Vorlesung sind.
πN ame,V orlesungsN r (DOZEN T ◃▹ M IT ARBEIT ER) ∩
πN ame,V orlesungsN r (HOERT ◃▹ ST U DEN T )
4. Anfrage
Finde Überschneidungen, d.h. gib die Namen der Studenten zusammen mit der entsprechenden Zeit
”
aus, so daß dieser Student zu diesem Zeitpunkt in zwei Räumen präsent sein muß.“
Wir bilden für jeden Studenten Paare von Teilnahmen an Vorlesungsdurchführungen und verwerfen die Paare,
deren Zeiten unterschiedlich sind. Teilnahmen an Vorlesungsdurchführungen erhalten wir durch das Verbinden der
Relationen HOERT und FINDETSTATT. Da Fremdschlüssel bzgl. der Relation VORLESUNG definiert sind, können
wir die Relation VORLESUNG weglassen2 . Wir benötigen das Attribut MatrikelNr aus HOERT und die Attribute
Zeit und RaumNr aus FINDETSTATT. Wir führen diese Anfrage zweimal aus, beim zweiten mal benennen wir
alle Attribute bis auf die Matrikelnummer um. Anschließend selektieren wir alle Tupel, deren Zeiten gleich, deren
Räume aber verschieden sind. Diese Menge verbinden wir mit der STUDENT-Relation und projizieren alles außer
dem Namen und der Zeit aus. πN ame,Zeit (
σZeit=Zeit2∧RaumN r!=RaumN r2 (
πM atrikelN r,Zeit,RaumN r (HOERT ◃▹ F IN DET ST AT T )
◃▹
(ϱZeit→Zeit2,RaumN r→RaumN r2 (
πM atrikelN r,Zeit,RaumN r (HOERT ◃▹ F IN DET ST AT T )
))
)
◃▹
STUDENT
)
2
Überlegen Sie sich, was passiert, wenn die Fremdschlüssel nicht definiert wären.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
23
5. Anfrage Gib die Studenten, die bei allen Dozenten eine Veranstaltung hören.“
”
Zunächst benötigen wir eine Zuordnung von Studenten (Matrikelnummern) zu Dozenten (Bearbeiternummer, Personalnummer). Anschließend teilen wir diese Relation durch die Relation mit allen Dozenten (Bearbeiternummer,
Personalnummer) und erhalten das gewünschte Ergebnis.
(πM atrikelN r,BearbeiterN r,P ersonalN r (HOERT ◃▹ DOZEN T ))
÷
(πBearbeiterN r,P ersonalN r (DOZEN T ))
1.4.2 Anfragen mit der Relationenalgebra
• Abbildung
QDD : SAT (RS) −→ SAT (R)
• universumstreu µ ∈ QDD ∧ A ∈ R ⇒ µ(A) ∈ DDD
• berechenbar - partiell rekursive Funktion
• isomorphietreu - für Datenbanken M, M’ über Datenschemes DD, DD′ und eine Bijektion von DD auf
DD′
M
h
-
Q
Q
?
Q(M )
M′
?
h
-
h(Q(M )) = q(M ′ ) = Q(h(M ))
Damit: Querying Hypergraphen
Beispiel aus dem Unibeispiel
Bestimme für den Studenten “Alf Brummkopf” den Fachbereich seines Hauptfaches.
Relationen:
• Person = ({Name.First, Name.Fam, Name.Titel, Addr...., Personennummer} ,
{ Personennummer}, ∅)
• Student = ( { StudNr, Person.Personennummer, Hauptfach.Fachber.DName }, {StudNr},
{ { Personennummer } −→ { StudNr } } )
• sonstige Semantik: Student[Person.Personennummer] ⊆ Person[Personennummer] ...
Damit kann dann die Anfrage im Hypergraphen direkt dargestellt werden.
Darstellung erfolgt nach Einführung der Algebra. Folgende Schritte führen zur korrekten Anfrage:
1. Person P ersonennummer 1P erson.P ersonennummer Student
2. σN ame.F irst=‘Alf ′ ∧N ame.F am=‘Brummkopf ′ (Person P ersonennummer 1P erson.P ersonennummer Student)
3. (σN ame.F irst=‘Alf ′ ∧N ame.F am=‘Brummkopf ′ (Person)) P ersonennummer 1P erson.P ersonennummer Student
4. πHauptf ach.F achber.DN ame ((σN ame.F irst=‘Alf ′ ∧N ame.F am=‘Brummkopf ′
(Person)) P ersonennummer 1P erson.P ersonennummer Student)
5. πHauptf ach.F achber.DN ame (
(σN ame.F irst=‘Alf ′ ∧N ame.F am=‘Brummkopf ′ (Person))
P ersonennummer 1P erson.P ersonennummer Student)
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
24
PERSON
Name
Adresse
Spezialis
PNum
Kurs
Semester
SNum
Note
TEILNAHME
PROFESSOR
Zeit
Raum
VORLES
Hauptf
Nebenf
Betreuer
STUDENT
6. πHauptf ach.F achber.DN ame (
(σN ame.F irst=‘Alf ′ ∧N ame.F am=‘Brummkopf ′ (
πP ersonennummer,N ame.F irst,N ame.F am (Person))
P ersonennummer 1P erson.P ersonennummer πP erson.P ersonennummer,Hauptf ach.F achbereich.DN ame Student)
Anfragen werden in einer Anfragesprache Q = LS1 ,S2 formuliert, die über Schemata Si definiert ist.
Das Schema S1 wird Input-Schema genannt, das Schema S2 Output-Schema.
Gegeben seien weiterhin die Menge InstSi aller Datenbanken über Si .
Wir können die Berechnung von Anfragen als Relation auffassen:
RSQ1 ,S2 = { (q, D1 , D2 ) | q ∈ Q ∧ D1 ∈ InstS1 ∧ D2 ∈ InstS2 }.
Eine Funktion f : Q × InstS1 → P(InstS2 ) realisiert eine Relation RSQ1 ,S2 falls für jedes q ∈ Q und jede
Datenbank D1 ∈ InstS1 gilt, daß
(1) falls kein y ∈ RSQ1 ,DS2 existiert mit (x, D1 , y) ∈ RSQ1 ,S2 dann f (x) = λ und
(2) f (x) = y für (x, D1 , y) ∈ RSQ1 ,S2 mit y ̸= λ.
Eine Realisierung muß demzufolge nicht die Menge aller möglichen Resultate berechnen, sondern mindestens eines, falls es existiert.
Eine Anfrage q ist in einer Anfragesprache Q über einem Schema S formuliert und liefert für eine Datenbank D
über S ein oder mehrere Resultate.
Demzufolge ist eine Anfrageanforderung eine spezifische Suchrelation definierbar:
RΠ = { (x, s) | x ∈ DΠ ∧ s ∈ SΠ (x) }.
Eine Funktion f : Σ∗ → Σ∗ realisiert eine Relation R falls für jedes x ∈ Σ∗ gilt, daß
(1) falls kein y ∈ Σ+ existiert mit (x, y) ∈ R dann f (x) = λ und
(2) f (x) = y für (x, y) ∈ R mit y ̸= λ.
Eine Anfrageanforderung besteht intentional aus zwei Komponenten:
Suchkonzept: Ein Suchkonzept beschreibt die Suchanforderung. Wir haben dazu Anfrageformen eingeführt.
Resultatkonzept: Ein Resultatkonzept beschreibt die Einbettung von Anfrageresultaten in ein Medienobjekt, das
neben einem Tupelraum zur Aufnahme der Daten auch über eine eigenständige Repräsentation verfügt, sowie
Strukturierungs- und Repräsentationsfunktionen.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
25
Die Forschung zur Datenbankanfrage-Unterstützung hat sogar eine allgemeinere Formulierung für Anfragen
hervorgebracht, wie in Bild 1 illustriert.
Datenbank
schema
Suchanforderung
Such: konzept
- Anfrageform
?
- SQL- anfrage
?
z Resultatkonzept
- Antwortform
?
SQL-Antwortmenge
? )
Antwort
auf Suche
DBMS-Anfrageinterface
q
DBMS-Antwortrepräsentation
Abbildung 1: Konzeptbasiertes Berechnen von Anfragen im klassischen Zugang und mit Anfrage- und Antwortformen
Der Zugang über Anfrage- und Antwortformen wird durch folgende Abbildungsvorschriften unterstützt:
map : search concept 7→ query form
compile
:
(query form , database schema)
map
process
output
:
:
result concept
:
SQL query
7→
7→
7→
SQL query
answer form
SQL answer set
(SQL answer set , answer form)
7→
answer to search
Ziele einer Anfrageformulierung sind demzufolge:
Eingrenzung des Nichtdeterminismus: Jede Anfrage sollte so eindeutig wie nur möglich gestellt werden.
Berechenbarkeit: Jede Anfrage sollte in eine Anfragevorschrift transformierbar sein, die ein Computer berechnen
kann.
Effektive Berechenbarkeit: Anfragen sollten auch in hinreichend kurzer Zeit bemessen am zu bewältigenden
Datenumfang berechnet werden.
Abbildung auf die Anfragesprache: Die Anfragen sollten in der zur Verfügung stehenden Anfragesprache formulierbar sein.
Demzufolge ist die Formulierung einer Anfrage stets ein Vierschrittverfahren:
1. Ergänzung der Anfrageäußerung zu einer genau formulierten Anfrage durch
• Disambiguierung von Fragesätzen,
• Ergänzung der Ellipsen zu vollständigen Sätzen,
• Klärung, inwieweit eine Closed-World-Assumption oder eine partiell offene Datenwelt in der Datenbank unterlegt wird (Behandlung von Nullwerten) und
• Schärfung der Formulierung von Aggregationsfunktionen;
2. Reformulierung der Anfrage in eine existentiell geprägte Form wobei
• nicht alle Generalisierungen aufgelöst werden müssen, sondern über ALL und ANY abgebildet werden
können, und
• ggf. auch besser überschaubare Boolesche Bedingungen erzeugt werden, indem z.B. die Negation
möglichst weit zu den atomaren Formeln gezogen wird.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
26
3. Abbildung der Anfragebegriffe auf das Datenbank-Schema wobei ggf.
• Spezifika der Schema-Definition mit beachtet werden wie z.B.
• Nullwerte und Default-Werte, die eine Anfrageberechnung verändern können, und
• referentielle Inklusionsabhängigkeiten, die zur Verkürzung der Anfragepfade mit herangezogen
werden können,
• auch Hilfstabellen temporär für die Anfrage gebildet werden oder Sichten als Tabellen für eine ‘Nebenrechnung’ bereitgestellt werden, sowie
• eine Schrittfolge zur Berechnung der Resultate durch eine Prozedur bereitgestellt wird.
4. Abbildung der Resultatskonzepte auf Antwortformen und Repräsentation dieser in SQL-Form.
1.4.3 Der generierende Kern der Relationenalgebra
Da einige Operationen andere ausdrücken können (z.B. gilt M ∩ N = M \ (M \ N )), können wir die Relationenalgebra einschränken auf die folgenden Operationen
Projektion
Umbenennung
Verbund
Vereinigung
Differenz
Selection
Lemma 4 Der Theta-Verbund ist ausdrückbar durch Selektion und Verbund.
RAj ΘBk R′ = σAj ΘBk (R × R′ )
Proposition 1 Alle Operationen der Relationenalgebra sind ausdrückbar durch Ausdrücke über Relationennamen
und den Operationen Projektion, Umbenennung, Verbund, Selektion, Vereinigung und Differenz.
Corollary 1 Alle Operationen der Relationenalgebra sind ausdrückbar durch Ausdrücke über Relationennamen
und den Operationen Projektion, Umbenennung, kartesisches Produkt, Selektion, Vereinigung und Differenz.
1.4.4 Sichten
Relationale Sicht wird definiert durch Relationenschema V der Sicht (meist wird außerdem angenommen ΣV =
∅) und einer Anfrage über einem relationalen Datenbankschema
Relationale Sichtensuite wird definiert durch ein Datenbankschema mit relationalen Sichten
Probleme:
Modifikation der Grunddatenbank durch Sichten (Sichten-Update-Problem) [Bei Nichtidentifizierbarkeit von
Objekten der Grunddatenbank durch eine Sicht, ist ein Modifikation der Datenbank verboten. Dieses Problem
kann gelöst werden durch separate Modifikationssichten neben den Retrievalsichten, die durch Hilfssichten
miteinander und mit der Grunddatenbank gekoppelt werden.]
Virtualisierung oder Materialisierung von Sichten ohne oder mit Kollaborationsvertrag
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
27
1.4.5 Eine bessere mathematische Grundlage der relationalen Algebra
Der folgende Teil zeigt, daß auch die Väter des relationalen Modelles nicht allzu viel von Mathematik verstanden
und deshalb auch die falsche Welt erfunden haben. Erstaunlich ist, wie überlebensfähig die unmathematischen
Denkweisen sind und wie gut trotzdem die Technologien geworden sind.
“Die Vater” und nicht der ‘Vater’, weil nicht die Arbeit
E. F. Codd A Relational Model of Data for Large Shared Data Banks. Commun. ACM., 13 (6): pp. 377-387, 1970
sondern die (Codd durchaus sehr gut bekannte) Arbeit
D. L. Childs, Feasibility of a set-theoretical data structure - a general structure based on a reconstituted definition of relation. Proc. IFIP Cong., North Holland Pub. Co., Amsterdam, pp. 162-172., 1968
das relationale Modell eingeführt hat.
Zylindrische Algebren (Henkin 1985) RC ∨ S C , ∼ RC , RC [X] = πX (RC ), Di,j (RC ) = σi=j (RC )
Explizite Mitführung des Headers R einer Relation RC (wie wir dies bereits für die Operationen vorn betrachtet
haben) erlaubt die Einführung folgender Operationen und Prädikate
• Projektion: wie üblich
• Teiltyp: (R, RC ) ⊑ (S, S C ) falls R ⊇ S und πS (RC ) ⊆ S C
• dem natürlichen Verbund ⊗ als “meet”-Operation oder infimum-Operation mit
(R, RC ) ⊗ (S, S C ) := (R ∪ S, RC 1 S C )
• der inneren Summe ⊕ als “join”-Operation als supremum-Operation
(R, RC ) ⊕ (S, S C ) := (R ∩ S, πR∩S (RC ) ∪ πR∩S (S C ))
Die Operationen ⊗ und ⊕ sind idempotent, kommutative und assoziativ. Sie erfüllen auch das Adsorptionsgesetz
RC ⊗ (RC ⊕ S C ) = RC
RC ⊕ (RC ⊗ S C ) = RC .
Die Teiltyprelation führt direkt auf einen (nicht-distributiven, modularen) relationalen Verband
• mit einem maximalen Element ⊤ := (∅, ∅)
• dem minimalen Element ⊥ := (U, ∅)
• ⊗ und ⊕ sind die infimum- und supremum-Operationen des Verbandes für die partielle Ordnung
• partiellen Distributivitätsgesetzen, bei denen die Übereinstimmung der header gefordert werden muß
(R, RC ) ⊗ ((S, S C ) ⊕ (T, T C )) = ((R, RC ) ⊗ (S, S C )) ⊕ ((R, RC ) ⊗ (T, T C ))
mit der Einschränkung R ∩ S = R ∩ T
(R, RC ) ⊕ ((S, S C ) ⊗ (T, T C )) = ((R, RC ) ⊕ (S, S C )) ⊗ ((R, RC ) ⊕ (T, T C ))
mit der Einschränkung R ∩ S = R ∩ T = S ∩ T
Führt man explizit auch die Zylinderalgebra-Operationen
• die Diagonale DA,B = {(a, b) ∈ Dom(A) × Dom(B)|a = b} und
• die Entleeruung (R, RC )∅ := (R, ∅)
mit ein, dann kann man alle Operationen der relationalen Algebra ausdrücken:
• Selektion σA=B (RC ) durch (R, RC ) ⊗ DA,B
• Projektion πX (RC ) durch (R, RC ) ⊕ (X, ∅)
• Join durch ⊗
• Umbenennung ρA7→B (RC ) durch ((R, RC ) ⊗ DA,B ) ⊕ (R \ {A} ∪ {B}, ∅)
• Vereinigung direkt für gleiche header
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
28
1.5 Der relationale Kalkül / Relationenkalkül / Tupelkalkül
1.5.1 Der Relationenkalkül
Relationenalgebra und Relationenkalkül
zwei verschiedene Anfragesprachen
relationale Anfragesprache: formale Sprache L, die für jeden Ausdruck angewandt auf eine Relation wiederum
eine Relation liefert
i.a. endliche Relation
2 Arten
Relationenalgebra natürlicher Verbund, Vereinigung, Selektion, Projektion, Vergleich, Komplement
Relationenkalkül Sprache der Prädikatenlogik
Ausdrücke der relationalen Algebra definiert über
• Ri ∈ LAl
type(Ri ) = Ri
• T 1 T ′ ∈ LAl
type(T 1 T ′ ) = type(T ) ∪ type(T ′ )
• T + T ′ ∈ LAl
type(T 1 T ′ ) = type(T ) ∪ type(T ′ )
• πη (T ) ∈ LAl
type(η) = T ′ , type(πη (T )) = T ′
• σA=B (T ) ∈ LAl
type(σA=B ) = type(T )
• σA̸=B (T ) ∈ LAl
type(σA=B (T )) = type(T )
T
• γ(T ) = DDD
\ T ∈ LAl
type(γ(T )) = type(T )
Diese Sprache ist nicht sicher, falls man die Endlichkeit von Relationen voraussetzt.
Analog läßt sich eine sichere Algebra aufbauen:
• Selektionsausdrücke
• Join, Projektion, Umbennenung, (Vereinigung,) Differenz
Semantik beider Sprachen in der üblichen Art definiert
Definition der Auswertungsfunktion eval
siehe Semantik von PS
Eigenschaften
1. Jede Anfrage der relationalen Algebra ist eine Anfrage im Sinne der obigen Definition.
2. Die sichere Algebra ist nicht isomorphietreu (σA=c ).
3. Die transitive Hülle ist mit keiner von beiden Algebren berechenbar.
R = {A, B}, (RC )∗ = {(a, b)|∃a1 , ..., ak : (a, a1 ), (a1 , a2 ), ...(ak−1 , ak ), (ak , b) ∈ RC }
Beweis über die Nichtexistenz eines Ausdruck, mit dem (RC )∗ berechnet werden kann. Ausdrückbar ist: es
gibt einen Weg der fixierten Länge n.
Mit logischen Modellen aussdrückbar.
4. Eine Anfrage e(db) ist in LAl genau dann definierbar, wenn sie invariant geüber allen Automorphismen
vondb ist.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
29
Relationenkalkül3 (Attributkalkül (Variable Attributen zuordnet (tupelwertige Kalüle sind analog))
• PRi (vi,1 , ..., vi,ni ), vi,j Variable vom Typ Aj für Ri = {A1 , ..., Ani } und Ordnung über Ri
kurz: Ri (vi,1 , ..., vi,ni )
• α ◦ β, ◦ ∈ {∨, ∧}
• ¬α
• ∃v α,
∀v α
Der Relationenkalkül kann elegant eingeführt werden in Verallgemeinerung von Atzeni/Ceri/Paraboschi/Torlone
als Tripel
{target structure | context | conditions}
Damit kann man z.B. auch XML-Abhängigkeiten elegant formulieren, wie Link und Hartmann zeigten. Ursprünglich verwendeten Atzeni/Ceri/Paraboschi/Torlone das Tripel
{target structure | C | conditions}
für den Bereich (range) [context] C.
Diese Struktur ist elegant direkt mit SQL verbindbar sowie auch der relationalen Algebra .
Der “algebraische” Relationenkalkül ist besser einführbar nach Thalheim (Teubner 1991) durch:
{t | R |
1}
for each relation schema R
{t | C | β}
{t | C | β ∧ α}
for selection σα
{t1 | C1 | α1 } , {t2 | C2 | α2 }
{t1 1 t2 | C1 ∪ C2 | α1 ∧ α2 }
{t | C | α1 } , {t | C | α2 }
{t | C | α1 ∨ α2 }
{t | C | α1 } , {t | C | α2 }
{t | C | α1 ∧ ¬α2 }
{t | C | α}
{ρ(t) | C | α}
{t | C | α}
{πX (t) | C | α}
3
for join 1
for union ∪
for set difference \
for renaming ρ
for projection πX
Der Tupelkalkül ist eine der Verirrungen der Datenbankforschung. Man hat brute-force den Prädikatenkalkül genutzt. Leider wurde
dabei übersehen, daß endliche Mengen andere Kalküle erfordern und sich dann extensiv bemüht mit vielen Begriffen, die Anfangsfehler
algorithmisch oder zumindest begrifflich für die Konstruktionen auszumerzen. Ein anderes solches Beispiel ist auch die Definition des Begriffes “dependency”, die heute kaum noch jemand so nutzt, sondern nur für die speziellen Klassen.
Diese Situation ist typisch für viele Entwicklungen in der Informatik: Erst unglücklich anstellen bei der Definition und dann Generationen
von Forschern verbraten mit der Reparatur. Brute-force-Entwicklungen ohne Verständnis des Gegenstandes führen meist zu Verirrungen
und aufwendigen Reparaturmaßnahmen. XML wiederholt gerade diese Geschichte. Gestartet als extrem einfaches und wundervolles Austauschformat und dort extrem nützlich und nun mittlerweile als volle Programmier- und Darstellungssprache mit einem Wirrwarr, das man
kaum übertreffen kann.
Frei nach H. Thiele: Definitionen sind Glücksache. Und Glück haben nur wenige.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
30
1.5.2 Syntax des relationalen Tupelkalküls
4
Der relationale Tupelkalkül (engl. tuple relational calculus, TRC) ist eine Anfragesprache für relationale Datenbanken, die Ausdrücke der Prädikatenlogik erster Stufe benutzt, um das gewünschte Ergebnis einer Anfrage zu
beschreiben. Eine mögliche Anfrage an das Vorlesungs- und Studentenbeispiel aus dem Übungsskript zur relationalen Algebra könnte z.B. sein:
Gib die Namen und Matrikelnummern der Studenten, die eine Vorlesung hören, die von einem Dozenten namens
Meyer gehalten wird.
Wer die relationale Algebra benutzt, muß eine Operationsfolge angeben, die das Ergebnis aus den Relationen
der Datenbank konstruiert. Die Anfrage ist aber eigentlich anders formuliert: die gesuchten Studenten werden durch
die sie charakterisierenden Eigenschaften beschrieben, nämlich die Eigenschaft, daß sie bestimmte Vorlesungen
hören. Diese Vorlesungen sind dadurch charakterisiert, daß sie von einem bestimmten Dozenten (mit dem Namen
Meyer) gehalten werden. Der TRC versucht, diese Charakterisierung auf einem formalen Wege durchzuführen.
Sei ein Datenbankschema D gegeben. Wir definieren eine Menge von Variablen. In den folgenden Ausführungen werden wir Variablen mit kleinen lateinischen Buchstaben schreiben. Die Variablen stellen Platzhalter für
Tupel dar. Jeder Variablen ist ein Typ zugeordnet: seien A1 , ..., An die Attribute über denen die Tupel, die der
Variable später zugeordnet werden sollen, definiert sind. Dann ist die Menge {A1 , ..., An } der Typ der Variable.
Den Typ einer Variablen, z.B. der Variablen x, bezeichnen wir mit type(x).
In unserem Beispiel suchen wir z.B. die Namen und die Matrikelnummern der Studenten. Deshalb können wir
z.B. einen Typ type(x) = {M atrikelN r, N ame} einführen. Die Variable x ist jetzt Platzhalter für Tupel über
MatrikelNr und Name.
Eine Anfrage des TRC ist eine prädikatenlogische Formel (erster Stufe) der folgenden Form:
• Wenn R ein Relationenschema in D und x eine Variable mit type(x) = attr(R) ist, dann ist R(x) eine
Formel im Sinne des TRC mit x als freier Variablen.
Beispiele:
ST U DEN T (y) mit type(y) = {M atrikelN r, N ame, W ohnort}
RAU M (z) mit type(z) = {RaumN r, Bezeichnung}
• Wenn x und y Variablen, A ∈ type(x) und B ∈ type(y) Attribute und ⊙ ein Prädikat über den Typen von
A und B ist, dann ist x.A ⊙ y.B eine Formel im Sinne des TRC mit den freien Variablen x und y. Analog
wird der Vergleich mit Konstanten definiert.
Beispiele:
y.W ohnort =′ Kiel′
x.N ame = y.N ame
• Wenn φ und ψ Formeln im Sinne des TRC sind, dann sind auch die aussagenlogischen Verknüpfungen von
φ und ψ Formeln im Sinne des TRC. Die freien Variablen entsprechen denen der Formeln φ und ψ.
Beispiele:
y.W ohnort =′ Kiel′ ∧ x.N ame = y.N ame
x.N ame =′ P etersen′ =⇒ y.N ame =′ Schmidt′
4
Dieser Teil des Skriptum wurde von G. Fiedler (mein Dank dafür) erstellt.
Wir empfehlen trotz der obigen Bemerkung das Studium des Tupelkalkül, weil die in der Datenbanktechnologie übliche Mengenverarbeitung dem in der sequentiellen Programmierung erprobten Informatiker etwas ungebräuchlich ist. Meist fällt dem Anfänger eine Anfrageformulierung mit dem TRC leichter, man sollte aber über die Probleme und die schwierige Behandlung sich im Klaren sein.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
31
• Wenn φ eine Formel im Sinne des TRC und x eine freie Variable in φ ist, dann sind auch
(∀x)(φ)
(∃x)(φ)
Formeln des TRC. Die freien Variablen dieser Formeln entsprechen den freien Variablen von φ ohne x.
Beispiel:
(∀v)(V ORLESU N G(v) =⇒ (∃f )(F IN DET ST AT T (f ) ∧ f.V orlesungsN r = v.V orlesungsN r))
Erste Semantikdefinition des TRC.
Im Übungsskript “Grundlagen der Logik” wurde der Begriff des Modells für eine Formel φ der Prädikatenlogik erster Stufe eingeführt. Wir gehen in dieser Diskussion von gegebenen Wertebereichen und einer festen (und
trivialen) Belegung der Konstantensymbole aus, deshalb sind wir an Paaren I, ϱ interessiert, die unsere Formel φ
wahr werden lassen.
Die Interpretation I ordnet den Prädikaten eine Ausprägung zu, also die Menge von Tupeln, für die das Prädikat
zu wahr ausgewertet wird. Im TRC betrachten wir 2 verschiedene Arten von Prädikaten:
1. R(x) für ein Relationenschema R,
2. ⊙, definiert auf Ebene der Datentypen.
Es liegt nahe, die Ausprägung der Prädikate der ersten Art an die Relationen unserer Datenbank zu binden.
Für die Prädikate der zweiten Art benutzen wir die Definitionen der Prädikate in den Datentypen. Da wir diese
Definition als konstant ansehen, werden wir in der weiteren Diskussion nur noch die Prädikate der ersten Art
betrachten.
Als Interpretation benutzen wir demnach einen ( den aktuellen“) Zustand σ(D) zu unserem Datenbankschema
”
D. Als Ergebnis einer TRC-Anfrage bezeichnen wir die Menge der Variablenbelegungen ϱ, so daß
σ(D), ϱ |= φ
Da i.d.R. nicht die Belegungen aller Variablen interessant sind, wird pro Antwort auf die Anfrage φ nur die
Belegung der freien Variablen in φ angegeben. Um auch dies weiter einzuschränken, kann man vor die Formel
φ eine Projektionsliste mit den gewünschten Attributen schreiben. Seien x1 , ..., xk die freien Variablen in φ und
A1 , ..., Al Attribute in den Typen von x1 , ..., xk , dann kann man schreiben:
x1 .A1 , ..., xi .Aj | φ
Diese Schreibweise konstruiert Tupel über {A1 , ..., Aj } als Ergebnis der Anfrage.
Beispiel: Gib die Namen und Matrikelnummern aller Kieler Studenten zusammen mit den Veranstaltungsnum”
mern, so daß dieser Student diese Veranstaltung mindestens in der ersten Wiederholung hört.“
s.N ame, s.M atrikelN r, h.V orlesungsN r | ST U DEN T (s) ∧ HOERT (h)∧
h.M atrikelN r = s.M atrikelN r ∧ h.W iederholung ≥ 1
Wenn die Menge der freien Variablen der Formel φ leer ist (d.h. alle Variablen in φ sind an Quantoren gebunden), dann ist die Antwort entweder ja (d.h. σ(D) |= φ) oder nein (d.h. σ(D) 2 φ).
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
32
Selbststudium Führen Sie sich anhand der folgenden Semantikdefinition vor Augen, daß die Variablenbelegung
ϱ in diesem Falle für die Erfüllbarkeit keine Rolle spielt. Führen Sie sich weiterhin vor Augen, daß die Projektion
auf die gewünschten Attribute nur syntaktischer Zucker“ ist.
”
Nachdem wir festgelegt haben, welche Attribute als Antwort auf die Anfrage auszugeben sind, können wir eine
erste Semantikdefinition des TRC angeben. Sei ϱ eine Variablenbelegung:
1. Sei R ein Relationenschema und x eine Variable, dann gilt σ(D), ϱ |= R(x) gdw. ϱ(x) ∈ σ(R), d.h. das
Tupel, mit dem x belegt ist, ist in der zu R gehörenden Relation enthalten.
2. σ(D), ϱ |= x.A ⊙ y.B gdw. ⊙(ϱ(x)(A), ϱ(y)(B)), d.h. wir betrachten die Tupel, mit denen die Variablen
x und y belegt sind. Wenn das Prädikat ⊙ auf die Werte der Attribute A und B dieser Tupel angewendet
wird, muß es wahr ergeben, damit der Datenbankzustand und die Variablenbelegung ein Modell bilden.
Vergleiche mit Konstanten werden analog behandelt.
3. σ(D), ϱ |= φ ∧ ψ für zwei Formeln φ und ψ gdw. σ(D), ϱ |= φ und σ(D), ϱ |= ψ. Die anderen aussagenlogischen Verknüpfungen werden analog behandelt.
4. σ(D), ϱ |= (∃x)(φ), gdw. es eine Variablenbelegung ϱ′ gibt, so daß sich ϱ′ von ϱ höchstens in der Belegung
von x unterscheidet und σ(D), ϱ′ |= φ gilt.
5. σ(D), ϱ |= (∀x)(φ), gdw. für alle Variablenbelegungen ϱ′ , die sich von ϱ höchstens in der Belegung von x
unterscheiden, gilt, daß σ(D), ϱ′ |= φ.
Auswertung einer Anfrage.
Es sei der folgende Zustand gegeben (es sind nur die relevanten Relationen angegeben):
STUDENT
MatrikelNr
Name
Wohnort
190245
Max Müller
Kiel
327641
Tina Petersen
Flensburg
612491
Tobias Schulze
Kiel
762198
Uwe Schmidt Rendsburg
VORLESUNG
VorlesungsNr
080104
080016
080127
080176
Bezeichnung
SysInf IV
Info IV
Info II
SysInf II
HOERT
MatrikelNr VorlesungsNr
190245
080104
190245
080016
327641
080127
327641
080176
612491
080104
612491
080016
612491
080127
612491
080176
762198
080104
Betrachten wir obige Anfrage
Wiederholung
0
0
0
0
0
0
1
1
2
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
33
s.N ame, s.M atrikelN r, h.V orlesungsN r | ST U DEN T (s) ∧ HOERT (h)∧
h.M atrikelN r = s.M atrikelN r ∧ h.W iederholung ≥ 1
Wir müssen nun für alle beliebigen Variablenbelegungen prüfen, ob der Datenbankzustand und die Belegung
ein Modell der Anfrage bilden. Die möglichen Variablenbelegungen ergeben sich aus den Wertebereichen der
Attribute:
type(s) = {M atrikelN r, N ame, W ohnort}
type(h) = {M atrikelN r, V orlesungsN r, W iederholung}
Die Belegungen der Variablen s bestehen demnach aus allen Kombinationen möglicher Matrikelnummern, Namen und Wohnorte. Wenn wir davon ausgehen, daß alle drei Attribute über dem Datentyp Zeichenkette“ definiert
”
sind, müssen wir alle Kombinationen aus drei beliebigen und beliebig langen Zeichenketten betrachten. Damit
ergeben sich z.B. folgende Belegungen:
ρ(s) MatrikelNr
Name
Wohnort
000000
a
a
000001
a
a
000002
a
a
...
...
...
190245
Max Müller
Kiel
190245
Max Müller
Lübeck
190245
Max Müller
Flensburg
...
...
...
327641
Tina Petersen
Flensburg
327641
Max Müller
Flensburg
327641
Max Müller
aW349(3!
...
...
...
zsafhgsadz
HTjhsbva,!
OiEwiuq43D
...
...
...
Es ist leicht ersichtlich, daß es unendlich viele Kombinationen dreier (beliebig langer) Zeichenketten gibt. Eine
analoge Diskussion kann für die Belegung der Variablen h erfolgen. Durch scharfes Hinsehen“ 5 stellen wir aber
”
fest, daß für alle Belegungen, die s kein Tupel aus der Relation ST U DEN T zuweisen, die gesamte Formel niemals
erfüllt werden kann. Analog wird die Formel nur erfüllt, wenn der Variablen h ein Tupel aus der Relation HOERT
zugeordnet wird. Die letzten beiden Bedingungen schränken dies weiter ein: es werden alle Kombinationen aus s
und h verworfen, die die beiden Vergleiche nicht erfüllen. Es bleiben die folgenden Belegungen übrig:
s
h
ϱ1
MatrikelNr
612491
Name
Tobias Schulze
Wohnort
Kiel
MatrikelNr
612491
VorlesungsNr
080127
Wiederholung
1
ϱ2
MatrikelNr
612491
Name
Tobias Schulze
Wohnort
Kiel
MatrikelNr
612491
VorlesungsNr
080176
Wiederholung
1
ϱ3
MatrikelNr
762198
Name
Uwe Schmidt
Wohnort
Rendsburg
MatrikelNr
762198
VorlesungsNr
080104
Wiederholung
2
Diese projizieren wir auf die gegebenen Attribute und erhalten unsere Antwort:
Name
MatrikelNr VorlesungsNr
Tobias Schulze
612491
080127
Tobias Schulze
612491
080176
Uwe Schmidt
762198
080104
Betrachten wir weiterhin folgende Anfrage (type(x) = attr(V ORLESU N G)):
¬V ORLESU N G(x)
5
Systematischere Verfahren lernen Sie in der Veranstaltung Datenbanktheorie“ oder in der Logikprogrammierung kennen.
”
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
34
Auch hier müssen wir alle Tupel betrachten, die sich aus zwei beliebig langen Zeichenketten (VorlesungsNr und
Bezeichnung) bilden lassen. Durch scharfes Hinsehen“ stellen wir fest, daß sich die vier im Zustand der Datenbank
”
aufgeschriebenen Tupel nicht für die Antwort qualifizieren. Jede andere Kombination aus einer Zeichenkette für die
Vorlesungsnummer und die Bezeichnung — auch alle unsinnigen Kombinationen — sind Teil der Antwortmenge.
Da es unendlich viele solche Kombinationen gibt, dauert es unendlich lange, bis die Antwort berechnet ist. Mit
anderen Worten ausgedrückt: unser Algorithmus terminiert nicht, das Ergebnis der Anfrage ist nicht berechenbar.
Ausdrücke dieser Form nennen wir in Zukunft unsichere Ausdrücke“ (da man sich, vereinfacht gesprochen, nicht
”
sicher sein kann, ein Ergebnis zu erhalten.) Ausdrücke, die stets eine endliche Menge von Ergebnistupeln liefern,
nennen wir sichere Ausdrücke“. Stets“ bedeutet in diesem Zusammenhang, daß die Endlichkeit des Ergebnisses
”
”
für alle gültigen Datenbankzustände garantiert ist.
Sicherheit und Wertebereichsunabhängigkeit.
Die Menge der sicheren TRC-Ausdrücke ist unentscheidbar, d.h. es gibt keinen Algorithmus, der für einen
beliebigen gegebenen TRC-Ausdruck bestimmt, ob dieser sicher oder unsicher ist. Aus diesem Grunde betrachtet
man eine weitere Eigenschaft: die Wertebereichsabhängigkeit bzw. -unabhängigkeit eines TRC-Ausdrucks.
Das Problem der unsicheren TRC-Ausdrücke liegt in der Tatsache begründet, daß über einem unendlichen
Wertebereich gearbeitet wird und sich prinzipiell jedes Tupel dieser unendlichen Menge für das Ergebnis qualifizieren kann. Unsinnige Wertekombinationen in Tupeln der Antwort (z.B. die Vorlesungsbezeichnung lhiGf !r5W )
interessieren uns aber eigentlich nicht. Deshalb können wir untersuchen, was passiert, wenn wir nicht mehr alle
beliebigen Belegungen unserer Variablen betrachten, sondern nur noch die Belegungen, deren (Attribut-)Werte auf
irgendeine Art und Weise im Datenbankzustand oder in der Anfrage vorkommen, die wir also als sinnvoll“ erach”
ten. Wenn eine Anfrage jetzt eine andere Antwort liefert als im vorher diskutierten Fall, dann hängt das Ergebnis
nicht nur vom Datenbankzustand ab, sondern von den Werten der Wertebereiche der Attribute. In diesem Fall sprechen wir von einem wertebereichsabhängigen TRC-Ausdruck. Wenn sich das Ergebnis nicht verändert, dann ist der
TRC-Ausdruck wertebereichsunabhängig. Die erste Anfrage im Abschnitt 1.5.2 ist eine wertebereichsunabhängige
Anfrage: Egal welche Wertebereiche wir betrachten6 , die Anfrage liefert bzgl. eines fest gewählten Datenbankzustands immer die gleiche Antwort. Die zweite Anfrage (¬V ORLESU N G(x)) ist wertebereichsabhängig, denn
z.B. je nach den möglichen Vorlesungsbezeichnungen entsteht jedesmal eine andere Antwort.
Es gilt: Jeder wertebereichsunabhängige TRC-Ausdruck ist sicher. Die Umkehrung muß nicht zwangsläufig
gelten7 . Leider ist die Menge der wertebereichsunabhängigen Ausdrücke immer noch unentscheidbar. Um eine
Entscheidbarkeit zu erzwingen, werden die vom System zugelassenen Anfragen syntaktisch eingeschränkt, d.h.
wir erlauben nicht mehr beliebige Anfragen des TRC. Dies führt uns zur Definition der erlaubten Ausdrücke.
Erlaubter TRC-Ausdruck In einem erlaubten TRC-Ausdruck wird jede Variable an den Datenbankzustand ge”
bunden“. Um dies festzustellen, prüfen wir für jedes Attribut A jeder Variablen x, ob das Paar (x, A) in einem
Ausdruck φ positiv oder negativ beschränkt ist:
1. (x, A) ist positiv beschränkt in R(x)
2. Sei c eine Konstante. Dann ist (x, A) positiv beschränkt in x.A = c und c = x.A. Wir setzen die übliche
Definition des Gleichheitsprädikats voraus.
3. (x, A) ist positiv beschränkt in x.A = y.B bzw. y.B = x.A, wenn der Term Teil einer Konjunktion ist
(F1 ∧ ... ∧ x.A = y.B ∧ ... ∧ Fn ), in der y.B positiv beschränkt ist.
4. (x, A) ist positiv beschränkt in ¬φ, wenn (x, A) negativ beschränkt ist in φ.
5. (x, A) ist positiv beschränkt in φ ∧ ψ, falls (x, A) positiv beschränkt ist in φ oder in ψ.
6
Die Werte des Datenbankzustands müssen natürlich in den Wertebereichen enthalten sein, sonst widerspricht dies unseren Definitionen
des relationalen Modells!
7
Wenn man z.B. nur endliche Wertebereiche betrachtet, dann ist jeder Ausdruck sicher. Er kann aber sehr wohl wertebereichsabhängig
sein.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
35
6. (x, A) ist positiv beschränkt in φ ∨ ψ, falls (x, A) positiv beschränkt ist in φ und in ψ.
7. (x, A) ist positiv beschränkt in φ =⇒ ψ, falls (x, A) negativ beschränkt ist in φ und positiv beschränkt in
ψ.
8. (x, A) ist positiv beschränkt in (∃y)(φ) oder in (∀y)(φ), falls (x, A) positiv beschränkt ist in φ.
9. (x, A) ist negativ beschränkt in ¬φ, falls (x, A) positiv beschränkt ist in φ.
10. (x, A) ist negativ beschränkt in φ ∧ ψ, falls (x, A) negativ beschränkt ist in φ und in ψ.
11. (x, A) ist negativ beschränkt in φ ∨ ψ, falls (x, A) negativ beschränkt ist in φ oder in ψ.
12. (x, A) ist negativ beschränkt in φ =⇒ ψ, falls (x, A) positiv beschränkt ist in φ oder negativ beschränkt in
ψ.
13. (x, A) ist negativ beschränkt in (∃y)(φ) oder in (∀y)(φ), falls (x, A) negativ beschränkt ist in φ.
Eine Variable x ist positiv (negativ) beschränkt in einem Ausdruck φ, falls die positive (negative) Beschränkung
für alle Attribute dieser Variablen gilt.
Ein TRC-Ausdruck φ heißt erlaubt, wenn folgendes gilt:
1. Jede freie Variable in φ ist positiv beschränkt.
2. Für jeden Teilausdruck (∃x)(ψ) ist die Variable x positiv beschränkt in ψ.
3. Für jeden Teilausdruck (∀x)(ψ) ist die Variable x negativ beschränkt in ψ.
Jeder erlaubte Ausdruck ist wertebereichsunabhängig und demnach sicher. Damit läßt sich ein Algorithmus
angeben, der überprüft, ob ein gegebener Ausdruck wertebereichsunabhängig ist:
1. Ist der Ausdruck nach obiger Definition erlaubt? Wenn ja: der Ausdruck ist wertebereichsunabhängig.
2. Sonst: Läßt sich ein Gegenbeispiel angeben? Man konstruiert sich ein Universum, daß genau die Konstanten
aus dem Datenbankzustand und der Anfrage enthält und führt die Anfrage aus. Anschließend fügt man weitere Werte zum Universum hinzu und führt die Anfrage erneut aus. Wenn sich unterschiedliche Ergebnisse
erzeugen lassen, ist die Anfrage wertebereichsabhängig.
3. Falls kein Gegenbeispiel gefunden wurde: läßt sich die Formel umstellen (De Morgansche Gesetze, Quantorumformung, etc.)? Falls ja, gehe zu 1.
4. Falls nicht: keine Entscheidung möglich.
Bereichsbeschränkte TRC-Ausdrücke.
Es gibt eine weitere Möglichkeit, nur sichere und wertebereichsunabhängige Ausdrücke zu formulieren: Variablen müssen strikt an Relationenschemata gebunden werden:
• freie Variablen stehen in einem Term der Form R(x)
• Quantifizierte Variablen werden nur mit Tupeln aus einer Relation belegt:
(∃x ∈ R)(φ)
(∀x ∈ R)(φ)
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
36
TRC-Ausdrücke dieser Form heißen beschränkte Ausdrücke bzw. R-beschränkte Ausdrücke. Bei R-beschränkten Ausdrücken ist eine Projektion auf Attribute in der Zielliste nicht länger syntaktischer Zucker. Beispiele sind:
Welche Studenten hören welche Vorlesung?“
”
s.M atrikelN r, h.V orlesungsN r | ST U DEN T (s) ∧ HOERT (h) ∧ h.M atrikelN r = s.M atrikelN r
Welche Studenten hören alle Vorlesungen?“
”
s.N ame |
ST U DEN T (s) ∧ (∀v ∈ V ORLESU N G)(
(∃h ∈ HOERT )(h.M atrikelN r = s.M atrikelN r ∧ h.V orlesungsN r = v.V orlesungsN r)
)
Integritätsbedingung: Jeder Student hört mindestens zwei verschiedene Vorlesungen.“
”
(∀s ∈ ST U DEN T )(
(∃h1 ∈ HOERT )(
(∃h2 ∈ HOERT )(
h1.M atrikelN r = s.M atrikelN r ∧ h2.M atrikelN r = s.M atrikelN r∧
¬(h1.V orlesungsN r = h2.V orlesungsN r)
)))
Gib die Namen und Matrikelnummern der Studenten, die eine Vorlesung hören, die von einem Dozenten namens
Meyer gehalten wird.
s.N ame, s.M atrikelN r |
ST U DEN T (s) ∧ (∃h ∈ HOERT )(h.M atrikelN r = s.M atrikelN r∧
(∃d ∈ DOZEN T )(d.V orlesungsN r = h.V orlesungsN r∧
(∃m ∈ M IT ARBEIT ER)(
m.BearbeiterN r = d.BearbeiterN r ∧ m.P ersonalN r = d.P ersonalN r∧
m.N ame =′ M eyer′
)))
1.5.3 Vergleich von Relationenkalkül und Relationenalgebra
Proposition 2 Der algebraische Relationenkalkül und der bereichsbeschränkte Tupelkalkül und die relationale
Algebra haben die gleiche Ausdruckskraft, d.h.
∀db∀db′ (∃α ∈ LKal : eval(α(db)) = db′ ⇔ ∃e ∈ LAl : eval(e(db)) = db′ .
Beweis durch Nachrechnen.
Damit: Mengenorientierte, deklarative Semantik des Relationenkalküls kann durch Relationenalgebra korrekt und
vollständig operationalisiert werden.
Damit allgemeiner Zugang für die Bewertung von Datenmodellen gerechtfertigt: Die operationale Fixpunktsemantik ist gleich der deklarativen Semantik.
1.5.4 Erweiterung der Relationenalgebra und des Relationenkalküls
Aggregationsoperationen mit einem Zweistufenverfahren:
Eine Aggregationsoperation ist definiert als Familie F = {f0 , ...., fk , ..., fω } mit Funktionen fk : Bagk →
N um , die Multimengen mit k Elementen vom Typ T auf einen numerischen Datentyp N um abbilden. Wir
lassen nur solche Typen zu, die ein minimales und ein maximales Element in dom(T ) besitzen. Es müssen
zwei Eigenschaften bezüglich der Ordnung auf dom(T ) erfüllt sein:
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
37
• Es gelten die Gleichungen fk (min, ...., min) = min und fk (max, ..., max) = max für die minimalen
und maximalen Elemente in dom(T ).
• Die Funktionen sind monoton bzgl. der Ordnung von dom(T ).
Da Nullwerte explizit zugelassen sind, benutzen wir zwei Hilfsfunktionen für die strukturelle Rekursion:
{
0
falls s = NULL
0
hf (s) =
f (s) falls s ̸= NULL
{
hundef
(s)
f
=
undef falls s = NULL
f (s)
falls s ̸= NULL
.
Wir können nun die folgenden üblichen Aggregationsfunktionen einführen:
Summierung in unterschiedlichen Varianten abhängig von der Behandlung von Nullwerten:
• Summierung für Klassen ohne Nullwerte:
sum = srec0,Id,+ ;
• Summierung für Klassen mit Nullwerten, die durch die 0 ersetzt werden:
sumnull
= srec0,h0 ,+ ;
0
Id
• Summierung für Klassen mit Nullwerten, die durch die undef ersetzt werden:
sumnull
srec0,hundef ,+ .
undef =
Id
Üblich ist die Anwendung der zweiten Option.
Zählen der Objekte je nach Behandlung der Nullwerte:
• Für Klassen ohne Nullwerte: count = srec0,1,+ ;
• Für Klassen mit Nullwerten: countnull
= srec0,h01 ,+ ;
1
• Alternativ für Klassen mit Nullwerten: countnull
undef =
srec0,hundef ,+ .
1
Genutzt wird oft die zweite Option.
Bildung der maximalen bzw. minimalen Werte in Abhängigkeit von den Ordnungen für NULL:
• Die leere Menge erlaubt keine Bestimmung von minimalen bzw. maximalen Werten:
• maxNULL = srecNULL,Id,max bzw. minNULL = srecNULL,Id,min
• maxundef = srecundef,Id,max bzw. minundef = srecundef,Id,min
Diese Funktionen hängen davon ab, wie die Nullwerte in dom(T ) eingeordnet werden.
Bildung des Durchschnittes: Die Durchschnittsbildung ist eine komplexere Funktion. Es gibt dafür eine
Reihe von Möglichkeiten:
sum
count
(++)
(SQL!?)
(+?!)
sumnull
0
count
sumnull
undef
count
(??)
sum
countnull
1
(+!)
(??)
sumnull
0
countnull
1
sumnull
undef
countnull
1
(??)
sum
countnull
undef
(??)
(++)
sumnull
0
countnull
undef
sumnull
undef
countnull
undef
SQL benutzt eine Variante, die nicht die intuitivste ist. Wir präferieren in der HERM-Algebra die
mit “+” annotierten Varianten für den Fall von Klassen mit Nullwerten. Die Funktionen avgnull
0 ,1 und
null
null
vorgezogen.
avgundef werden dabei der SQL-Form avg
Ordnungsoperationen je nach Basis-Datentypen und benutztem Konstruktor (Tupel, Menge)
Abgeleitete Elementaroperationen sind die Modifikationsoperationen der Datenbanksysteme:
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
38
Einfügen von Elementen: Die insert-Operation Insert(RC , o) ist durch die Vereinigung RC ∪ {o} von
Mengen für Klassen RC und Objekte o vom gleichen Typ R beschreibbar.
Streichen von Elementen: Die delete-Operation Delete(RC , o) ist durch die Differenz RC \ {o} von
Mengen für Klassen RC und Objekte o vom gleichen Typ R definierbar. Analog kann man auch das
′
Streichen von Mengen delete(RC , RC ) einführen.
Update von Elementen: Die Modifikation Update(RC , α, γ) von Klassen RC ist für Prädikate α und
Ersetzungsfamilien γ = {(o, RCo )} ist definiert durch die
∪ Menge
RCo .
RC \ σα (RC ) ∪
o∈σα (RC )
′
Eine oft verwendete Definition basiert auf dem Ausdruck RC \ σα (RC ) ∪ RC . Damit wird jedoch ein
′
anderer Effekt erzielt. Gilt z.B. σα (RC ) = ∅ und RC ̸= ∅, dann wird die ursprüngliche Intention verloren. Dieser Einführung liegt jedoch die oft praktizierte Ersetzung von Update(RC , o, {o′ }) durch
die Folge Delete(RC , o); InsertUpdate(RC , o′ ) zugrunde.
Eine Ersetzungsfamilie γ = {(o, RCo )} vom Typ R ist eine Menge bestehend aus einem Paar von Objekten
und Klassen vom Typ R. Eine Ersetzungsfamilie beschreibt für Objekte vom Typ R jeweils eine Klasse von
Objekten, durch die dieses Objekt ersetzt wird.
Weitere Operationen erlauben die Einführung verschachtelter bzw. komplexer Typen (außerhalb der ersten
Normalform):
Schachtelung: Es sei R′ ein Element von R. Dann wird die Schachtelung νR′ (RC ) von RC entlang von R′
definiert als Klasse über dem Typ T = (R \ R′ ) ⊔R {R′ } mit der Menge von Objekten
{ o ∈ Dom(T ) | ∃o′ ∈ RC : o[R \R R′ ] = o′ [R \R R′ ]
∧ o(R′ ) = { o′′ [R′ ] | o′′ ∈ RC ∧ o′ [R \R X] = t′′ [R \R R′ ]}}.
Entschachtelung: Es sei R′ ein Mengenelement von R. Die Entschachtelung µ′R (RC ) einer Klasse definiert einen
neuen Typen T = (R \R {R′ }) ◦ R′ für die Konkatenation ◦ und die neue Klasse
{ o ∈ Dom(T ) | ∃o′ ∈ RC : o[R \R {R′ }] = o′ [R \R {R′ }] ∧ o[X] ∈ o′ (X)}.
Potenzmenge: Die Potenzmenge P(RC ) = {M |M ⊆ RC } ist eine geschachtelte Klasse über dem Typ {R} .
Im allgemeinen können Objekte und Strukturen mit folgenden Konstruktoren konstruiert werden:
Tupelkonstruktor bzw. kartesisches Produkt
Mengenkonstruktor
Listenkonstruktor
Vereinigungskonstruktor
Multimengenkonstruktor
...
Relationale Datenbanken sind definiert durch Anwendungen eines Listen- auf einen Mengenkonstruktor, der wiederum auf einen Tupelkonstruktor angewandt wird.
Mit den Konstruktoren sind definiert durch folgenden Definitionsrahmen:
• mit Selektoren für retrieval (z.B. Select ) und update-Funktionen (z.B. Insert, Delete , und Update ) ür die
Abbildung von Werten des neuen Typen auf die Komponententypen,
• mit einem Korrektheitskriterium und Regeln zur Kontrolle der Korrektheit,
• mit default -Werten
• mit (ggf. mehreren Repräsentationstypen , und
• mit (ggf. mehreren) Implementationstypen oder Eigenschaften der Implementationstypen.
CAU Kiel, IfI, ISE
β
WS 2016/17
Informationssysteme 1. Das relationale Modell
39
1.5.5 Beispiel zum Relationenkalkül/Tupelkalkül
Angestellter(Nummer, Name, Gehalt, Abteilung, Geburtsjahr, Einstellungsdatum)
Abteilung(Nummer, Name, Filiale, Stock, Leiter)
Filiale(Nummer, Stadt, Land)
Lieferant(Nummer, Name, Stadt, Land)
Artikel(Nummer, Name, Abteilung, Preis, Bestand, Lieferant)
Verkauf(Nummer, Datum, Abteilung, Artikel, Anzahl, Angestellter, Betrag)
Anfragen:
• Namen aller Angestellten mit einem Gehalt von weniger als 400 Euro
{ t.Name | Angestellter(t) ∧ t.Gehalt < 400 }
• Namen und Preise aller Artikel, die von einem Lieferanten aus Schleswig-Holstein geliefert werden
{ t.Name,t.Preis | Artikel(t) ∧ ∃ l (Lieferant(l) ∧ t.Lieferant = l.Nummer ∧ l.Land = ’SH’) }
• Namen und Bestände aller Filialen in Berlin
{ t.Name,t.Bestand | Artikel(t) ∧ ∃ f ( Filiale(f) ∧ f.Stadt = ’Berlin’ ∧
∃ v ∃ a (Verkauf(v) ∧ Abteilung(a) v.Abteilung = a.Nummer
∧ a.Filiale = f.Nummer ∧ v.Artikel = a.Nummer)) }
• Namen und Nummern aller Artikel, die teurer als 1.000 Euro sind und deren Bestand mindestens 500 Exemplare beträgt
{ t.Name,t.Nummer | Artikel(t) ∧ t.Preis > 1.000 ∧ t.Bestand ≥ 500 }
• Namen aller Abteilungen, Namen ihrer Leiter und ihre Gehälter, wobei Abteilungsleiter Angestellte sind
{ t.Name,t.Abteilung, t.Gehalt | Angestellter(t) ∧ ∃ a (Abteilung(a) ∧ a.Leiter = t.Nummer) }
• Alle Artikel, die in einer Abteilung verkauft wurden, deren Leiter ”Helmut K. Raffke” ist, die er aber nicht
selbst verkauft hat
{ t | Artikel(t) ∧ ∃ v ∃ a ∃ e1 ∃ e2 (Verkauf(v) ∧ Abteilung(a)
∧ Angestellter(e1) ∧ Angestellter(e2)
∧ t.Nummer = v.Artikel ∧ v.Abteilung = a.Nummer
∧ a.Leiter = e.Nummer ∧ e.Name = ’Helmut K. Raffke’
∧ v.Angestellter = e2.Nummer ∧ e2.Nummer ̸= e1.Nummer ) }
Herunterladen