Daten – Bank 2. Vorlesung Dr. Karsten Tolle – PRG2 – SS 2016 Letzte Vorlesung • Grundbegriffe • SQL – create table – insert – select Dr. Karsten Tolle – PRG2 – SS 2016 2 Heute Übersicht • Modellierung (ER-Diagramme) – Entitäten und Entity-Typen – Beziehungen und Beziehungstypen – Attribute • für Entitäten(Typen) und Beziehungen(Typen) • einfacher oder zusammengesetzter Schlüssel – Kardinalitäten – Generalisierung – Business Rules • … ein wenig mehr zu SQL Dr. Karsten Tolle – PRG2 – SS 2016 3 Erstellung einer Datenbank: Erster Schritt … • Was sind die Anforderungen? • Was sind die Ziele? • Ist bekannt was gespeichert werden soll? Design des Datenmodells Dr. Karsten Tolle – PRG2 – SS 2016 4 Design Engineering und Kunst Dr. Karsten Tolle – PRG2 – SS 2016 5 Entity-Relationship-Modell (ER-Modell) • Siehe auch: C. Maria Keet: A formal comparison of conceptual datamodeling languages (http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol337/paper3.pdf) Picture by: Frank Roeing Dr. Karsten Tolle – PRG2 – SS 2016 6 ER-Modell Ziel: Abbildung der Wirklichkeit auf Strukturebene! Beispiel: – Instanzebene trainiert werden trainiert von – Strukturebene trainiert Trainer Fußballmanschaft werden trainiert von Dr. Karsten Tolle – PRG2 – SS 2016 7 ER-Modell – Strukturebene trainiert Trainer Fußballmannschaft wird trainiert von – bei uns (PRG-2, DB1) Fußballmannschaft Dr. Karsten Tolle – PRG2 – SS 2016 trainiert Trainer 8 • Otto Müller lebt in Frankfurt am Main, in der Robert-Mayer-Str. 11. Person lebt_in Haus lebt_in Dr. Karsten Tolle – PRG2 – SS 2016 9 Achtung! Im Alltag wird oft gesagt: • Objekt (Entity) statt Objekttyp (Entity-Typ) • Beziehung (Relation) statt Beziehungstyp (Relationship-Typ) Dr. Karsten Tolle – PRG2 – SS 2016 10 (Objekt) Attribute • Ein Objekttyp ist durch einen bestimmten Satz von Merkmalen (Attributen) gekennzeichnet. • Jedes Merkmal kann Werte (values), das sind in der Umwelt beobachtbare oder messbare Größen, aus einem bestimmten Wertebereich (value set) annehmen. Name • Beispiel: Passagier Freigepäck Status Otto Müller 20kg Economy Class Dr. Karsten Tolle – PRG2 – SS 2016 11 Schlüssel Ein Schlüssel besteht aus einer Menge von Attributen, deren Werte eine Instanz (Entity) eines Objekttyps eindeutig bestimmt. Name Person Personalausweisnummer Name einfacher Schlüssel Dr. Karsten Tolle – PRG2 – SS 2016 Person Geb.Datum Geb.Ort Name des Vaters zusammengesetzter Schlüssel 12 Prinzipien des digitalen Speicherns Wenn möglich sollten vorhandene Identifizierungsmerkmale als Schlüssel wiederverwendet werden. ISBN TITLE 3-12-517154-7 … ISBN Nummer Man muss aber auch mögliche Änderungen sinnvoll handhaben: ISBN 10 ISBN 13 Dr. Karsten Tolle – PRG2 – SS 2016 13 Mathematische Betrachtung Ein Beziehungstyp zwischen zwei Objekttypen kann als eine mathematische Relation aufgefasst werden. Name Geb_Datum Person lebt_in Stadt S_Name Population Instanz: Person = { p1, p2, p3 } Stadt = { c1, c2, c3 } lebt_in = { <p1,c1>, <p1,c3>, <p3,c3> } Dr. Karsten Tolle – PRG2 – SS 2016 14 Min/Max Kardinalitäten (1,1) Person • • • • (0,n) lebt_in min_card(Person, Lebt_in) = 1 max_card(Person, Lebt_in) = 1 min_card(Stadt, Lebt_in) = 0 max_card(Stadt, Lebt_in) = n Stadt lebt_in = { <p1,c1>, <p2,c3>, <p3,c3> } als Mengendiagramm • p1 • c1 • p2 • c2 • p3 • c3 Es gilt immer: min_card <= max_card! • c4 Person, verbindlich Stadt, optional Bem.: Es gibt andere Notationen, z.B. wird manchmal nur max_card angegeben. Dr. Karsten Tolle – PRG2 – SS 2016 15 Kardinalitäten Instanz: Person Stadt lebt_in Instanz: Person Stadt lebt_in = { p1, p2, p3 } = { c1, c2, c3 } = { <p1,c1>, <p2,c2>, <p3,c3> } • p1 • c1 • p2 • c2 • p3 • c3 = { p1, p2, p3, p4} = { c1, c2, c3, c4, c5 } = { <p1,c1>, <p2,c1>, <p3,c3>, <p1, c4> } • p1 • c1 • p2 • c2 • p3 • c3 • p4 • c4 • c5 Person Name Geb_Datum Person Stadt (1,1) lebt_in (1,1) Stadt Dr. Karsten Tolle – PRG2 – SS 2016 Person S_Name Population Name Geb_Datum Person Stadt (0,n) lebt_in (0,n) Stadt S_Name Population 16 Übung 1 • Aussage: – Mannschaften werden von mindestens einem Trainer trainiert. Dr. Karsten Tolle – PRG2 – SS 2016 17 Mannschaften werden von mindestens einem Trainer trainiert. Fußballmannschaft Dr. Karsten Tolle – PRG2 – SS 2016 trainiert Trainer 18 Mannschaften werden von mindestens einem Trainer trainiert. Fußballmannschaft (1,n) Dr. Karsten Tolle – PRG2 – SS 2016 trainiert (0,n) Trainer 19 (Beziehungs) Attribute Instanz: Passagier = { p1, p2, p3 } Flug = { c1, c2, c3 } bucht = { <p1,c1, „D2“>, <p2,c1, „D3“>} D2 D1 • p1 D2 • c1 • p2 D3 • c2 • p3 Passagier bucht Flug • c3 • c4 Passagier Flug Sitz Dr. Karsten Tolle – PRG2 – SS 2016 20 Übung 2 – ER-Diagr. für folgende Aussage erstellen • Aussage: – Bei einem Spiel spielen zwei Mannschaften an einem bestimmten Tag und Uhrzeit in einem Stadion gegeneinander. Dr. Karsten Tolle – PRG2 – SS 2016 21 Die Uni … Studenten können sich von Professoren über eine Vorlesung mündlich prüfen lassen. Alt. 1: Name Geb_Datum Student prüft Prof Name Gehalt Vorlesung Alt. 2: Name Geb_Datum Student prüft Prof Name Gehalt (N-näre Beziehung) Titel SWS Dr. Karsten Tolle – PRG2 – SS 2016 Vorlesung 22 Entity-Typ oder Attribut??? • • Möbelstück Farbe Möbelstück hat Farbe Entities sind Klassen von Objekten der realen Welt und nehmen keine Werte an. Attribute dagegen sind beschreibende Eigenschaften und nehmen Werte an. Die Entscheidung ist abhängig vom Kontext (Situation/Anwendungsfall). Farbe Nr. (1,n) Name Intensität Dr. Karsten Tolle – PRG2 – SS 2016 besteht aus Menge (1,n) Name Lack Preis 23 Generalisierung • Hierarchien für Objekttypen (entspricht Klassenhierarchie in OO) Person Mann Dr. Karsten Tolle – PRG2 – SS 2016 Frau 24 … mit Mehrfachvererbung Person Mitarbeiter Professor Dr. Karsten Tolle – PRG2 – SS 2016 Student WiMi Tutor 25 Übung 3 – EM 2016 • Aussage: – Eine Mannschaft besteht aus Spieler, die sich aufteilen in Verteidigung, Mittelfeld, Angriff oder Torhüter. Dr. Karsten Tolle – PRG2 – SS 2016 26 B Professor hält A B-D Lehrveranst. A-C A-D B-E hält hält B-C D Ausbilder hält Seminar C besser so … besser so … A-C Personal lehrt Lehrveranst. Ausbilder A-E D E B-D Seminar B-C Dr. Karsten Tolle – PRG2 – SS 2016 A A-D C Professor A-E E B B-E 27 ER-Modell • Vorteile – Unabhängig von Implementierungsdetails – Grafische Darstellung (leicht zu lesen) –… • Nachteile – Abbildung des ER-Modells in das relationale Modell ist nicht eindeutig nicht automatisch – ER-Modell ist „statisch“ –… Dr. Karsten Tolle – PRG2 – SS 2016 28 Ausdruckskraft • Ein Angestellter einer Abteilung soll nicht mehr verdienen, als der entsprechende Abteilungsleiter. Gehalt arbeitet_ in Angesteller Abteilung leitet Benötigt zusätzliche Beschreibung, sogenannte Business Rules. Ein Angestellter darf nicht mehr Gehalt bekommen als der Abteilungsleiter, zu dessen Abteilung der Angestellte gehört. Ein Abteilungsleiter muss zu der Abteilung gehören, die er leitet. Dr. Karsten Tolle – PRG2 – SS 2016 29 Business Rules (im weitesten Sinne) können angesehen werden als: 1. Die semantische Definition eines für Anwendungen relevanten Konzeptes, genauer, die semantische Definition • eines Objektes, • eines Attributes, • einer Relation des ER-Modells. Für diesen Fall werden natürlich sprachliche Sätze verwendet, da es unmöglich ist hierfür eine präzise Syntax zu definieren. 2. Integritätsbedingungen für die Daten einer Anwendung (als zusätzliche Beschreibung der im ER-Modell enthaltenen Bedingungen oder zusätzliche Bedingungen). 3. Abgeleitete Bedingungen bzw. Folgerungen aus anderen Bedingungen (z.B. Brutto ist Summe aus Netto plus Steuer). Dr. Karsten Tolle – PRG2 – SS 2016 30 ER Zusammenfassung • Entitäten und Entity-Typen • Beziehungen und Beziehungstypen • Attribute • für Entitäten(Typen) und Beziehungen(Typen) • einfacher oder zusammengesetzter Schlüssel • Kardinalitäten • Generalisierung • Business Rules Dr. Karsten Tolle – PRG2 – SS 2016 31 Zeitangaben Datentyp „Nullwert“ DATETIME '0000-00-00 00:00:00' DATE '0000-00-00' TIMESTAMP '0000-00-00 00:00:00' TIME '00:00:00' YEAR 0000 Unterschied DATETIME und TIMESTAMP? Was ist das mit dem Jahr ‘23‘ gemeint? Dr. Karsten Tolle – PRG2 – SS 2016 32 Unterschiede der DBMS Datenbanksystem Datentyp Geltungsbereich Genauigkeit MS-SQL Server 2005 datetime 01.01.1753 bis 31.12.9999 3,33 Millisekunden smalldatetime 01.01.1900 bis 06.06.2079 1 Minute date 01.01.0001 bis 31.12.9999 1 Tag time 00:00:00.0000000 bis 23:59:59.9999999 100 Nanosekunden datetime 01.01.0001 bis 31.12.9999 3,33 Millisekunden smalldatetime 01.01.1900 bis 06.06.2079 1 Minute DATE 01.01.0100 bis 29.02.32768 1 Tag TIME 00:00 bis 23:59.9999 6,67 Millisekunden DATETIME 01.01.1000 00:00:00 bis 31.12.9999 23:59:59 1 Sekunde DATE 01.01.1000 bis 31.12.9999 1 Tag TIME –838:59:59 bis 838:59:59 1 Sekunde YEAR 1901 bis 2055 MS-SQL Server 2008 Firebird MySQL 5.x Dr. Karsten Tolle – PRG2 – SS 2016 1 Jahr Quelle: http://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_Datentypen 33 Fließkomma-Zahlen • Float – wenn Speicherplatz ein Problem ist! • Double – genauer als Float • Decimal – bis zu 65 Stellen … man beachte die interne Zahlendarstellung!!!!! http://dev.mysql.com/doc/refman/5.6/en/problems-with-float.html Dr. Karsten Tolle – PRG2 – SS 2016 34 Textvergleiche - LIKE Kunde ( KundenNr Name Vorname Straße Stadt ) select KundenNr from Kunde where Name like 'To%' and Vorname not like '_arste%'; Bem.: % für beliebige Zeichenfolgen _ für genau ein Zeichen Dr. Karsten Tolle – PRG2 – SS 2016 35 Sortierung – ORDER BY Kunde ( KundenNr Name Vorname Straße Stadt ) select KundenNr from Kunde where Name like 'To%' ORDER BY KundenNr; Syntax: ORDER BY {col_name | expr | position} [ACS | DESC] Dr. Karsten Tolle – PRG2 – SS 2016 36 Begrenzung - LIMIT Kunde ( KundenNr Name Vorname Straße Stadt ) select KundenNr from Kunde where Name like 'To%' LIMIT 10; Syntax: LIMIT {[offset,] row_count | row_count OFFSET offset} Dr. Karsten Tolle – PRG2 – SS 2016 37 Wie lauten die 10 KundenNr, welche von der Größe nach auf Platz 20 bis 29 liegen? Kunde ( KundenNr Name Vorname Straße Stadt ) select KundenNr from Kunde where ??; Syntax: LIMIT {[offset,] row_count | row_count OFFSET offset} Dr. Karsten Tolle – PRG2 – SS 2016 38 Wie lauten die 10 KundenNr, welche von der Größe nach auf Platz 20 bis 29 liegen? Kunde ( KundenNr Name Vorname Straße Stadt ) select KundenNr from Kunde where order by KundenNr asc limit 19,10; Syntax: LIMIT {[offset,] row_count | row_count OFFSET offset} Dr. Karsten Tolle – PRG2 – SS 2016 39 Dr. Karsten Tolle – PRG2 – SS 2016 40