Datenbankmodelle 2 Das relationale Modell
Datenbankmodelle ER-Modell Netzwerkmodell hierarchisches Modell relationales Modell objektorientierte Modelle Relationales Modell - 2
relationales Modell basiert auf der relationalen Algebra (Codd 1970) formal fundiertes mathematisches Modell Basis ist die mathematische Relation: Sind A, B Mengen, so ist r A B eine Relation zwischen den Mengen A und B mehre Standards von der ISO DBTG: SQL1 (1989), SQL2 (1992), SQL3 (1999), SQL:2003 In den USA: ANSI X3H2 zahlreiche Produkte: ORACLE, DB2(IBM), INFORMIX(IBM), MS SQL Server, SYBASE(SAP), MAXDB(SAP), MySQL(Oracle),... Relationales Modell - 3
Begriffe Der Wertebereich eines Attributs A wird Domäne (dom(a)) genannt Ein Relationenformat /Relationstyp T ist eine Liste von Attributen (A 1,..., A n ) Ein Tupel t ist definiert als: t dom(a 1 ) x... x dom(a n ) Mit Tup(T) wird die Menge aller möglichen Tupel über einem Relationenformat T bezeichnet Eine Relation r vom Typ T(A 1,..., A n ) ist definiert als endliche Teilmenge: r dom(a 1 ) x... x dom(a n ) Mit Rel(T) wird die Menge aller möglichen Relationen über T bezeichnet Relationales Modell - 4
Bemerkungen Eine Relation ist eine endliche Menge von Tupeln / Datensätzen Zwei Datensätze sind gleich sie stimmen in allen Attributen wertmäßig überein Zwei Relationen r und s sind gleich sie haben die gleichen Datensätze Relationales Modell - 5
Auffassung als Tabellen Attributname/Spaltenname Nr Name Telefon Tabellenzeile Satz / Tupel 1 Hugo 324 2 Egon 743 3 Martha 546 4 Karla 124 5 Emil 987 Tabellenspalte Feldwerte Relationales Modell - 6
relationales Modell: Domänen Die Datentypen des Standards CHAR(n), VARCHAR(n) BLOB, CLOB INTEGER, SMALLINT FLOAT, REAL, DOUBLE DECIMAL(n) DATE, TIME, TIMESTAMP... Relationales Modell - 7
relationales Modell: Beispiel create table Artikel ( ArtNr CHAR(5), Datum DATE, Anzahl INTEGER ); ArtNr Datum Anzahl A0001 21.10.2011 120 A0002 22.12.2010 150 A003 08.12.2011 550 Relationales Modell - 8
Geschäftsregeln Die gespeicherten Daten haben eine Bedeutung! D.h. die Werte müssen bestimmten Bedingungen, den Geschäftsregeln (Integritätsbedingungen), genügen. Engl. Begriffe: Business Rules, Integrity Contraints Definition: Intrarelationale Abhängigkeiten Abhängigkeiten von Attributwerten innerhalb eines vorgegebenen Relationenformats einer Relation Def.: Interrelationale Abhängigkeiten Abhängigkeiten von Attributwerten von Relationenformaten unterschiedlicher Relationen Relationales Modell - 9
Beispiele Geschäftsregeln Basisrelationen mit den Formaten X Produkt = {pnr, bez, material, farbe, preis} X Auftrag = {anr, pnr, stück, betrag}, Intrarelationale Abhängigkeiten preis > 0 farbe {rot, blau, silber}... Interrelationale Abhängigkeiten... ( p Produkt, a Auftrag) ( a[pnr] = p[pnr] a[betrag] = a[stück]*p[preis] ) Relationales Modell - 10
Integritätsbedingungen Primärschlüssel Fremdschlüssel Referentielle Integrität Relationales Modell - 11
Schlüssel Eine minimale Menge von Attributen, deren Werte einen Datensatz eindeutig bestimmen heißt Schlüsselkandidat. Einer der Schlüsselkandidaten muss als Primärschlüssel festgelegt werden. Wird in einer Relation R1, der Primärschlüsel K2 einer Relation R2 verwendet, so wird K2 Fremdschlüssel für R1 in R2 genannt. Relationales Modell - 12
Fremdschlüssel abhängige Tabelle: Verkäufe FilialNr BelegNr KndNr Artikel Anz ZW 2002 K13 A0001 1 ZW 2003 K14 A0001 2 ZW 2004 K13 A0020 1 HOM 2002 K24 A0022 3 HOM 2003 K15 A0001 2 HOM 2020 K24 A0020 1 Primärschlüsselfeld referierte Tabelle: Kunden Fremdschlüsselfeld Welche weiteren Fremdschlüssel wird es hier wohl noch geben? Relationales Modell - 13 KndNr Name WOrt K13 Kurt Kühn ZW K14 Karl Klein ZW K15 Marc Maus PS K24 Anna Alt HOM
Fremdschlüssel als Geschäftsregeln Fremdschlüssel sind interrelationale Abhängigkeiten Beispiel X Produkt = {pnr, bez, material, farbe, preis} X Auftrag = {anr, pnr, stück, betrag}, Interrelationale Abhängigkeiten ( a Auftrag) : ( p Produkt a[pnr] = p[pnr] ) Vereinfachte Schreibweise Auftrag(pnr) Produkt(pnr) Bei zusammengesetzten Schlüsseln: RA(a1,a2) RB(b1,b2) Relationales Modell - 14
Referentielle Integrität Wenn K2 Fremdschlüssel für R1 in R2 ist, so ist referentielle Integrität genau dann gewährleistet, wenn K2(R1) K2(R2) Um referentielle Integrität zu garantieren, muss Antwort auf folgende Fragen gegeben werden: Müssen immer Werte für K2(R1) angegeben werden? Was geschieht beim Löschen eines Satzes aus R2? Was geschieht beim Ändern eines Wertes von K2(R2)? Relationales Modell - 15
Beispielrelationen Artikel ( ArtNr, Datum, Anzahl, Preis ) Beschreibung (ArtNr, Sprache, Text) Verkauf ( ArtNr, KndNr, VDatum, Anzahl ) Kunde ( KndNr, Name, Straße, PLZ, Ort ) Ort ( PLZ, Name, Filiale ) Fkunde Pkunde (KndNr, AnsprPartner, UStNr) (KndNr, GebDatum) Relationales Modell - 16
relationale Algebra Eine Algebra mit zahlreichen Operationen wurde zusammen mit dem Modell entwickelt Jede Operation liefert wieder eine Relation als Ergebnis Die Algebra ist abgeschlossen Diese Algebra ist Grundlage der meisten Anfragesprachen Operationen einer Algebra sind prozedural Durch die definierten Rechenregeln eröffnen sie aber Optimierungsmöglichkeiten. Relationales Modell - 18
Selektion Auswahl von Tupeln σ (Anzahl > 100) Artikel ArtNr Datum Anzahl A0001 30.3.2000 120 A0002 25.4.2010 134 A0003 25.9.2007 20 A0004 22.8.2009 324 A0005 08.9.2011 8 A0006 21.5.2011 156 A0007 21.7.2008 9 Auswahlbedingung ArtNr Datum Anzahl A0001 30.3.2000 120 A0002 25.4.2010 134 A0004 22.8.2009 324 A0006 21.5.2011 156 Relationales Modell - 19
Projektion Auswahl von Attributen π (ArtNr, Datum ) Artikel ArtNr Datum Anzahl A0001 21.5.2011 120 A0002 25.4.2010 134 A0004 22.8.2009 324 A0006 21.5.2011 156 ArtNr Datum A0001 21.5.2011 A0002 25.4.2010 A0004 22.8.2009 A0006 21.5.2011 Relationales Modell - 20
Kreuzprodukt Verknüpfung von Relationen Kunde x Artikel KndNr Kunde 001 Tom 002 Jerry x ArtNr Anzahl A0001 10 A0002 20 A0003 25 KndNr Kunde ArtNr Anzahl 001 Tom A0001 10 001 Tom A0002 20 001 Tom A0003 25 002 Jerry A0001 10 002 Jerry A0002 20 002 Jerry A0003 25 Relationales Modell - 21
Umbenennung von Attributen von Relationen Artikel AS (Nr, Date, Amount) Die Umbenennung ist wichtig, um Konflikte mit gleich benannten Attributen zu vermeiden. zum Beispiel für ein Kreuzprodukt Beispiel: Beschreibung Text FM LA NY ArtNr A0001 A0003 A0005 Verkäufe ArtNr KndNr Anzahl A0001 K111 120 A0001 K222 134 A0005 K111 324 A0006 K333 156 = Text ArtNr KndNr Anzahl FM A0001 K111 120 FM A0001 K222 134 NY A0005 K111 324 Relationales Modell - 22
Verbundoperation Natürlicher Verbund (Join) Formal: Sei r Rel(X) und s Rel(Y), dann gilt r s = { t Tup(X Y) π (X) t r π (Y) t s } Kunde KndNr K001 K002 K003 Verkäufe Kunde Anton Berta Clara KndNr ArtNr Preis K002 A002 10 K003 A003 11 K004 A003 15 = KndNr Kunde ArtNr Preis K002 Berta A002 10 K003 Clara A003 11 Relationales Modell - 23
Erläuterung Verbundoperation Es wird zunächst das Kreuzprodukt gebildet anschließend werden alle Tupel entfernt, bei denen in gleichbenannten Spalten verschiedene Werte stehen Anschließend werden von den gleichbenannnten Spalten alle Duplikate entfernt Sonderfall: Es gibt keine gleichbenannten Spalten In dem Fall entspricht die Operation dem Kreuzprodukt Relationales Modell - 24
Mengenoperationen Vereinigung: A B σ (Anzahl < 5) Artikel σ (Anzahl > 100) Artikel Schnitt: A B π (ArtNr) Beschreibung π (ArtNr) Artikel Differenz: A B π (ArtNr)Artikel π (ArtNr) Verkauf Division: A B Verkauf π (ArtNr) Artikel A A A B B B Relationales Modell - 25
Beispiel Division π (KndNr, ArtNr) Verkauf π (ArtNr) Artikel Bedeutung: Alle Kunden, die jeden Artikel schon einmal gekauft haben. ArtNr A0001 A0003 A0001 A0003 A0005 A0005 A0001 A0003 A0005 A0001 KndNr K01 K01 K02 K02 K02 K03 K04 K04 K04 K05 ArtNr A0001 A0003 A0005 = KndNr K02 K04 Relationales Modell - 26
Minimalität der relationalen Algebra Die Join Operation lässt sich immer auch mit Kreuzprodukt, Selektion und Projektion ausdrücken! Für eine minimale Operatormenge würden folgende Operationen ausreichen: Selektion, Projektion, Kreuzprodukt, Vereinigung, Differenz, Umbenennung Beispiel: R1 ( x1,...,xm, y1,...,yn ) R2 ( y1,...,yn ) = π (x1,...,xm)r1 π (x1,...,xm)(( π (x1,...,xm)r1 x R2 ) R1 ) Relationales Modell - 27
Beispiel Division π (KndNr, ArtNr) Verkauf π (ArtNr) Artikel π (x1,...,xm)r1 π (x1,...,xm)(( π (x1,...,xm)r1 x R2 ) R1 ) ArtNr A0001 A0003 A0001 A0003 A0005 A0005 A0001 A0003 A0005 A0001 KndNr K01 K01 K02 K02 K02 K03 K04 K04 K04 K05 ArtNr A0001 A0003 A0005 R2 KndNr K01 K02 K03 K04 K05 π (x1,...,xm) R1 ArtNr KndNr A0001 K01 A0003 K01 A0005 K01 A0001 K02 A0003 K02 A0005 K02 A0001 K03 A0003 K03 A0005 K03...... R1 π (x1,...,xm) R1 x R2 Relationales Modell - 28
Effizienz von Algebraausdrücken Datenreduktionen sollte möglichst früh erfolgen. Selektion und Projektion nach vorne! Statt : π (KndNr)(σ (Datum = '25.4.1995')(Artikel Verkauf)) Besser : π (KndNr)(( π (ArtNr)σ (Datum = '25.4.1995')Artikel ) Verkauf ) Relationales Modell - 29
relationale Algebra - Übung Erstellen Sie Ausdrücke für folgende Anfragen: Die Namen aller Kunden, die in Hamburg wohnen. Die Namen aller Kunden, die den Artikel mit der Nummer '4711' erworben haben. Alle Daten der Artikel, die noch nie verkauft wurden. Die Namen aller Kunden, die Artikel mit einem Preis über 10.000 gekauft haben. Tabellen: Artikel ( ArtNr, Datum, Anzahl, Preis ) Verkauf ( ArtNr, KndNr, VDatum, Anzahl ) Kunde ( KndNr, Name, Straße, PLZ, Ort ) Relationales Modell - 30
Problem - Modellierung von Hierarchien Beispiel: Modellierung von Stücklisten Teil (tid, name) Einbau (tid, utid, anz) mit Einbau(tid) Teil(tid) und Einbau(utid) Teil(tid) Beispielrelationen Aufgaben Finde die direkten Bestandteile der Pumpe Finde die ersten 2 Ebenen Finde alle für die Pumpe benötigten Teile!? Relationales Modell - 31 tid name t1 Pumpe t2 Gehäuse t3 Rotor t4 Oberteil...... tid utid anz t1 t2 1 t1 t3 3 t2 t4 1 t4 t5 2 t3 t6 1......
Problem - Modellierung von Listen Beispiel: Modellierung von Kochrezepten Rezept (rid, name, startschritt) mit Rezept(startschritt) Schritt(sid) Schritt (sid, todo, nid) mit Schritt(nid) Schritt(sid) Beispielrelationen Aufgaben rid name start r1 Linsensuppe s2 r2 Kartoffelsuppe s14......... Finde den ersten Schritt des Kartoffelsuppen-Rezeptes Finde die ersten 2 Schritte Finde alle Schritte für das Kartoffelsuppen-Rezept!? Relationales Modell - 32 sid todo nid s14 Kartoffeln s18 schälen s18 Suppengrün s20 putzen......... s33 ziehen lassen null.........
relationales Modell Stärken/Schwächen Stärken: Modellierung ist unabhängig von physischer Ablage. Programmierer brauchen sich (theoretisch) nicht um Zugriffspfadoptimierung kümmern. Programme sind kurz und gut wartbar. Schwächen: Keine Konstruktoren für komplexe Typen. Strukturen mit Reihenfolgen sind nur sehr aufwändig modellierbar (z.b. Listen, Bäume,...). Operationen können nicht modelliert werden. Relationales Modell - 33