LUDWIGMAXIMILIANSUNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE SYSTEMS GROUP Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 3: Datenbanksysteme Vorlesung: PD Dr. Peer Kröger Übungen: Thomas Bernecker Skript © 2004 Christian Böhm, Peer Kröger http://www.dbs.ifi.lmu.de/Lehre/InfoNF Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP Überblick 3.1 Einleitung 3.2 Das Relationale Modell 3.3 Die Relationale Algebra 3.4 Mehr zu SQL 3.5 Das E/R-Modell [3.6 Normalformen] Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 2 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Charakteristika – Die Tabelle (Relation) ist das ausschließliche Strukturierungsmittel des relationalen Datenmodells – Edgar F. Codd, 1970 – Konzept: vgl. Excel-Tabelle – Grundlage vieler kommerzieller DBS: Informix Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 3 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Domain – Ein Wertebereich (oder Typ) – Logisch zusammengehörige Menge von Werten – Beispiele: • • • • • D1 = Integer (ganze Zahlen {…, -2, -1, 0, 1, 2, …}) (Zeichenketten, z.B. „Hallo“) D2 = String D3 = Date (Datum, typischerweise: TTMMYYYY) D4 = {rot, gelb, grün, blau} D5 = {1, 2, 3} – Kann endliche oder unendliche Kardinalität haben Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 4 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Kartesisches Produkt – Bedeutung des kartesisches Produkts (Kreuzprodukts) von k Domains: Menge von allen möglichen Kombinationen der Elemente der Mengen – Beispiel (k = 2): D1 = {1, 2, 3}, D2 = {a,b} D1 × D2 = {(1,a), (1,b), (2,a), (2,b), (3,a), (3,b)} – Beispiel (k = 3): D1 = D2 = D3 = N D1×D2×D3 = {(1,1,1),(1,1,2),(1,1,3),...,(1,2,1),...} Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 5 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Relation – Mathematische Definition: Relation R ist Teilmenge des kartesischen Produktes von k Domains D1, D2, ... Dk R ⊆ D1 × D2 × ... × Dk – Beispiel (k = 2): D1 = {1, 2, 3}, D2 = {a,b} (leere Menge, leere Relation) R1 = {} R2 = {(1,a), (2,b)} R3 = {(1,a), (2,a), (3,a)} R4 = D1 × D2 = {(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)} Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 6 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell – Weiteres Beispiel: D1 = D2 = N Relation R1 = {(1,1),(1,2),(1,3),...,(2,2),(2,3),...., (3,3),(3,4),...(4,4),(4,5),(4,6),....} Wie heißt diese mathematische Relation? ≤ : R≤ = {(x, y) ∈ N × N | x ≤ y} – Es gibt endliche und unendliche Relationen (wenn mindestens eine Domain unendlich ist) – In Datenbanksystemen: Nur endliche Relationen Unendlich: Nicht darstellbar Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 7 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Sprechweisen – Die einzelnen Domains lassen sich als Spalten einer Tabelle verstehen und werden als Attribute bezeichnet – Für R ⊆ D1 × ... × Dk ist k der Grad (Stelligkeit) – Die Elemente der Relation heißen Tupel: (1,a), (2,a), (3,a) sind drei Tupel vom Grad k = 2 – Relation ist Menge von Tupeln d.h. die Reihenfolge der Tupel spielt keine Rolle {(0,a), (1,b)} = {(1,b), (0,a)} – Reihenfolge der Attribute ist von Bedeutung: {(a,0), (b,1)} ≠ {(0,a), (1,b)} Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 8 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Relationen und Datenbanken – Relationen sind die mathematische Formalisierung der Tabelle – Jedes Tupel steht für einen Datensatz – Die einzelnen Informationen sind in den Attributwerten der Tupel gespeichert – Die Attribute können auch benannt sein: D1 = Name: String D2 = Vorname: String – Zeichenketten und Zahlen sind die häufigsten Domains Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 9 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Alternative Definition: Relation ist Ausprägung eines Relationen-Schemas • Geordnetes Relationenschema: – k-Tupel aus Domains (Attribute) – Attribute können benannt sein – Attribute werden anhand ihrer Position im Tupel referenziert R = (A1: D1, ... Ak: Dk) • Domänen-Abbildung (ungeordnetes Relationenschema): – Relationenschema R ist Menge von Attributnamen: – Jedem Attributnamen Ai ist Domäne Di zugeordnet: – Attribute werden anhand ihres Namens referenziert R = {A1, .... Ak} mit dom(Ai) = Di, 1 ≤ i ≤ k Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 10 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Beispiel: Städte-Relation Städte Name München Bremen Passau Einwohner 1.211.617 535.058 49.800 Land Bayern Bremen Bayern • Als geordnetes Relationenschema: Schema: Städte = (Name: String, Einwohner: Integer, Land: String) Ausprägung: {(München, 1.211.617, Bayern), (Bremen, 535.058, Bremen), (Passau, 49.800, Bayern)} • Als Relationenschema mit Domänenabbildung: Schema: Städte = {Name, Einwohner, Land} mit dom(Name) = String, dom(Einwohner) = Integer, ... Ausprägung: {t1, t2, t3} mit t1(Name) = München, t1(Einwohner) = 1.211.617,... Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 11 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Vorteil von geordnetem Relationenschema: – Prägnanter aufzuschreiben. Wichtig z.B. beim Einfügen neuer Tupel: t3 = (Passau, 49.800, Bayern) vergleiche: t3 (Name) = Passau; t3 (Einwohner) = ... • Nachteil von geordnetem Relationenschema: – Einschränkungen bei logischer Datenunabhängigkeit: Applikationen sensibel bzgl. Einfügung neuer Attribute (nur am Ende da sonst die Position der vorhandenen Attribute verändert wird) • Definitionen gleichwertig (lassen sich ineinander überführen) • Wir verwenden beide Ansätze Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 12 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Begriffe – Relation: Ausprägung eines Relationenschemas – Datenbankschema: Menge von Relationenschemata – Datenbank: Menge von Relationen (Ausprägungen) Relationenname Städte Tupel Name München Bremen Passau Attribut(-Namen) Einwohner 1.211.617 535.058 49.800 Land Bayern Bremen Bayern Relationenschema Relation Attributwerte Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 13 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Duplikate – Relationen sind Mengen von Tupeln. Konsequenzen: • Reihenfolge der Tupel irrelevant (wie bei math. Def) • Es gibt keine Duplikate (gleiche Tupel) in Relationen: {(0,a), (0,a), (0,a), (1,b)} = {(0,a), (1,b)} – Frage: Gilt dies auch für die Spalten beim ungeordneten Relationenschema R = {A1,...,Ak} ? • Die Reihenfolge der Spalten ist irrelevant (das ist gerade das Besondere am ungeordneten RS) • Duplikate treten nicht auf, weil alle Attribut-Namen verschieden sind Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 14 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Schlüssel – Tupel müssen eindeutig identifiziert werden – Warum? Z.B. für Verweise: Mitarbeiter PNr 001 002 003 Name Huber Mayer Müller Abteilungen Vorname Abteilung Erwin Hugo Anton ANr 01 02 03 Abteilungsname Buchhaltung Produktion Marketing – Objektidentifikation in Java: Mit Referenz (Adresse im Speicher) – Im relationalen Modell werden Tupel anhand von Attributwerten identifiziert – Ein/mehrere Attribute als Schlüssel kennzeichnen – Konvention: Schlüsselattribut(e) unterstreichen! Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 15 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Beispiel: PNr und ANr werden Primärschlüssel: Mitarbeiter PNr Name 001 Huber 002 Mayer 003 Müller Vorname Abteilung Erwin Hugo Anton Abteilungen ANr Abteilungsname 01 Buchhaltung 02 Produktion 03 Marketing – Damit müssen diese Attributswerte eindeutig sein! – Verweis durch Wert dieses Schlüsselattributs: Mitarbeiter PNr Name 001 Huber 002 Mayer 003 Müller Vorname Erwin Hugo Anton Abteilung 01 01 02 Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 Abteilungen ANr Abteilungsname 01 Buchhaltung 02 Produktion 03 Marketing 16 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Zusammengesetzter Schlüssel – Oft ist ein einzelnes Attribut nicht ausreichend, um die Tupel eindeutig zu identifizieren • Beispiel: Lehrveranstaltung VNr 012 012 013 ... Titel Einführung in die Informatik Einführung in die Informatik Medizinische Informationssyst. ... Semester WS 2001/02 WS 2002/03 WS 2001/02 ... – Schlüssel: (VNr, Semester) – Anmerkung: Warum ist dies in diesem Fall ein schlechtes DBDesign? Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 17 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Schlüssel: Eine Teilmenge S der Attribute eines Relationenschemas R heißt Schlüssel, wenn gilt: – Eindeutigkeit Keine Ausprägung von R kann zwei verschiedene Tupel enthalten, die sich in allen Attributen von S gleichen. – Minimalität Keine echte Teilmenge von S erfüllt bereits die Bedingung der Eindeutigkeit Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 18 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell In noch formalerer Notation: Schlüssel: – Sei r eine Relation über dem Relationenschema R und S ⊆ R eine Auswahl von Attributen. – t[S] bezeichne ein Tupel t eingeschränkt auf die Attribute aus S (alle anderen Attribute gestrichen) – (1) Eindeutigkeit: ∀ möglichen Ausprägungen r und Tupel t1, t2 ∈ r gilt: t1 ≠ t2 ⇒ t1[S] ≠ t2[S] – (2) Minimalität: Für alle Attributmengen S und T, die (1) erfüllen, gilt: T⊆S⇒T=S Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 19 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Beispiele – Gegeben sei die folgende Relation: Lehrveranst t1 t2 t3 LNr 1 2 3 ... VNr 012 012 013 ... Titel Einführung in die Informatik Einführung in die Informatik Medizinische Informationssyst. ... – {VNr} ist kein Schlüssel – {Titel} ist kein Schlüssel – {Semester} ist kein Schlüssel Semester WS 2001/02 WS 2002/03 WS 2001/02 ... Nicht eindeutig: t1 ≠ t2 aber t1[VNr] = t2[VNr] = 012 (gleiche Begründung) Nicht eindeutig: t1 ≠ t3 aber t1[Semester] = t3[Semester] Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 20 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Lehrveranst t1 t2 t3 LNr 1 2 3 ... VNr 012 012 013 ... – {LNr} Titel Einführung in die Informatik Einführung in die Informatik Medizinische Informationssyst. ... Semester WS 2001/02 WS 2002/03 WS 2001/02 ... ist Schlüssel !!! Eindeutigkeit: Alle ti[LNr] sind paarweise verschieden, d.h. t1[LNr]≠t2[LNr], t1[LNr]≠t3[LNr], t2[LNr]≠t3[LNr] Minimalität: Trivial, weil 1 Attribut kürzeste Möglichkeit – {LNr, VNr} ist kein Schlüssel Eindeutigkeit: Alle ti[LNr,VNr] paarweise verschieden. Nicht minimal, da echte Teilmenge {LNr} ⊂ {LNr, VNr} (≠) die Eindeutigkeit bereits gewährleistet, s.o. Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 21 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Lehrveranst t1 t2 t3 LNr 1 2 3 ... VNr 012 012 013 ... – {VNr, Semester} Titel Einführung in die Informatik Einführung in die Informatik Medizinische Informationssyst. ... Semester WS 2001/02 WS 2002/03 WS 2001/02 ... ist Schlüssel !!! Eindeutigkeit: Alle ti[VNr, Semester] paarw. verschieden: • t1 [VNr, Semester] = (012, WS 2001/02) • t2 [VNr, Semester] = (012, WS 2002/03) • t3 [VNr, Semester] = (013, WS 2001/02) ≠ ≠ ≠ Minimalität: Weder {VNr} noch {Semester} gewährleisten Eindeutigkeit (siehe vorher). Dies sind alle echten Teilmengen. Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 22 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Primärschlüssel – Minimalität bedeutet nicht : Schlüssel mit den wenigsten Attributen – Sondern Minimalität bedeutet: Keine überflüssigen Attribute sind enthalten (d.h. solche, die zur Eindeutigkeit nichts beitragen) – Manchmal gibt es mehrere verschiedene Schlüssel • {LNr} • {VNr, Semester} – Diese nennt man auch Schlüsselkandidaten – Man wählt einen dieser Kandidaten aus als sog. Primärschlüssel (oft den kürzesten, nicht immer) Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 23 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Die Eindeutigkeit bezieht sich nicht auf die aktuelle Ausprägung einer Relation r • Sondern immer auf die Semantik der realen Welt Mitarbeiter PNr Name Gehalt 001 002 003 004 Müller Mayer Huber Schulz 1700 € 2172 € 3189 € 2171 € – Bei der aktuellen Relation wären sowohl {PNr} als auch {Name} und {Gehalt} eindeutig. – Aber es ist möglich, dass mehrere Mitarbeiter mit gleichem Namen und/oder Gehalt eingestellt werden – {PNr} ist für jede mögliche Ausprägung eindeutig Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 24 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Definition eines Relationenschemas in SQL CREATE TABLE n ( a1 d1 c1, a2 d2 c2, ... ak dk ck ) ← n Name der Relation ← Definition des ersten Attributs ← Definition des Attributs Nr. k • hierbei bedeuten... – ai der Name des Attributs Nr. i – di der Typ (die Domain) des Attributs – ci ein optionaler Constraint für das Attribut Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 25 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Was passiert dabei? – Es wird eine leere Tabelle angelegt – Beispiel: CREATE TABLE Mitarbeiter ( PNr NUMBER (3), Name CHAR (20), Vorname CHAR (20), ANr NUMBER (2) ) PNr Name Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 Vorname ANr (leer) 26 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Der SQL-Standard kennt u.a. folgende Basis-Datentypen (Domains): – – – – integer oder auch interger4, int smallint oder integer2 float (p) oder auch float decimal (p,q) und numeric (p,q) mit p Stellen, davon q Nachkommast. – character (n), char (n) für Strings fester Länge n – character varying (n), varchar (n): variable Strings – date, time, timestamp für Datum und Zeit Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 27 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Einfache Zusätze (Integritätsbedingungen) können unmittelbar hinter einer Attributdefinition stehen: – not null: Das Attribut darf nicht undefiniert sein in DBS: undefinierte Werte heissen null-Werte – primary key: Das Attribut ist Primärschlüssel (nur bei 1-Attribut-Schlüsseln) – check f: Die Formel f wird bei jeder Einfügung überprüft – references t1 (a1): Ein Verweis auf Attribut a1 von Tabelle t1 Verschiedene Zusatzoptionen: • on delete cascade • on delete set null – default w1: Wert w1 ist Default, wenn unbesetzt. Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 28 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Integritätsbedingungen Zusätze, die keinem einzelnen Attribut zugeordnet sind, stehen mit Komma abgetrennt in extra Zeilen – primary key (s1, s2, ...): Zusammengesetzter Primärschlüssel – foreign key (s1, s2, ...) references t1 (...) Verweis auf zusammengesetzten Schlüssel in t1 – check f • Anmerkung: SQL ist case-insensitiv: – im Ggs. zu Java hat die Groß-/Kleinschreibung weder bei Schlüsselworten noch bei Bezeichnern Bedeutung Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 29 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell Beispiele für Tabellendefinitionen • Zusammengesetzter Primärschlüssel {VNr, Semester}: create table Lehrveranst ( LNr integer not null, VNr integer not null, Titel varchar(50), Semester varchar(20) not null, primary key (VNr, Semester) ) • Alternative mit einfachem Primärschlüssel {LNr}: create table Lehrveranst2 ( LNr integer VNr integer Titel varchar(50), Semester varchar(20) ) primary key, not null, not null Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 30 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell • Tabelle für Dozenten: create table Dozenten ( DNr integer primary key, Name varchar(50), Geburt date, ) • Verwendung von Fremdschlüsseln: create table Haelt ( Dozent integer ) references Dozenten (DNr) on delete cascade, VNr integer not null, Semester varchar(20) not null, primary key (Dozent, VNr, Semester), foreign key (VNr, Semester) references Lehrveranst Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 31 Kapitel 3: Datenbanksysteme DATABASE SYSTEMS GROUP 3.2 Das Relationale Modell – Das Schlüsselwort on delete cascade in Haelt führt dazu, dass bei Löschen eines Dozenten auch entsprechende Tupel in Haelt gelöscht werden – Weitere Konstrukte der Data Definition Language: • drop table n1 Relationen-Schema n1 wird mit allen evtl. vorhandenen Tupeln gelöscht. • alter table n1 add (a1 d1 c1, a2 d2 c2, ...) – Zusätzliche Attribute oder Integritätsbedingungen werden (rechts) an die Tabelle angehängt – Bei allen vorhandenen Tupeln Null-Werte • alter table n1 drop (a1 , a2 , ...) • alter table n1 modify (a1 d1 c1, a2 d2 c2, ...) Einführung in die Informatik: Systeme und Anwendungen – SoSe 2009 32