41
Daten – Bank 4. Vorlesung

Garten - Daten – Was ist das? Wer braucht das?prg2/SS2018/folien/teil2/4_db_2018.pdf · Dr. Karsten Tolle –PRG2 –SS 2018 2 Nächste Woche 4. Juli •Informationen zur Klausur-Anmeldung

  • Upload
    dokhanh

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

Daten – Bank

4. Vorlesung

Dr. Karsten Tolle – PRG2 – SS 2018 2

Nächste Woche 4. Juli

• Informationen zur Klausur-Anmeldung

• Evaluation DB-Teil der Vorlesung (Handy/Laptop mitbringen)

• Nils Dallmeyer beantwortet ab 10:45 Uhr noch einmal Fragen zur Klausur!

Diese Woche FR29. Juni

Dr. Karsten Tolle – PRG2 – SS 2018 3

Bisher …

SQL:

• create

• insert

• select

(0,n) (0,n) Person

AusweisNr. Name Vorname

lebt_in

von bis

Ort

PLZ Ortsname

Dr. Karsten Tolle – PRG2 – SS 2018 4

Heute …

SQL:

• create

• insert

• select

(0,n) (0,n) Person

AusweisNr. Name Vorname

lebt_in

von bis

Ort

PLZ Ortsname

• 1. Normalform

• Schlüssel und Funktionale Abhängigkeiten

DatenaustauschformateViews

Dr. Karsten Tolle – PRG2 – SS 2018 6

CSV (Comma Separated Values)

CSV-Dateien dienen zum Speichern/Austausch einer Tabelle

id,vorname,nachname,telefon1,Max,Mustermann,938479283472,Peter,Mustermann,92378409238473,Miss,Mustermann,9832488

Daten(austausch)formate

Dr. Karsten Tolle – PRG2 – SS 2018 7

Workbench oder „SELECT ... INTO OUTFILE”

eXtensible Markup Language (XML) – a simple example

<?xml version="1.0" ?>

<contact>

<address type="business">

<name>Tolle</name>

<firstname>Karsten</firstname>

<street>Robert-Mayer-Str.</street>

<town>Frankfurt</town>

</address>

</contact>

… erste W3C Recommendation von 1998!

Dr. Karsten Tolle – PRG2 – SS 2018 9

XML Syntax and Grammar

[1] document ::= prolog element Misc*

...

[3] S ::= (#x20 | #x9 | #xD | #xA)+ | space, carriage returns, line feeds, or tabs

[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender

[5] Name ::= (Letter | '_' | ':') (NameChar)*

[6] Names ::= Name (#x20 Name)*

[7] Nmtoken ::= (NameChar)+

[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*

...

[89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46

| #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]

Siehe auch: https://www.w3.org/TR/xml/

Dr. Karsten Tolle – PRG2 – SS 2018 10

JavaScript Object Notation (JSON)

{"contact": {"address": {"-type": "business","name": "Tolle","firstname": "Karsten","street": "Robert-Mayer-Str.","town": "Frankfurt"

}}

}

<?xml version="1.0" ?>

<contact>

<address type="business">

<name>Tolle</name>

<firstname>Karsten</firstname>

<street>Robert-Mayer-Str.</street>

<town>Frankfurt</town>

</address>

</contact>

http://www.utilities-online.info/xmltojson/

… erstmals 2005 vorgestellt!

Dr. Karsten Tolle – PRG2 – SS 2018 11

Tools … ?• MySQL Workbench

• Heidi SQL

• OpenRefine (Google)

• …

Dr. Karsten Tolle – PRG2 – SS 2018 12

Nutzung von Views

Empno Vorname Nachname Gehalt

1 Ines Müller 75000

2 Fred Wagner 60000

3 Ingo Meyer 72000

4 Max Müller 26000

Mitarbeiter

select Vorname, Nachname from Mitarbeiter;

Vorname Nachname

Ines Müller

Fred Wagner

Ingo Meyer

Max Müller

Ergebnis einer SQL-Select-Anfrage istimmer wieder eine Relation (Tabelle)!

CREATE VIEW Mitarbeiter_Namen ASselect Vorname, Nachname from Mitarbeiter;

Dr. Karsten Tolle – PRG2 – SS 2018 13Mitarbeiter_Dept

Empno Vorname Nachname Gehalt

1 Ines Müller 75000

2 Fred Wagner 60000

3 Ingo Meyer 72000

4 Max Müller 26000

Depno Name Head …

1 Finanzen 2

2 Einkauf 1

3 HR 1

Empno Depno …

1 2

1 3

2 1

3 3

4 2

CREATE VIEW Mitarbeiter_Dept ASselect m.Empno, m.Nachname, d.Name as Abtfrom Mitarbeiter m, Abteilung d, Arbeitet_in awhere m.Empno = a.Empnoand a.Depno = d.Depno;

Mitarbeiter Abteilung

Arbeitet_in

Empno Nachname Abt

1 Müller Einkauf

1 Müller HR

2 Wagner Finanzen

3 Meyer HR

4 Müller Einkauf

Mitarbeiter_Dept

Dr. Karsten Tolle – PRG2 – SS 2018 14

FIRSTNME LASTNME BIRTH STREET NUMBER TOWN ZIP

Jon Lucas 12.03.1969 {Zeil, Lange Str.}

{12, 114} {Frankfurt, Frankfurt}

{60313,60313}

Lucas Jon 24.12.1980 Gräfstr. 27 Frankfurt 60325

… … … … … … …

Dr. Karsten Tolle – PRG2 – SS 2018 15

1. Normalform

Definition:

Ein Relationenschema R ist in 1. Normalform (1NF), wenn die Wertebereiche aller Attribute von R atomar sind.

1.NF

Wertebereiche atomar

Dr. Karsten Tolle – PRG2 – SS 2018 16

1. Normalform

FIRSTNME LASTNME BIRTH STREET NUMBER TOWN ZIP

Jon Lucas 12.03.1969 Zeil 12 Frankfurt 60313

Jon Lucas 12.03.1969 Lange Str. 114 Frankfurt 60313

Lucas Jon 24.12.1980 Gräfstr. 27 Frankfurt 60325

… … … … … … …

FIRSTNME LASTNME BIRTH STREET NUMBER TOWN ZIP

Jon Lucas 12.03.1969 {Zeil, Lange Str.}

{12, 114} {Frankfurt, Frankfurt}

{60313,60313}

Lucas Jon 24.12.1980 Gräfstr. 27 Frankfurt 60325

… … … … … … …

Dr. Karsten Tolle – PRG2 – SS 2018 17

Diskutieren

Dr. Karsten Tolle – PRG2 – SS 2018 18

Nachteile nicht 1. NF

• Finden wird erschwert bis unmöglich

• Sortierungen werden sinnlos bis unmöglich

Dr. Karsten Tolle – PRG2 – SS 2018 19

Schlüssel ?

PLZ ORT STRASSE NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Bodenrode Hauptstraße 12

35279 Neustadt Gartenstraße 7

Dr. Karsten Tolle – PRG2 – SS 2018 20

Schlüssel ?

PLZ ORT STRASSE NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

Dr. Karsten Tolle – PRG2 – SS 2018 21

Schlüssel ?

keine Abhängigkeiten

Schlüssel: PLZ, ORT, STRASSE, NR

PLZ ORT STRASSE NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Dr. Karsten Tolle – PRG2 – SS 2018 22

Fahrzeuge der Firma AB

HERSTELLER KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN

VW F-AB 123 bis 3.5t B

MB F-AB 234 bis 7.5t C1

MB F-AB 235 bis 7.5t C1

MAN F-AB 236 bis 12t C

MB F-AB 239 bis 12t C

… … …

Abhängigkeiten?

Dr. Karsten Tolle – PRG2 – SS 2018 23

Fahrzeuge der Firma AB

HERSTELLER KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN

VW F-AB 123 3.5 B

MB F-AB 234 7.5 C1

MB F-AB 235 7.5 C1

MAN F-AB 236 12 C

MB F-AB 239 12 C

MB F-AB 230 17 C

… … … …

… aus ZUGEL_GES_GEW folgt hier FÜHRERSCHEIN:ZUGEL_GES_GEW FÜHRERSCHEIN… umgekehrt nicht! bis 17 Tonnen

Dr. Karsten Tolle – PRG2 – SS 2018 24

Seien X und Y Teilmengen von R.

Eine Relation r(R) erfüllt (satisfies) die funktionale Abhängigkeit(functional dependency) FD X Y, wenn für je zwei (beliebige) Tupel u, v r(R) gilt:

u(X) = v(X) u(Y) = v(Y).

X Y u(X) = v(X) u(Y) = v(Y)

Funktionale Abhängigkeit (FD)

Dr. Karsten Tolle – PRG2 – SS 2018 25

Beispiel

Gegeben ist die Relation r(R):

Geben Sie an, welche der folgenden Abhängigkeiten r nicht widerspricht:

A B C D E

a1 b1 c1 d1 e1

a1 b2 c2 d2 e1

a2 b1 c3 d2 e1

a2 b1 c4 d3 e1

a3 b2 c5 d1 e1

A DAB DC BDEE AA EA BC

Dr. Karsten Tolle – PRG2 – SS 2018 26

Axiome von Armstrong

1. β ⊆ α ⇛ 𝛼 → 𝛽 (Reflexivität)

2. 𝛼 → 𝛽 ⇛ 𝛼𝛾 → 𝛽𝛾 (Erweiterungsregel)

3. 𝛼 → 𝛽 ∧ 𝛽 → 𝛾 ⇛ 𝛼 → 𝛾 (Transitivität)

Dr. Karsten Tolle – PRG2 – SS 2018 27

FDs?

Stadt Stadt Kreis, Stadt Kreis, Stadt…Stadt KreisKreis BundeslandStadt Bundesland

Stadt Kreis Bundesland

Rüsselsheim Groß-Gerau Hessen

Mörfelden-Walldorf Groß-Gerau Hessen

Dietzenbach Offenbach Hessen

Dreieich Offenbach Hessen

Walldorf (Baden) Rhein-Neckar-Kreis Baden-Württemberg

Dr. Karsten Tolle – PRG2 – SS 2018 28

Übung FDs – Situation welche FDs gelten?

• Briefe und PortoBrief_ID Gewicht_in_gr Porto_in_euro

1 18 0,70

2 12 1,45

3 7 0,70

4 19 0,85

5 75 1,45

Brief_ID Gewicht_in_gr Porto_in_euro

1 18 0,70

2 12 1,45

3 7 0,70

4 19 0,85

5 75 1,45

6 ?? 0,70

7 23 ??

Dr. Karsten Tolle – PRG2 – SS 2018 29

Übung FDs – Situation welche FDs gelten?

• Briefe und Porto

Brief_ID L_in_cm B_in_cm H_in_cm Gewicht_in_gr Porto_in_euro

1 15 11,5 0,1 18 0,70

2 15 11,5 1,5 12 1,45

3 15 11,5 0,2 7 0,70

4 15 11,5 0,4 23 0,85

5 15 11,5 1,5 75 1,45

http://www.deutschepost.de/de/b/briefe-in-deutschland.html

Dr. Karsten Tolle – PRG2 – SS 2018 31

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.

Ein Schlüssel (key) einer Relation r(R) ist eine minimale Teilmenge Kvon 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 2018 32

Schlüssel

Gegeben seien ein Relationenschema R und eine Menge F von FDs.

X R ist ein Oberschlüssel für R

X R

X ist ein Schlüssel für R

X R und X minimal (AX: X\A R)

Dr. Karsten Tolle – PRG2 – SS 2018 33

Wie finde ich alle Schlüssel wenn FDs gegeben?

Gegeben Relationschema R und eine Menge F von FDs

z.B. R = (A, B, C, D, E) und FD = {AB, CDAC}

Gibt es Attribute, die nicht auf der rechten Seite der FDs vorkommen?Falls ja, gehören diese zu jedem Schlüssel!

Hier: D und E

… ist dies bereits ein Schlüssel, sind wir fertig!

Dr. Karsten Tolle – PRG2 – SS 2018 34

Gegeben Relationschema R und eine Menge F von FDs

z.B. R = (A, B, C, D, E) und FD = {AB, CDAC}

Gibt es Attribute, die nicht auf der rechten Seite der FDs vorkommen?Falls ja, gehören diese zu jedem Schlüssel!

Hier: D und E (kann aber auch ∅ sein)

… ist dies kein Schlüssel kombinatorisch ausprobieren. Bem.: Auch C gehört hier zu allen Schlüsseln!

Es steht zwar auf der rechten Seite, jedoch auch links.In diesem Fall darf man das C rechts streichen (nicht aber links).

Schlüssel = {CDE}

Dr. Karsten Tolle – PRG2 – SS 2018 35

Übung

R = (A, B, C, D, E)

a. FD = {ABD, CDAC, ED}

b. FD = {AEBD, CDAC, ED}

a. Schlüssel = {CE}b. Schlüssel = {AC, CD, CE}

Dr. Karsten Tolle – PRG2 – SS 2018 36

Wie viele Eintragungen gibt für die PLZ = 37308 ?

PLZ ORT STRASSE_NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Wie viele Eintragungen gibt es pro PLZ?

select PLZ, count(*) from Adresse where PLZ = 37308;

PLZ count(*)

37308 3

Adresse

Dr. Karsten Tolle – PRG2 – SS 2018 37

SQL - Anfragen

• group by PLZ

select A1,A2, ... ,An

from R1, R2, ... ,Rm

[where conditions]

[group by clause]

[having clause]

[order by clause];

PLZ ORT STRASSE_NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Dr. Karsten Tolle – PRG2 – SS 2018 38

Group by …• zum Gruppieren nach Spaltenwerte

Wie viele Eintragungen gibt es pro PLZ?

select PLZ, count(*) from Adresse group by PLZ;

PLZ count(*)

30419 2

37308 3

35279 1

53577 1

Adresse

PLZ ORT STRASSE_NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Dr. Karsten Tolle – PRG2 – SS 2018 39

Group by …• zum Gruppieren nach Spaltenwerte

PLZ ORT STRASSE_NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Wie viele Eintragungen gibt es pro Kombination aus PLZ und ORT?

select PLZ, Ort, count(*) from Adresse group by PLZ, Ort;

PLZ ORT count(*)

30419 Hannover 2

37308 Schirmberg 1

37308 Bodenrode 1

37308 Geismar 1

35279 Neustadt 1

53577 Neustadt 1

Dr. Karsten Tolle – PRG2 – SS 2018 40

Group by … having …• zum Gruppieren nach Spaltenwerte mit

Bedingung an die Gruppe!PLZ ORT STRASSE_NR

30419 Hannover Schaumburgstr. 2

30419 Hannover Quetlinburger Weg 12

37308 Schirmberg Bergstraße 1

37308 Bodenrode Hauptstraße 12

37308 Geismar Bergstraße 1

35279 Neustadt Gartenstraße 7

53577 Neustadt Gartenstraße 7

Wie viele Eintragungen gibt es pro Kombination aus PLZ und ORT,beschränkt auf die Gruppen mit mindestens 2 Einträgen?

select PLZ, Ort, count(*) from Adresse group by PLZ, Ort having count(*) >= 2;

PLZ ORT count(*)

30419 Hannover 2

Dr. Karsten Tolle – PRG2 – SS 2018 41

Funktionen …

Wie viele Arbeitslose gibt es pro Bundesland?-- Summe aller AL pro Bundeslandselect name, sum(arbeitslose) as 'Anzahl der Arbeitslosen' from bundeslaender b, gemeindedaten g where b.ags = substring(g.ags from 1 for 2)group by b.ags;

gemeindedaten bundeslaender

MySQL Funktion: SUBSTRING(<attribut> FROM <start> FOR <anzahl>)SUBSTRING(AGS FROM 1 FOR 2) liefert die ersten beiden Zeichen