Datenbanken Unit 11: Erstellen u Ändern von Datenbanken und Tabellen Verbindung von Java auf Datenbanken 13 VI 2017
Organisatorisches morgen Abschlusstest UE (Gruppe 1: 14:45 16:00, Gruppe 2: 16:00 17:15 ) Nächste Woche am 21 Juni finden beide Übungsgruppen gleichzeitig statt (16 17:30 Uhr im RWZ HS): Besprechung weiterer Normalisierungsbeispiele VO-Abschlussprüfung am 28 Juni, 10 12 Uhr im Zeichensaal (Anmeldung über MU Online) alte Prüfung online Nächste Woche letzte VO: - NoSQL-Einführung (Florian Heber) - XML-Einführung (Martin Antenreiter)
SQL Fragen zum Abschlusstest? Erstellen und Ändern von Datenbanken und Tabellen Verbindung von Java auf Datenbanken SQL Injections Prepared Statements
Indexstrukturen auf Datenbanken Sucht man in Tabelle Zeilen mit bestimmtem Wert in Spalte, muss man sich im schlimmsten Fall alle Zeilen ansehen Indexstrukturen auf Tabellen helfen durch Vorsortierung, sodass Abfragen schneller ausgeführt werden können Verschiedene Indexstrukturen: Index Sequential Access Method (ISAM) B-Bäume B + -Bäume Hashing Bitmap Indizes
Indexstrukturen auf Datenbanken Verschiedene Indexstrukturen: Index Sequential Access Method (ISAM) B-Bäume B + -Bäume Hashing Bitmap Indizes Der Performancegewinn von Abfragen sowie der Performanceverlust von Änderungen hängen von der verwendeten Indexstruktur ab In SQL hat man entsprechend je nach verwendeter Variante die Wahl zwischen verschiedenen Indextypen
Index Sequential Access Method (ISAM) Lineares Durchsuchen aller Daten ist ineffizient ISAM legt zunächst für jeden Datensatz einen eindeutigen Schlüssel fest Anschließend werden einige Schlüsselwerte für den Index festgelegt Sowohl Index als auch Daten sind jeweils bzgl des Index sortiert Damit muss bei Suchen eines Datensatzes zunächst nur der Index durchsucht werden (Für Details zu anderen Indexstrukturen siehe die Folien von Alois Kemper)
Java Persistence API Alternative für Java-SQL Verbindung: Java Persistence API: kann Objekte direkt in Datenbank schreiben Es gibt objektrelationale Metadaten für Beziehungen zwischen Tabellen (als Java Annotation bzw als xml Datei hinterlegt) in eigener Java Persistence Query Language (JPQL) kann auf Objekte abgefragt werden
PL/SQL Prozeduren in SQL: Neben einzelnen Abfragen lassen sich in SQL auch Prozeduren schreiben zb bieten PL/SQL (Oracle) oder MySQL Prozeduren ua: Verzweigungen Schleifen Rückgabewert Einbetten von Abfragen in den Code Cursor-Schleifen über die Zeilen der Ergebnistabelle einer Abfrage
Normalisierung: Weiteres Beispiel Entwerfen Sie eine Datenbank einer Ticketagentur für Pop-/Rock-Konzerte Für jedes Konzert sollen die spielenden Bands, das Datum und die Beginnzeit, das Land, die Stadt sowie der Veranstaltungsort gespeichert werden Weiters soll der Ticketpreis hinterlegt werden, wobei Sie davon ausgehen können, dass dieser für jedes Konzert einheitlich ist Für jeden Kunden sollen Name und Adresse gespeichert werden sowie wieviele Tickets für welches Konzert bestellt wurden
Normalisierung: Tickets für Konzerte Manchmal bekommt man kein gutes Schema, wenn man die Normalformen der Reihe nach durchgeht Beispiel: Ticket_no Concert_no Band Es gibt folgende FDs und MVDs: Ticket_no Concert_no Ticket_no Band Concert_no Band
Normalisierung: Tickets für Konzerte Manchmal bekommt man kein gutes Schema, wenn man die Normalformen der Reihe nach durchgeht Beispiel: Ticket_no Concert_no Band Es gibt folgende FDs und MVDs: Ticket_no Concert_no Ticket_no Band Concert_no Band Der Dekompositionsalgorithmus für 4NF auf die letzte MVD angewandt gibt ein gutes Datenbankschema
Verallgemeinerter Dekompositionsalgorithmus für 4NF Gegeben: Relation R, Menge F von MVDs Wir wollen: Zerlegung R 1,, R n in 4NF Verallgemeinerter Dekompositionsalgorithmus: Initialisiere Z := {R}; while (es gibt R i in Z, das nicht in 4NF) do 1 Finde MVD α β in R i mit α β = und α R i 2 Zerlege R i in R i1 := α β und R i2 := R i β 3 Ersetze R i in Z durch R i1 und R i2, dh Z := (Z {R i }) {R i1, R i2 } (Nachdem jede Relation in 4NF auch in BCNF ist, gibt es Fälle, wo eine 4NF Zerlegung nicht abhängigkeitserhaltend ist)
Normalisierung: Tickets für Konzerte Beispiel: Ticket_no Concert_no Band Es gibt folgende FDs und MVDs: Ticket_no Concert_no Ticket_no Band Concert_no Band Achtung: Wählt man eine andere FD/MVD für Zerlegung erhält man ein schlechteres Datenbankschema (Zur Erinnerung: 4NF ist nicht immer abhängigkeitserhaltend, sodass es einen Unterschied machen kann, welche FD für Zerlegung gewählt wird!)