Das ER Modell Das Relationale Modell Datenbanken Unit 3: Das relationale Modell Ronald Ortner 8. III. 2016 Ronald Ortner SQL Das ER Modell Das Relationale Modell Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell Datenbanken aus ER Modellen 3 SQL Ronald Ortner SQL Das ER Modell Das Relationale Modell Organisatorisches Wissensüberprüfung: heute zwei Aufgaben statt nur einer Blindaufgaben vom Übungsblatt: Reklamationsmöglichkeit per E-Mail (Bitte Matrikel- und Aufgabennummer angeben!) Fast richtig (z.B. > statt >=) ist auch falsch! Ronald Ortner SQL Das ER Modell Das Relationale Modell Zusammenfassung Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell Datenbanken aus ER Modellen 3 SQL Ronald Ortner SQL Das ER Modell Das Relationale Modell Zusammenfassung Zusammenfassung letzter Woche Entitäten und Relationen: Entitäten und Entitätstypen Relationen und Relationstypen ER Diagramme Klassifikation binärer Relationstypen: 1 : 1 - Relationen 1 : N - Relationen N : M - Relationen Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell Datenbanken aus ER Modellen 3 SQL Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Zur Erinnerung Bisher haben wir über folgende Dinge gesprochen: Entitäts- und Relationstypen 1 : 1, 1 : N und N : M Relationen Schlüssel Was hat das mit Datenbanken zu tun? → versuchen aus dem ER Modell eine Datenbank zu extrahieren Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Die Grundidee des relationalen Modells Im ER Modell haben wir Entitäten, Relationen, und Attribute. Die Grundidee des relationen Modells ist es, die Entitätstypen mit ihren Attributen zu identifizieren, die Entitäten mit ihren Attributwerten zu identifizieren. → Im relationalen Model gibt es letztendlich nur Attribute und Relationen. Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Wertebereiche (Domänen) Eine Domäne besteht aus möglichen Werten für ein vorgegebenes Attribut. Typische Domänen sind z.B. Zahlen (natürliche, rationale, reelle, etc.) Zeichenketten Datumswerte Wir verlangen typischerweise, dass eine Domäne nur atomare Werte beinhaltet, also insbesondere keine zusammengesetzten Werte, keine strukturierten Werte (z.B. Mengen). Ronald Ortner Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D1 , D2 , . . . , Dn ist eine Teilmenge des Cartesischen Produkts der Domänen: R ⊆ D1 × D2 × . . . × Dn . NB: Das entspricht unserer Definition von Relationen zwischen Entitätstypen. Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Zur Erinnerung: Math. Repräsentierung von Relationen Beispiel: Relation ’lieben’: Brad Pitt liebt Angelina Jolie. Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Zur Erinnerung: Math. Repräsentierung von Relationen Beispiel: Relation ’lieben’: Brad Pitt liebt Angelina Jolie. Wir sagen: Das Tupel (Brad Pitt, Angelina Jolie) erfüllt die Relation ’lieben’. Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Zur Erinnerung: Math. Repräsentierung von Relationen Beispiel: Relation ’lieben’: Brad Pitt liebt Angelina Jolie. Wir sagen: Das Tupel (Brad Pitt, Angelina Jolie) erfüllt die Relation ’lieben’. Allgmein: Wir können eine Relation R mit der Menge aller Tupel von Objekten identifizieren, die die Relation R erfüllen. ’lieben’ = (x, y ) | x liebt y = (Brad Pitt, Angelina Jolie), (Angelina Jolie, Brad Pitt), . . . Ronald Ortner Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Mathematische Repräsentation von Relationen ’lieben’ = (x, y ) | x liebt y Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Mathematische Repräsentation von Relationen ’lieben’ = (x, y ) | x liebt y ⊆ P × P, wobei × das Cartesische Produkt bezeichnet und P die Menge aller Personen ist. Definition (Relation) Eine Relation R zwischen Entitätstypen E1 , E2 , . . . , En ist eine Teilmenge von E1 × E2 × . . . × En . Beispiel: ’besitzen’ ist eine Teilmenge von P × D, wobei D die Menge aller Dinge ist. Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D1 , D2 , . . . , Dn ist eine Teilmenge des Cartesischen Produkts der Domänen: R ⊆ D1 × D2 × . . . × Dn . NB: Das entspricht unserer Definition von Relationen zwischen Entitätstypen. Beispiel: Telefonbuch: Attribute: Name, Adresse, Telefonnummer → Telefonbuch ⊆ String × String × Integer Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D1 , D2 , . . . , Dn ist eine Teilmenge des Cartesischen Produkts der Domänen: R ⊆ D1 × D2 × . . . × Dn . NB: Das entspricht unserer Definition von Relationen zwischen Entitätstypen. Beispiel: Tabelle cia: Attribute: name, region, area, population, gdp Tabelle cia ⊆ String × String × Integer× Integer× Integer Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Repräsentation von Entitätstypen im relationalen Modell Entitätstypen werden als Relationen zwischen Domänen (von Attributen) dargestellt. Examples: Studenten: {[Matrnr.:String, Name: String, Semester: integer]} Lehrveranstaltungen: {[Lvanr.:Integer, Name: String, Semesterstunden: Integer]} Länder: {[Name:String, Region: String, Fläche: Integer, Bevölkerung: Integer, BIP:Integer]} Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Zur Erinnerung: Schlüssel Definition Schlüssel: Menge von Attributen, die eine Entität eindeutig bestimmen Kandidatenschlüssel: minimaler Schlüssel (ein Schlüssel, aus dem kein Attribut entfernt werden kann → im allgemeinen nicht eindeutig) Primärschlüssel: ein beliebig gewählter Kandidatenschlüssel Beispiele: Die Matrikelnummer bestimmt einen Studenten eindeutig. Die Sozialversicherungsnummer bestimmt eine Person eindeutig. Das Kennzeichen, das Land und der Zeitpunkt bestimmen eindeutig ein Auto. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell Relationstypen zwischen Entitätstypen E1 , E2 , . . . , En werden repräsentiert als Relationen zwischen den Domänen der Schlüsselattribute der Entitätstypen E1 , E2 , . . . , En und den Domänen der Attribute des Relationstyps. Das heißt, wenn Entitätstyp Ei die Schlüsselattribute Ai1 , . . . , Ai,ki (i = 1, . . . n) hat, und die Relation R ⊆ E1 × E2 × . . . × En R die Attribute AR 1 , . . . , AkR , dann wird R repräsentiert als R D(A11 ) × · · · × D(A1,k1 ) × D(A21 ) × · · · × D(An,kn ) × D(AR 1 ) × · · · × D(AkR ). Die Primärschlüssel des Entitätstyps werden Fremdschlüssel genannt. Fremdschlüssel werden zur Identifizierung von Entitäten verwendet. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell Beispiel: Relation besuchen zwischen Studenten und Lehrveranstaltungen. Der Entitätstyp Student hat das Attribut Matrnr als Primärschlüssel. Der Entitätstyp Lehrveranstaltung hat das Attribut LvaNr als Primärschlüssel. Die Relation besuchen hat als Attribut das Semester, in dem der Student die Lehrveranstaltung besucht. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell Beispiel: Relation besuchen zwischen Studenten und Lehrveranstaltungen. Der Entitätstyp Student hat das Attribut Matrnr als Primärschlüssel. Der Entitätstyp Lehrveranstaltung hat das Attribut LvaNr als Primärschlüssel. Die Relation besuchen hat als Attribut das Semester, in dem der Student die Lehrveranstaltung besucht. Entsprechend benötigen wir die folgenden Attribute, um die Relation besuchen darzustellen: die Matrnr (des Studenten) → String, die LvaNr (der Lehrveranstaltung) → Integer, das Semester (in dem die Lehrveranstaltung besucht wird) → String. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell Beispiel: Entsprechend benötigen wir die folgenden Attribute, um die Relation besuchen darzustellen: die Matrnr (des Studenten) → String, die LvaNr (der Lehrveranstaltung) → Integer, das Semester (in dem die Lehrveranstaltung besucht wird) → String. besuchen: {[Matrnr.:String, LvaNr.:Integer, Semester:String]} Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Primärschlüssel Der Primärschlüssel der die Relation repräsentierenden Tabelle hängt davon ab, ob die Relation 1 : 1, 1 : N, oder N : M ist (für binäre Relation). Definition (Primärschlüssel einer Tabelle) Der Primärschlüssel ist eine minimale Menge von Attributen, die eine Zeile der Tabelle eindeutig bestimmen. NB: In einer Tabelle mit Attributen A1 , . . . , An bilden die Attribute Ai1 , . . . , Aik einen Schlüssel, wenn es für i = 1, 2, . . . , n partielle Funktionen D(Ai1 ) × · · · × D(Aik ) → D(Ai ) gibt. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Primärschlüssel Definition (Primärschlüssel einer Tabelle) Der Primärschlüssel ist eine minimale Menge von Attributen, die eine Zeile der Tabelle eindeutig bestimmen. NB: In einer Tabelle mit Attributen A1 , . . . , An bilden die Attribute Ai1 , . . . , Aik einen Schlüssel, wenn es für i = 1, 2, . . . , n partielle Funktionen D(Ai1 ) × · · · × D(Aik ) → D(Ai ) gibt. Das bedeutet: Legt man die Werte für die Attribute Ai1 , . . . , Aik fest, so sind die Wert der anderen Attribute eindeutig bestimmt. D.h. für vorgegebene Werte für die Attribute Ai1 , . . . , Aik kann es in der Tabelle nur eine Zeile geben. Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Zusammenfassung von Tabellen Manchmal lässt sich das Datenbankschema noch verfeinern, indem Tabellen mit demselben Primärschlüssel zusammengefasst werden. 1 : 1- und 1 : N-Relationen mit demselben Primärschlüssel können in einer Tabelle zusammengefasst werden. Beispiel: Lehrveranstaltungen: {[LvaNr., Titel, Semesterstunden]} Professoren: {[Personalnummer, Name, Titel, Raum]} gibt Lehrveranstaltung: {[LvaNr., Personalnummer]} Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Zusammenfassung von Tabellen Manchmal lässt sich das Datenbankschema noch verfeinern, indem Tabellen mit demselben Primärschlüssel zusammengefasst werden. 1 : 1- und 1 : N-Relationen mit demselben Primärschlüssel können in einer Tabelle zusammengefasst werden. Beispiel: Lehrveranstaltungen: {[LvaNr., Titel, Semesterstunden]} Professoren: {[Personalnummer, Name, Titel, Raum]} gibt Lehrveranstaltung: {[LvaNr., Personalnummer]} → Die Information, wer die Lehrveranstaltung gibt, kann als Fremdschlüssel in die Tabelle Lehrveranstaltungen gegeben werden Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Zusammenfassung von Tabellen Manchmal lässt sich das Datenbankschema noch verfeinern, indem Tabellen mit demselben Primärschlüssel zusammengefasst werden. 1 : 1- und 1 : N-Relationen mit demselben Primärschlüssel können in einer Tabelle zusammengefasst werden. Beispiel: Lehrveranstaltungen: {[LvaNr., Titel, Semesterstunden, Professor]} Professoren: {[Personalnummer, Name, Titel, Raum]} Ronald Ortner Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Zusammenfassung von Tabellen Manchmal lässt sich das Datenbankschema noch verfeinern, indem Tabellen mit demselben Primärschlüssel zusammengefasst werden. 1 : 1- und 1 : N-Relationen mit demselben Primärschlüssel können in einer Tabelle zusammengefasst werden. Beispiel: Lehrveranstaltungen: {[LvaNr., Titel, Semesterstunden, Professor]} Professoren: {[Personalnummer, Name, Titel, Raum]} NB: Das funktioniert für N : M-Relationen nicht! Ronald Ortner Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Bücherdatenbank Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Bücherdatenbank Wir führen IDs für Autoren, Bücher und Schlagwörter ein. Dann: Je eine Tabelle für jeden Entitätstyp (mit den IDs als Primärschlüssel): Autoren: {[a_id, Name]} Bücher: {[isbn, Titel, Verlag]} Schlagwörter: {[s_id, Schlagwort]} Je eine Tabelle für jede Relation: schreibt: {[a_id, isbn]} hat_Schlagwort: {[isbn, s_id, Gewicht]} Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Repräsentation von Relationen im relationalen Modell: Vermeidung von NULL-Werten Für Entitäten, die nicht an Relation teilnehmen, müssen oft NULL-Werte eingefügt werden. → Repräsentation mit wenigen NULL-Werten ist vorteilhaft. Ronald Ortner Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Je eine Tabelle für jeden Entitätstyp: Studenten: {[Mnr, Name]} Studienrichtungen: {[Stkz, Name]} Je eine Tabelle für jede Relation: Studienrichtungen: {[Mnr, Stkz]} ist Strv: {[Mnr, Stkz]} ist Strv-Vorsitzender: {[Mnr, Stkz]} Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Je eine Tabelle für jeden Entitätstyp: Studenten: {[Mnr, Name]} Studienrichtungen: {[Stkz, Name]} Je eine Tabelle für jede Relation: Studienrichtungen: {[Mnr, Stkz]} ist Strv: {[Mnr, Stkz]} ist Strv-Vorsitzender: {[Mnr, Stkz]} Fassen Tabellen mit gleichen Primärschlüsseln zusammen. Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Zusammenfassen von Tabellen mit gleichem Primärschlüssel ergibt: Tables: Studenten: {[Mnr, Name, Stkz(Strv), Stkz(StrvV) ]} Studienrichtungen: {[Stkz, Name]} studiert: {[Mnr, Stkz]} Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Zusammenfassen von Tabellen mit gleichem Primärschlüssel ergibt: Tables: Studenten: {[Mnr, Name, Stkz(Strv), Stkz(StrvV) ]} Studienrichtungen: {[Stkz, Name]} studiert: {[Mnr, Stkz]} Nich schön: Viele NULL-Einträge in Tabelle Studenten: Die meisten Studenten sind nicht in Strv. Ronald Ortner Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Tabellen: Studenten: {[Mnr, Name, Stkz(Strv), Stkz(StrvV) ]} Studienrichtungen: {[Stkz, Name]} studiert: {[Mnr, Stkz]} Besser: Ronald Ortner SQL Das ER Modell Das Relationale Modell Datenbanken aus ER Modellen Beispiel: Studenten und Studienrichtungen Tabellen: Studenten: {[Mnr, Name, Stkz(Strv), Stkz(StrvV) ]} Studienrichtungen: {[Stkz, Name]} studiert: {[Mnr, Stkz]} Besser: Tabellen: Studenten: {[Mnr, Name]} Studienrichtungen: {[Stkz, Name, StrvV]} Strv: {[Mnr, Stkz]} studiert: {[Mnr, Stkz]} Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL SQL: Schlechte Angewohnheiten Numerische Werte vs. Strings: SELECT jahr,monat,ROUND((tmax+tmin)/2,”1”) FROM sowe WHERE jahr <= ”1940” AND jahr >= ”1920” AND (tmin < ”0” or gmin < ”0”) AND sun > ”90” funktioniert (leider) in MySQL, Stil nicht empfehlenswert. Ronald Ortner Das ER Modell Das Relationale Modell SQL: Schlechte Angewohnheiten Numerische Werte vs. Strings: SELECT * FROM sowe WHERE tmin LIKE ”-%” funktioniert (leider) in MySQL, Stil nicht empfehlenswert. Ronald Ortner SQL Das ER Modell Das Relationale Modell SQL: Schlechte Angewohnheiten Numerische Werte vs. Strings: Ähnlich: Runden auf ganze Millionen über numerische Funktionen, nicht über Stringfunktionen! Ronald Ortner SQL Das ER Modell SQL-Lesson 3 Heute: Subqueries UNION Ronald Ortner Das Relationale Modell SQL