Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Dr. Karsten Tolle – PRG2 – SS 2017 1
Repetitorium:
• Wer: Tung Le Trong
• Wann: 21.7.2017 (Freitag)
• Genauer wann …: von 10-18 Uhr
• Wo: H IV
Dr. Karsten Tolle – PRG2 – SS 2017 2
Klausuranmeldung bis 17. Juli
• Anmeldung online über QIS/LFS (Details unter: http://go.uni-frankfurt.de) für Studierende der:– Informatik, Bioinformatik, Physik
– Mathematik, Geographie
• Lehramt - bitte eine kurze eMail an: [email protected]
• Alle anderen (Linguistik, …) :– Anmeldung per Zettel (PDF auf PRG2-Seite)!
… im Briefkasten des Prüfungsamtes Informatik einwerfen (Robert-Mayer-Str. 11-15 – Erdgeschoss)
Daten – Bank
4. Vorlesung
Dr. Karsten Tolle – PRG2 – SS 2017 4
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 2017 5
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
Datenaustauschformate
Dr. Karsten Tolle – PRG2 – SS 2017 6
Daten(austausch)formate
• … wie speichere ich Daten in eine Datei, um diese zwischen Systemen auszutauschen?
Dr. Karsten Tolle – PRG2 – SS 2017 7
CSV (Comma Separated Values)
CSV-Dateien dienen zum Speichern/Austausch einer Tabellen oder einer Liste unterschiedlich langer Listen.
id,vorname,nachname,telefon1,Max,Mustermann,938479283472,Peter,Mustermann,92378409238473,Miss,Mustermann,9832488
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 2017 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 2017 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 2017 11
Tools … ?
• MySQL Workbench
• Heidi SQL
• OpenRefine (Google)
• …
Dr. Karsten Tolle – PRG2 – SS 2017 12
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 2017 13
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 2017 14
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 2017 15
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 2017 16
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 2017 17
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
Dr. Karsten Tolle – PRG2 – SS 2017 18
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 2017 19Mitarbeiter_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 2017 20
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 2017 21
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 2017 22
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 2017 23
Diskutieren
Dr. Karsten Tolle – PRG2 – SS 2017 24
Nachteile nicht 1. NF
• Finden wird erschwert bis unmöglich
• Sortierungen werden sinnlos bis unmöglich
Dr. Karsten Tolle – PRG2 – SS 2017 25
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 2017 26
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 2017 27
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 2017 28
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 2017 29
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 2017 30
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 2017 31
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 2017 32
Axiome von Armstrong
1. β ⊆ α ⇛ 𝛼 → 𝛽 (Reflexivität)
2. 𝛼 → 𝛽 ⇛ 𝛼𝛾 → 𝛽𝛾 (Erweiterungsregel)
3. 𝛼 → 𝛽 ∧ 𝛽 → 𝛾 ⇛ 𝛼 → 𝛾 (Transitivität)
Dr. Karsten Tolle – PRG2 – SS 2017 33
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 2017 34
Ü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 2017 35
Ü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 2017 37
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 2017 38
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 2017 39
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 2017 40
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 2017 41
Ü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}