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

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

Embed Size (px)

Citation preview

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ätstyp 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 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 angewendet werden.

Ist nur eine min-Kardinalität = 1, so wendet man die Abbildung der one-to-many 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 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!