Daten – Bank 2. Vorlesung

Werbung
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
Herunterladen