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 ) }