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