Teil 2 -

Werbung
Teil 2
7. Vorlesung
Modul: Programmierung B-PRG
Grundlagen der Programmierung II
Professur für Datenbanken und Informationssysteme
Dr. Karsten Tolle
[email protected]
1
seit
Person
AusweisNr.
(u:v)
lebt_in
Ort
PLZ
Name Vorname
Abhängig von u, v, w und x
PERSON (AusweisNr., Name, Vorname)
ORT
(PLZ, Ortsname)
LEBT_IN
(AusweisNr., PLZ, seit)
Ortsname
PERSON (AusweisNr., Name, Vorname)
ORT
(PLZ, Ortsname)
LEBT_IN
(AusweisNr., PLZ, seit)
PERSON (AusweisNr., Name, Vorname)
PERSON (AusweisNr., Name, Vorname)
ORT
(w:x)
ORT
(PLZ, Ortsname)
LEBT_IN
(AusweisNr., PLZ, seit)
(PLZ, Ortsname, AusweisNr., seit)
PERSON (AusweisNr., Name, Vorname, PLZ, seit)
ORT
(PLZ, Ortsname)
…
KFZ-Kennzeichen
PERSON_ORT
(AusweisNr., Name, Vorname, PLZ, Ortsname, seit)
PERSON_ORT
(AusweisNr., Name, Vorname, PLZ, Ortsname, seit)
PERSON_ORT
2
(AusweisNr., Name, Vorname, PLZ, Ortsname, seit)
Grundlagen der Programmierung II
(3:5)
Auto
Hersteller
hat_Räder
(0:1)
Rad
Fabr.-Nr.
Breite
Generalisierung ER
rel. Modell
Möglichkeit 1:
KONTO (Kto.Nr., Kunde, Kto.Stand)
GIROKONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen)
SPARKONTO (Kto.Nr., Kunde, Kto.Stand, Zinssatz)
Kto.-Nr.
Kunde
Kto.Stand
Möglichkeit 2:
KONTO (Kto.Nr., Kunde, Kto.Stand)
GIROKONTO (Kto.Nr., Kreditrahmen)
SPARKONTO (Kto.Nr., Zinssatz)
Konto
Girokonto
Kreditrahmen
Sparkonto
Zinssatz
Möglichkeit 3:
KONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen, Zinssatz)
3
Grundlagen der Programmierung II
DBIS - SS2011
Normalisierung …
ID
HERSTELLER
ZUGEL_GES_GEW
FÜHRERSCHEIN
1
VW
bis 3.5
B
2
MB
bis 7.5
C1
3
MB
bis 8.5
C
4
MAN
bis 12
C
5
MB
bis 12
C
6
VW
bis 12
C
…
…
…
F = { ID
R,
ZUGEL_GES_GEW
FÜHRERSCHEIN}
ID
HERSTELLER
ZUGEL_GES_GEW
ZUGEL_GES_GEW
FÜHRERSCHEIN
1
VW
bis 3.5
bis 3.5
B
2
MB
bis 7.5
bis 7.5
C1
3
MB
bis 8.5
bis 8.5
C
4
MAN
bis 12
bis 12
C
5
MB
bis 12
bis 12
C
6
VW
bis 12
bis 12
C
…
…
…
…
4
Grundlagen der Programmierung II
DBIS - SS2011
rel. Modell
ER ????
Gegeben
R (A, B, C)
S (D, E)
T (B, D, F)
U (A, G)
…
5
Was ist Entity-Typ, was Beziehungstyp?
Bilden S und U zusammen ein Entity-Typ?
Sind R.B und T.B überhaupt GLEICH?
R und U könnten eine Generalisierung darstellen…
????
Grundlagen der Programmierung II
DBIS - SS2011
OO (ER) und rel. Modell
Als „Object-relational Impedance Mismatch“
(auch objekt-relationale Unverträglichkeit
genannt) bezeichnet man die Unverträglichkeit
zwischen dem relationalem Datenmodell und
dem objektorientieren Programmierparadigma.
Unverträglichkeit bedeutet, dass die Abbildungen
von dem einen ins andere Modell (und zurück)
nicht eindeutig ohne Zusatzwissen möglich ist.
6
Grundlagen der Programmierung II
DBIS - SS2011
(Fast) Alle Wege führen nach Rom ….
Prüfe die Anforderungen und denke an die Zukunft!
DBIS - SS2011
Prinzipien des digitalen Speicherns I
Ein Datensatz sollte offensichtlich/eindeutig und
schnell mit dem Objekt, welches es repräsentiert,
in Verbindung gebracht werden können.
ISBN
TITLE
3-12-517154-7
…
ISBN Number
DBIS - SS2011
Prinzipien des digitalen Speicherns II
Atomisierung der Daten – teile die Daten in ihre
kleinste Einheit auf
1. Normalform
ISBN
AUTHORS
0-13-221211-0
Jeffrey Hoffer,
Mary Prescott and
Fred McFadden
TITLE
…
…
ISBN
0-13-221211-0
…
TITLE
…
ISBN
AUTHORS
0-13-221211-0
Jeffrey Hoffer
0-13-221211-0
Mary Prescott
0-13-221211-0
Fred McFadden
DBIS - SS2011
Prinzipien des digitalen Speicherns III
… ein weiteres Beispiel (aus der Realität).
…
RULER
…
…
Hadrian (Sabina)
…
Bedeutet: Hadrian war der Prägeherr und
prägte die Münze für (zu ehren von) Sabina.
…
RULER
COINED_FOR
Hadrian
Sabina
…
…
DBIS - SS2011
Prinzipien des digitalen Speicherns IV
Handhabung unsicherer Informationen:
…
RULER
…
…
Hadrian?
…
?Nero
Nero
Bedeutung: … nicht wirklich sicher / abgeleitet
aus anderen Informationen.
…
…
RULER
QUALIFICATION
Hadrian
uncertain
Nero
inferred
Nero
certain
…
DBIS - SS2011
Prinzipien des digitalen Speicherns V
• Vermeidung underschiedlicher Namen für gleiche Dinge,
z.B.:
Gaius Julius Caesar Octavianus = Gaius Octavius = Caesar Augustus
(63 BCE - 14 CE) = Augustus (27 BC – 14 AD)
• Konsistenz auch in der Namensgebung für Tabellen und
Attribute.
coinlist
metal_information
ID
…
CODE
…
better
coin_list
metal_information
ID
…
ID
…
DBIS - SS2011
CPU – z.B. AMD Geode 1750NX 1400 MHz
Hersteller AMD
Bezeichnung Athlon XP 1750+ Geode
Taktfrequenz 1400 MHz
Level 1 Cache 128 KB
Level 2 Cache 256 KB
Bustakt 266 MHz
RAM – z.B. 1GB G-Skill PC3200/400 CL 3
Speichergeschwindigkeit 400 MHz ( PC3200 )
Festplatte – z.B. WD 1TB SATA 3 8,9cm (3,5")
Spindelgeschwindigkeit 7200 rpm
Datenübertragungsrate 600 MBps
Cache-Größe 32 MB
Durchschnittliche Latenzzeit 4,20 ms (Nennwert)
DBIS - SS2011
http://de.wikipedia.org/wiki/Solid_State_Drive
(alte Tabelle von 2010)
DBIS - SS2011
Vergleich von Nano- vs Millisekunde
1 Nanosekunde (ns) = 1000 Pikosekunden = 0,000 000 001 Sekunden
1 Mikrosekunde (μs) = 1000 Nanosekunden = 0,000 001 Sekunden
1 Millisekunde (ms) = 1000 Mikrosekunden = 0,001 Sekunden
In einer Nanosekunde (10-9 s) legt das Licht die Strecke von etwa 30 cm
zurück.
In einer Mikrosekunde also 1000 * 30 cm
In einer Millisekunde also 1000 * 300 m
30.000 cm = 300 m.
300.000 m = 300 km.
DBIS - SS2011
Vergleich von Nano- vs Millisekunde (2)
1 Nanosekunde (ns) = 1000 Pikosekunden (ps) = 0,000 000 001 Sekunden
1 Mikrosekunde (μs) = 1000 Nanosekunden = 0,000 001 Sekunden
1 Millisekunde (ms) = 1000 Mikrosekunden = 0,001 Sekunden
333 ps (3,33 · 10-10) – Taktzeit für einen Prozessor mit 3 GHz Taktfrequenz
1 ns ~ 3 Takte
1 ms ~ 1000 * 1000 * 3 Takte = 3.000.000 Takte = 3 Millionen Takte
20 ns ~ 60 Takte (mittlere Zugriffszeit für den Arbeitsspeicher RAM)
3,5 ms ~ 10,5 Millionen Takte (mittlere Zugriffszeit für die Festplatte)
Für Datenbanksysteme ist meist die
Anzahl der Blockzugriffe entscheidend.
DBIS - SS2011
Beispiel aus der Praxis
Tabelle ‘myTable’ mit:
Attributen: a, b und c
1.000.000 Einträgen
Index auf Attribut ‘a’
Anfrage:
SELECT a,b,c FROM myTable
WHERE a > 19850
Ausführungszeit lag bei 10 Minuten!
DBIS - SS2011
Beispiel aus der Praxis
In einem Beispiel waren ca. 50% der Einträge unter
Attribut ‘a’ mit dem Wert 19870 belegt.
Nutzung des Index nicht sinnvoll?
In Oracle können Hints in SQL Anfragen eingebaut
werden:
SELECT /*+ full(myTable)*/ a, b, c FROM myTable
WHERE a > 19850
Ausführungszeit ohne Index ~15sec
DBIS - SS2011
Zugriff auf RDBMS aus Java mit JDBC
1.
JDBC Treiber für DBMS in Classpath aufnehmen, Beispiel:
set JDBC_Driver="C:\MySQL\mysql-connector-java-3.1.6-bin.jar"
java –classpath %JDBC_Driver% MyAnwendung
2.
Treiber im Program laden und aktivieren, Beispiel:
try {
Class.forName(jdbcdriver);
} catch (Exception e) {}
3.
Verbindung herstellen, Beispiel:
try {
Connection con =
DriverManager.getConnection(dburl, username, passwd);
} catch (Exception e) {}
DBIS - SS2011
Zugriff auf RDBMS aus Java mit JDBC
4.
SQL Statement (Objekt) erzeugen
Statement stmt = con.createStatement();
5.
SQL Anfrage erzeugen und an DBS schicken:
ResultSet rs = stmt.executeQuery(“select * from myTable”);
6.
Mit dem Ergebnis arbeiten:
while (rs.next()) {
String name = rs.getString(“Name”);
System.out.println(“Name = “+name);
}
DBIS - SS2011
Klausur Samstag 23. Juli
• Anmeldung online (über PRG2-Seite) bis Heute 13.07.
• Ort: Hörsaal H II, H V oder H VI siehe PRG2-Seite
• Zeit: ab 09:00 Uhr da sein
• Studentenausweis mitbringen
• keine Hilfsmittel (kein Skript, kein Handy, …)
• kein Bleistift und keine roten Stifte
21
Grundlagen der Programmierung II
DBIS - SS2011
Herunterladen