44
Daten – Bank 3. Vorlesung Dr. Karsten Tolle – PRG2 – SS 2012

Daten –Bankprg2/SS2012/folien/teil2/3...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

  • Upload
    lytruc

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Daten –Bankprg2/SS2012/folien/teil2/3...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

Daten – Bank

3. Vorlesung

Dr. Karsten Tolle – PRG2 – SS 2012

Page 2: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 3: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 4: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 5: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 6: Daten –Bankprg2/SS2012/folien/teil2/3...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

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?

Page 7: Daten –Bankprg2/SS2012/folien/teil2/3...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

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.

Page 8: Daten –Bankprg2/SS2012/folien/teil2/3...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

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.

Page 9: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 10: Daten –Bankprg2/SS2012/folien/teil2/3...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

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.

Page 11: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 12: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 13: Daten –Bankprg2/SS2012/folien/teil2/3...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

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!

Page 14: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 15: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 16: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 17: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 18: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 19: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 20: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 21: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 22: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 23: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 24: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 25: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 26: Daten –Bankprg2/SS2012/folien/teil2/3...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

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!

Page 27: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 28: Daten –Bankprg2/SS2012/folien/teil2/3...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

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)

Page 29: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 30: Daten –Bankprg2/SS2012/folien/teil2/3...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

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?

Page 31: Daten –Bankprg2/SS2012/folien/teil2/3...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

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.

Page 32: Daten –Bankprg2/SS2012/folien/teil2/3...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

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“!

Page 33: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 34: Daten –Bankprg2/SS2012/folien/teil2/3...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

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.

Page 35: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 36: Daten –Bankprg2/SS2012/folien/teil2/3...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

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!

Page 37: Daten –Bankprg2/SS2012/folien/teil2/3...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

(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

Page 38: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 39: Daten –Bankprg2/SS2012/folien/teil2/3...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

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

Page 40: Daten –Bankprg2/SS2012/folien/teil2/3...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

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;

Page 41: Daten –Bankprg2/SS2012/folien/teil2/3...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

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;

Page 42: Daten –Bankprg2/SS2012/folien/teil2/3...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

Dr. Karsten Tolle – PRG2 – SS 2012 42

Zusammenfassung

• Übersetzung ER-Modell ins Relationenmodell(nicht eindeutig!)

• Referenzielle Integrität mit Fremdschlüssel

• Joins mit SQL

Page 43: Daten –Bankprg2/SS2012/folien/teil2/3...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

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!!!!

Page 44: Daten –Bankprg2/SS2012/folien/teil2/3...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

Diesen Freitag!

Auch mit Public Viewing des EM-Spiels!