Datenbanken Unit 3: Das relationale Modell

Ähnliche Dokumente
Datenbanken 6: Normalisierung

Datenbanken 6: Normalisierung

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Datenbanken Unit 5: Funktionale Abhängigkeit

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Rückblick: Datenbankentwurf

3. Das Relationale Datenmodell

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 06. Nov Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 2

Grundlagen des relationalen l Modells

Datenbanken: Relationales Datenbankmodell RDM

Relationale Datenbanken in der Praxis

Introduction to Data and Knowledge Engineering Übung 1: Entity Relationship Model

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Wiederholung VU Datenmodellierung

Ein Schlüssel ist eine Menge von Attributen (also eines oder mehrere), die eine Datenzeile (Tupel) einer Tabelle eindeutig identifiziert

Informations-, Daten- und Wissensmanagement

Kapitel 1: Einführung 1.1 Datenbanken?

Kapitel 3: Datenbanksysteme

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

10. Datenbank Design 1

1. Einführung Seite 1. Kapitel 1: Einführung

9. Einführung in Datenbanken

ER-Modellierung am Beispiel der Universitätsdatenbank aus der DBIS-Vorlesung

Kapitel 2: Das Relationale Modell

E-R-Modell zu Relationenschema

Abstraktionsschichten. Das Relationale Datenmodell

Grundlagen von Datenbanken SS 2010

Software-Engineering Einführung

Aufgabe 1) Übung 4: 1.2

Datenbanksysteme SS 2007

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Kommunikation und Datenhaltung. Übungsblatt D1. (Relationale Algebra & SQL)

Kapitel 2: Das Relationale Modell

Datenbanken und Datenmodellierung

Das konzeptionelle Datenmodell

Datenmodelle. Einführung in das Entity-Relationship-Modell. Datenbankmodelle. Beispiel für ein ER-Schema. Kunde( Meier, , ) 41, Meier

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Der Tabellenname wird in Grossbuchstaben geschrieben.

Datenbanken. Zusammenfassung. Datenbanksysteme

Kapitel 3: Datenbanksysteme

3. Spezielle ER-Modelle und Tabellenableitung. Transformation von ER-Diagrammen in Relationen

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

3. Grundlagen relationaler Datenbanksysteme

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

Übung zur Vorlesung Einführung in die Informatik für Hörer anderer Fachrichtungen (WZW) IN8003, SS 2011 Prof. Dr. J. Schlichter

Kapitel DB:III. III. Konzeptueller Datenbankentwurf

Handout zur Unit Datenmodellierung Web-Technologien Datenmodellierung Prof. Dr. rer. nat. Nane Kratzke

Referentielle Integrität

7. Datenbankdefinitionssprachen

Kapitel DB:IV (Fortsetzung)

Theorie zur Übung 8 Datenbanken

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Als logisches Datenmodell wird hier das Relationenmodell vorgestellt, das heute den Standard für relationale Datenbanken darstellt.

Rückblick: Entity-Relationship-Modell

Tag 4 Inhaltsverzeichnis

Konzeptueller Entwurf

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Erstellen von relationalen Datenbanken mit Hilfe der Nomalisierung

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Vorlesung Datenbank-Entwurf Klausur

Kapitel 3: Entity-Relationship-Modell

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenbanken 1 Sommersemester 2014/

Logischer Entwurf von Datenbanken

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

3. Übung. Einführung MS Access. TU Dresden - Institut für Bauinformatik Folie-Nr.: 1

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

SQL: statische Integrität

Entwurf und Verarbeitung relationaler Datenbanken

Datenmodellierung und Datenbanksysteme. Vorlesung. Informationswissenschaft und Informationssysteme. Hans Uszkoreit & Brigi1e Jörg

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Referentielle Integrität

Datenbanken: ER-Modell

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

7. Übung - Datenbanken

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Das Relationale Modell

Datenbanken (Übung 12)

Objektrelationale und erweiterbare Datenbanksysteme

Objektorientierte Datenbanken

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Tag 4 Inhaltsverzeichnis

Datenbankentwurf. Entwicklungsprozess Anforderungsanalyse & Miniwelt

Relationales Datenbanksystem Oracle

Kapitel 3. Relationales Modell (Relationenmodell) Transformation ER-Modell Relationenmodell. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 1

Transkript:

Datenbanken Unit 3: Das relationale Modell 8. III. 2016

Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell 3 SQL

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!

Zusammenfassung Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell 3 SQL

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

Outline 1 Das ER Modell Zusammenfassung 2 Das Relationale Modell 3 SQL

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

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.

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

Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D 1, D 2,..., D n ist eine Teilmenge des Cartesischen Produkts der Domänen: R D 1 D 2... D n. NB: Das entspricht unserer Definition von Relationen zwischen Entitätstypen.

Zur Erinnerung: Math. Repräsentierung von Relationen Beispiel: Relation lieben : Brad Pitt liebt Angelina Jolie.

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.

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

Mathematische Repräsentation von Relationen lieben = { (x, y) x liebt y }

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 E 1, E 2,..., E n ist eine Teilmenge von E 1 E 2... E n. Beispiel: besitzen ist eine Teilmenge von P D, wobei D die Menge aller Dinge ist.

Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D 1, D 2,..., D n ist eine Teilmenge des Cartesischen Produkts der Domänen: R D 1 D 2... D n. NB: Das entspricht unserer Definition von Relationen zwischen Entitätstypen. Beispiel: Telefonbuch: Attribute: Name, Adresse, Telefonnummer Telefonbuch String String Integer

Relationen auf Domänen Definition (Relation) Eine Relation (Tabelle) R zwischen Domänen D 1, D 2,..., D n ist eine Teilmenge des Cartesischen Produkts der Domänen: R D 1 D 2... D n. 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

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

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.

Repräsentation von Relationen im relationalen Modell Relationstypen zwischen Entitätstypen E 1, E 2,..., E n werden repräsentiert als Relationen zwischen den Domänen der Schlüsselattribute der Entitätstypen E 1, E 2,..., E n und den Domänen der Attribute des Relationstyps. Das heißt, wenn Entitätstyp E i die Schlüsselattribute A i1,..., A i,ki (i = 1,... n) hat, und die Relation R E 1 E 2... E n die Attribute A R 1,..., AR k R, dann wird R repräsentiert als D(A 11 ) D(A 1,k1 ) D(A 21 ) D(A n,kn ) D(A R 1 ) D(AR k R ). Die Primärschlüssel des Entitätstyps werden Fremdschlüssel genannt. Fremdschlüssel werden zur Identifizierung von Entitäten verwendet.

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.

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.

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

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 A 1,..., A n bilden die Attribute A i1,..., A ik einen Schlüssel, wenn es für i = 1, 2,..., n partielle Funktionen D(A i1 ) D(A ik ) D(A i ) gibt.

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 A 1,..., A n bilden die Attribute A i1,..., A ik einen Schlüssel, wenn es für i = 1, 2,..., n partielle Funktionen D(A i1 ) D(A ik ) D(A i ) gibt. Das bedeutet: Legt man die Werte für die Attribute A i1,..., A ik fest, so sind die Wert der anderen Attribute eindeutig bestimmt. D.h. für vorgegebene Werte für die Attribute A i1,..., A ik kann es in der Tabelle nur eine Zeile geben.

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

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

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

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!

Beispiel: Bücherdatenbank

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

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.

Beispiel: Studenten und Studienrichtungen

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

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.

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

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.

Beispiel: Studenten und Studienrichtungen Tabellen: Studenten: {[Mnr, Name, Stkz(Strv), Stkz(StrvV) ]} Studienrichtungen: {[Stkz, Name]} studiert: {[Mnr, Stkz]} Besser:

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

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.

SQL: Schlechte Angewohnheiten Numerische Werte vs. Strings: SELECT * FROM sowe WHERE tmin LIKE -% funktioniert (leider) in MySQL, Stil nicht empfehlenswert.

SQL: Schlechte Angewohnheiten Numerische Werte vs. Strings: Ähnlich: Runden auf ganze Millionen über numerische Funktionen, nicht über Stringfunktionen!

SQL-Lesson 3 Heute: Subqueries UNION