Datenbanken Unit 11: Erstellen u. Ändern von Datenbanken und

Werbung
Organisatorisches
SQL
Normalisierung
Datenbanken Unit 11:
Erstellen u. Ändern von Datenbanken und Tabellen
Verbindung von Java auf Datenbanken
Ronald Ortner
13. VI. 2017
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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)
Ronald Ortner
Organisatorisches
SQL
SQL
Fragen zum Abschlusstest?
Erstellen und Ändern von Datenbanken und Tabellen
Verbindung von Java auf Datenbanken
SQL Injections
Prepared Statements
Ronald Ortner
Normalisierung
Organisatorisches
SQL
Normalisierung
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
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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.
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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.)
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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
Ronald Ortner
Organisatorisches
SQL
Normalisierung
PL/SQL
Prozeduren in SQL:
Neben einzelnen Abfragen lassen sich in SQL auch Prozeduren
schreiben.
z.B. bieten PL/SQL (Oracle) oder MySQL Prozeduren u.a.:
Verzweigungen
Schleifen
Rückgabewert
Einbetten von Abfragen in den Code
Cursor -Schleifen über die Zeilen der Ergebnistabelle einer
Abfrage
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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.
Ronald Ortner
Organisatorisches
SQL
Normalisierung
Normalisierung: Tickets für Konzerte
Manchmal bekommt man kein gutes Schema, wenn man die
Normalformen der Reihe nach durchgeht.
Beispiel:
Ticket_no∗
.
.
.
Concert_no
.
.
.
Es gibt folgende FDs und MVDs:
Ticket_no → Concert_no
Ticket_no →→ Band
Concert_no →→ Band
Ronald Ortner
Band∗
.
.
.
Organisatorisches
SQL
Normalisierung
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.
Ronald Ortner
Organisatorisches
SQL
Normalisierung
Verallgemeinerter Dekompositionsalgorithmus für 4NF
Gegeben: Relation R, Menge F von MVDs
Wir wollen: Zerlegung R1 , . . . , Rn in 4NF
Verallgemeinerter Dekompositionsalgorithmus:
Initialisiere Z := {R};
while (es gibt Ri in Z , das nicht in 4NF) do
1
Finde MVD α →→ β in Ri mit α ∩ β = ∅ und α 6→ Ri .
2
Zerlege Ri in Ri1 := α ∪ β und Ri2 := Ri − β.
3
Ersetze Ri in Z durch Ri1 und Ri2 , d.h.
Z := (Z − {Ri }) ∪ {Ri1 , Ri2 }.
(Nachdem jede Relation in 4NF auch in BCNF ist, gibt es Fälle, wo
eine 4NF Zerlegung nicht abhängigkeitserhaltend ist.)
Ronald Ortner
Organisatorisches
SQL
Normalisierung
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!)
Ronald Ortner
Herunterladen