daten –bankprg2/ss2012/folien/teil2/3...003 501 17.08.2004 null 001 503 01.01.1999 01.01.2012 001...
TRANSCRIPT
Daten – Bank
3. Vorlesung
Dr. Karsten Tolle – PRG2 – SS 2012
Dr. Karsten Tolle – PRG2 – SS 2012 2
Bisher …
(0,n) (0,n)
AusweisNr. Name Vorname
Person lebt_in
von bis
Ort
PLZ Ortsname
GeoPosition
SQL:• create• insert• select• alter
Dr. Karsten Tolle – PRG2 – SS 2012 3
ER-Modell gegeben
Frage 1: Wie daraus Tabellen (Relationen) bauen?
Frage 2: Welche Alternativen habe ich?
… später heute: Wie baue ich diese Tabellen in SQL?
(0,n) (0,n) Person
AusweisNr. Name Vorname
lebt_in
von bis
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 4
�
E (Schlüssel, Attribut_A, Attribut_B)
ER-Abbildung zu Relationen
Entitätstypen
• Ein Entitätstyp wird zu einer Relation (Tabelle), dessen Relationenschemaaus allen Attributen des Entitätstyps besteht.
• Jedes Tupel der Tabelle entspricht dann genau einer Entität des Entitätstyps.
• Etwaige Schlüssel werden übernommen und üblicherweise an den Anfang des Relationenschemas gestellt.
„Regel“:
Entitätstyp E
Schlüssel Attribut_A Attribut_B
Dr. Karsten Tolle – PRG2 – SS 2012 5
Beispiel
Angestellter
PersNr Name Vorname
�
ANGESTELLTER (PersNr, Name, Vorname)
PersNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
ANGESTELLTER
Dr. Karsten Tolle – PRG2 – SS 2012 6
BEZIEHUNG (Schlüssel1, Schlüssel2, B1, B2)
Beziehungstyp
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
B1 B2
�
ENTITÄT_1 (Schlüssel1, A_1)�
ENTITÄT_2 (Schlüssel2, A_2)
Schlüssel für die Tabelle/Relation Beziehung?
Dr. Karsten Tolle – PRG2 – SS 2012 7
Schlüssel• Ein Schlüssel identifiziert eine Entität. Er besteht aus einer
Menge von Attributen, deren Werte alle Instanzen einer Entität eindeutig bestimmen. (aus ER!)
• Ein Schlüssel (key) einer Relation r(R) ist eine minimale Teilmenge K von R, so dass für je zwei verschiedene Tupel t1,
t2 ∈∈∈∈ r gilt:• t1(K) ≠≠≠≠ t2(K) und
• keine echte Teilmenge K' von K hat diese Eigenschaft.
• Ein Schlüssel kann als Integritätsbedingung angesehen werden. Falls K Schlüssel von r(R), t1 ∈∈∈∈ r, t1(K) = t2(K), t1 ≠≠≠≠ t2
dann dürfte t2 nicht in r(R) eingefügt werden.
Dr. Karsten Tolle – PRG2 – SS 2012 8
Schlüssel?
Name
NM103
NM117
NM123
SR9
Raum
TutorName Raum Wochentag Startzeit
Sadik NM117 Montag 08:15
Alina NM117 Montag 12:15
Max NM117 Donnerstag 14:15
Max SR9 Donnerstag 12:15
Tutorium
Ein Schlüssel kann als Integritätsbedingung angesehen werden. Falls K Schlüssel von r(R), t1 ∈∈∈∈ r, t1(K) = t2(K), t1 ≠≠≠≠ t2 dann dürfte t2 nicht in r(R) eingefügt werden.
Dr. Karsten Tolle – PRG2 – SS 2012 9
• K ist ein Oberschlüssel (super key) der Relation, falls K einen Schlüssel enthält.
• … also aus Schlüssel � Oberschlüssel (aber nicht umgekehrt)
Oberschlüssel
Oberschlüssel
Schlüssel
Dr. Karsten Tolle – PRG2 – SS 2012 10
Wichtig!!!!!!!!!
• Eine Relation kann mehrere Schlüssel besitzen. Man spricht dann auch von Schlüsselkandidaten.
• Im Allgemeinen wird ein Schlüssel als Primärschlüssel
ausgezeichnet. Dieser wird im Relationenschema durch Unterstreichen gekennzeichnet.
Dr. Karsten Tolle – PRG2 – SS 2012 11
Beispiel
�
PERSON (AusweisNr, Name, Vorname)
ORT (PLZ, Ortsname)
LEBT_IN (AusweisNr, PLZ, von, bis)
(0,n) (0,n) Person
AusweisNr Name Vorname
lebt_in
von bis
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 12
Beispiel mit Instanzen
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
Jon Lucas (001) lebt(e)_in Buli (501), vom 23.12.2000 bis zum 25.12.2010!
PERSON ORT
LEBT_IN
Dr. Karsten Tolle – PRG2 – SS 2012 13
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
Jon Lucas (001) lebt(e)_in Buli (501), vom 23.12.2000 bis zum 25.12.2010!
PERSON ORT
LEBT_IN
Jon Lucas (001) lebt(e)_in Buli (501), vom 01.01.2012 bis heute!
Attribut „von“ der Relation
muss auch Teil des Schlüssels
sein!
Dr. Karsten Tolle – PRG2 – SS 2012 14
�
BEZIEHUNG (Schlüssel1, Schlüssel2, B1, B2)�
BEZIEHUNG (Schlüssel1, Schlüssel2, B1, B2)
(0,n) und (0,n)
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(0,n) (0,n)
B1 B2
�
ENTITÄT_1 (Schlüssel1, A_1)�
ENTITÄT_2 (Schlüssel2, A_2)
Dr. Karsten Tolle – PRG2 – SS 2012 15
(0,1) und (0,n)
�ENTITÄT_1 (Schlüssel1, A_1)
ENTITÄT_2 (Schlüssel2, A_2)
BEZIEHUNG (Schlüssel1, Schlüssel2, B)
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(0,1) (0,n)
B
Dr. Karsten Tolle – PRG2 – SS 2012 16
Beispiel
(0,1) (0,n) Buch
BuchNr Titel Autor
verliehen an
Datum
Entleiher
Nummer Name
�
BUCH (BuchNr, Titel, Autor)ENTLEIHER (Nummer, Name)VERLIEHEN_AN(BuchNr, Nummer, Datum)
Dr. Karsten Tolle – PRG2 – SS 2012 17
Beispiel mit Instanzen
Nummer Name
501 Bully
503 Wally
603 Kally
BuchNr Nummer Datum
001 501 23.12.2011
103 603 17.08.2011
003 503 01.01.1999
BuchNr Titel Autor
001 Vom Winde Lucas
003 Per Anhalter Smith
103 Vom Winde Lucas
Das Buch (001) wurde verliehen an Bully am 23.12.2011.
BUCH ENTLEIHER
VERLIEHEN_AN
Dr. Karsten Tolle – PRG2 – SS 2012 18
Beispiel (besser!)
(0,1) (0,n) Buch
BuchNr Titel Autor
verliehen an
RückgabeDatum
Entleiher
EntleiherNr Nachname
�
BUCH (BuchNr, Titel, Autor)ENTLEIHER (EntleiherNr, Name)VERLIEHEN_AN(BuchNr, EntleiherNr, RückgabeDatum)
Dr. Karsten Tolle – PRG2 – SS 2012 19
Beispiel (besser!)
(0,1) (0,n) Buch
Nr Titel Autor
verliehen an
RückgabeDatum
Entleiher
Nr Nachname
�
BUCH (Nr, Titel, Autor)ENTLEIHER (Nr, Name)VERLIEHEN_AN(BuchNr, EntleiherNr, RückgabeDatum)
Dr. Karsten Tolle – PRG2 – SS 2012 20
Hier sind nur noch zwei Relationen notwendig!
(1,1)
�ENTITÄT_1 (Schlüssel1, A_1, Schlüssel2, B)
ENTITÄT_2 (Schlüssel2, A_2)
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(1,1) (0,n)
B
Dr. Karsten Tolle – PRG2 – SS 2012 21
Beispiel
�
PERSON (AusweisNr., Name, Vorname, PLZ, Datum)ORT (PLZ, Ortsname)
(1,1) (0,n)Person
AusweisNr. Name Vorname
geborenin
Datum
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 22
… aber auch möglich! (geht immer☺)
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(1,1) (0,n)
B
�
ENTITÄT_1(Schlüssel1, A_1)
ENTITÄT_2 (Schlüssel2, A_2)
BEZIEHUNG (Schlüssel1, Schlüssel2, B)
�PERSON (AusweisNr., Name, Vorname)ORT (PLZ, Ortsname)GEBOREN_IN (AusweisNr., PLZ, Datum)
(1,1) (0,n)Person
AusweisNr. Name Vorname
geborenin
Datum
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 23
… Unterschied?
�
PERSON (AusweisNr., Name, Vorname)ORT (PLZ, Ortsname)GEBOREN_IN (AusweisNr., PLZ, Datum)
�
PERSON (AusweisNr., Name, Vorname, PLZ, Datum)ORT (PLZ, Ortsname)
(1,1) (0,n)Person
AusweisNr. Name Vorname
geborenin
Datum
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 24
�
ENTITÄT_1 (Schlüssel1, A_1, Schlüssel2, B)ENTITÄT_2 (Schlüssel2, A_2)
(1,1) und (0,1)
Sind beide min-Kardinalitäten = 0, so muss das allgemeine Verfahren ((o,n) und (0,n)) angewendet werden.
Ist nur eine min-Kardinalität = 1, so wendet man die Abbildung der one-to-many bzw. many-to-one Beziehung an.
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(1,1) (0,1)
B
Dr. Karsten Tolle – PRG2 – SS 2012 25
Beispiel
(1,1) (0,1) Abteilung
AbteilungsNr. Bezeichnung
geleitet von
seit
Mitarbeiter
Pers.Nr. Name
�
ABTEILUNG (AbteilungsNr., Bezeichnung, Pers.Nr., seit)MITARBEITER (Pers.Nr., Name)
Dr. Karsten Tolle – PRG2 – SS 2012 26
(1,1) und (1,1)
Entität_1 Entität_2 Beziehung
Schlüssel1 A_1
Schlüssel2 A_2
(1,1) (1,1)
B
�
ENTITÄT_1_2 (Schlüssel1, A_1, Schlüssel2, A_2, B)
oderENTITÄT_1_2 (Schlüssel1, A_1, Schlüssel2, A_2, B)
Nur noch eine Relation notwendig!
Dr. Karsten Tolle – PRG2 – SS 2012 27
Beispiel
(1,1) (1,1) Ausweis
AusweisNr. Behörde
gehört
Ablauf- Datum
Person
ID Nachname
�
PERSON (AusweisNr., Behörde, Ablaufdatum, ID, Nachname)
Dr. Karsten Tolle – PRG2 – SS 2012 28
Sonderfälle
(3,5) (0,1) Auto
KFZ-Kennzeichen Hersteller
hat_Räder Rad
Fabr.-Nr. Breite
�
(Hier sind RAD1 – RAD3 verbindlich, also NOT NULL, während RAD4 und RAD5 durchaus Nullwerte beinhalten dürfen.)
AUTO (KFZ-Kennzeichen, Hersteller, RAD1, ... RAD5)RAD (Fabr.-Nr., Breite)
Dr. Karsten Tolle – PRG2 – SS 2012 29
Überführung in SQL
�
PERSON (AusweisNr., Name, Vorname)
ORT (PLZ, Ortsname)
LEBT_IN (AusweisNr., PLZ, von, bis)
(0,n) (0,n) Person
AusweisNr. Name Vorname
lebt_in
von bis
Ort
PLZ Ortsname
Dr. Karsten Tolle – PRG2 – SS 2012 30
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
PERSON ORT
LEBT_IN
Fragen:1. Welche Datentypen für die Attribute?2. Welche Attribute dürfen Null-Values enthalten?3. Wie erzeuge ich die referenzielle Integrität?
Dr. Karsten Tolle – PRG2 – SS 2012 31
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
ORTLEBT_IN
z.B. varchar(40)oder besser varchar(45)? … Ist auch „01“ ein gültiger Wert?
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch ist ein walisischer Ortsname in Irland mit 58 Zeichen.
Dr. Karsten Tolle – PRG2 – SS 2012 32
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
ORTLEBT_IN
Werte hier sollen eine Referenzauf Objekte darstellen. Sie solltenenthalten sein in der Tabelle ORT!
Solche Verweise auf Schlüssel anderer Tabellen nennt man „Fremdschlüssel“!
Dr. Karsten Tolle – PRG2 – SS 2012 33
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
ORTLEBT_IN
CREATE TABLE lebt_in (AusweisNr INT NOT NULL ,PLZ INT NOT NULL ,von DATE NOT NULL ,bis DATE NULL ,PRIMARY KEY (AusweisNr, PLZ, von) ,
FOREIGN KEY (PLZ) REFERENCES ort (PLZ),
FOREIGN KEY (AusweisNr) REFERENCES person (AusweisNr));
Dr. Karsten Tolle – PRG2 – SS 2012 34
Definition
Referenzielle Integrität bedeutet die Konsistenz zwischen verbundenen Tabellen. Referenzielle
Integrität wird durch die Kombination von Primärschlüssel und Fremdschlüssel erzwungen. Um die referenzielle Integrität zu erhalten darf jedes Feld einer Tabelle, das als Fremdschlüssel deklariert worden ist, nur Werte des entsprechenden Primärschlüssels der „Eltern Tabelle“ annehmen.
Dr. Karsten Tolle – PRG2 – SS 2012 35
Abbildung der Generalisierung
Oberklasse
Schlüssel Attribut_A Attribut_B
Subklasse_2
Attribut_A_2
Subklasse_1
Attribut_A_1 Attribut_B_1
Es gibt unterschiedliche Möglichkeitendies ins rel. Modell abzubilden.
nicht klausurrelevant
Dr. Karsten Tolle – PRG2 – SS 2012 36
Generalisierung ER � rel. Modell
Konto
Kto.-Nr. Kunde Kto.Stand
Sparkonto
Zinssatz
Girokonto
Kreditrahmen
Möglichkeit 1:
KONTO (Kto.Nr., Kunde, Kto.Stand)GIROKONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen)SPARKONTO (Kto.Nr., Kunde, Kto.Stand, Zinssatz)
Möglichkeit 2:
KONTO (Kto.Nr., Kunde, Kto.Stand)GIROKONTO (Kto.Nr., Kreditrahmen)SPARKONTO (Kto.Nr., Zinssatz)
Möglichkeit 3:
KONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen, Zinssatz)
nicht klausurrelevant☺☺☺☺
Verknüpfung zwischen
Kto.Nr. über Fremdschlüssel!
(1,n)
Aufnahme Entlassung
Krankenhaus
Nr Nachname
auf nehmen
Patient (0,n)
C
Abteilung Abteilungsleiterhat
Facharzt
Mitarbeiter
Dienstplan
StvAbtleiterleitetzugeordnet
Mitarbeiter SteuerungsAbt
gehört
legt_fest
Fachausrichtung
ausgebildetin
Woche Jahr
(0,n)
(1,n)
(1,1) (1,1)(2,n)(0,n) (0,n) (0,n)
(0,n) (0,n)
(0,n)
(1,1)
Note
A B
Dr. Karsten Tolle – PRG2 – SS 2012 38
SQL
• select * from ort o where o.PLZ = 501; - - Verwendung eines Alias
• select ortsname as Name from ort; -- Umbenennung der Ausgabe
Dr. Karsten Tolle – PRG2 – SS 2012 39
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
PERSON ORT
LEBT_IN
Wieder verbinden in Anfragen?
Welche Personen leben aktuell in Buli?select A1,A2, ... ,An
from R1, R2, ... ,Rm
[where conditions]
[group by clause]
[having clause]
[order by clause];
Dr. Karsten Tolle – PRG2 – SS 2012 40
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
PERSON ORT
LEBT_IN
Wieder verbinden in Anfragen?
Welche Personen leben aktuell in Buli?
SELECT p.* FROM lebt_in l, person p, ort o where
o.Ortsname = 'Buli' ando.plz = l.plz andp.ausweisnr = l.ausweisnr andl.bis is null;
Dr. Karsten Tolle – PRG2 – SS 2012 41
PLZ Ortsname
501 Buli
503 Wali
603 Kali
AusweisNr PLZ von bis
001 501 23.12.2000 25.12.2010
003 501 17.08.2004 Null
001 503 01.01.1999 01.01.2012
001 501 01.01.2012 Null
AusweisNr Name Vorname
001 Jon Lucas
003 Jon Smith
103 Lucas Jon
PERSON ORT
LEBT_IN
Wieder verbinden in Anfragen?
Welche Personen leben aktuell in Buli?
SELECT p.* FROM lebt_in l join person p on (l.ausweisnr=p.ausweisnr) join ort o on (o.plz=l.plz) where
o.Ortsname = 'Buli' and l.bis is null;
Dr. Karsten Tolle – PRG2 – SS 2012 42
Zusammenfassung
• Übersetzung ER-Modell ins Relationenmodell(nicht eindeutig!)
• Referenzielle Integrität mit Fremdschlüssel
• Joins mit SQL
Dr. Karsten Tolle – PRG2 – SS 2012 43
Wichtiges
• Bachelor Informatik-Studenten: Onlineanmeldung zu Klausur B-PRG2 im LFS ist freigeschaltet.
• Zusätzlich zur Klausur anmelden unter: http://www.dbis.informatik.uni-frankfurt.de/anmeldung/prg2/klausur/
Achtung: Dies ersetzt nicht eine Anmeldung
beim zuständigen Prüfungsamt, wenn dies
nötig ist!!!!
Diesen Freitag!
Auch mit Public Viewing des EM-Spiels!