Daten Bank 5. Vorlesung Dr. Karsten Tolle PRG2 SS 2012
4. Vorlesung SQL und SQL aus Programmen heraus (embedded und CLI) 1. Normalform Funktionale Abhängigkeiten und Schlüsselkandidaten Dr. Karsten Tolle PRG2 SS 2012 2
vorrat (Teil Lager Menge Lageradresse) 1 101 1 25 Waag. 10 102 3 410 Krugerstr. 42 102 1 300 Waag. 10 112 4 10 Brunnerstr. 105 Probleme: Redundanz Einfüge-Anomalie Lösch-Anomalie Lageradresse für jedes Teil im Lager redundant gespeichert Kein Lager ohne Teil einfügbar Lager ohne Teile würden gelöscht werden Dr. Karsten Tolle PRG2 SS 2012 3
vorrat (Teil Lager Menge Lageradresse) 101 1 25 Waag. 10 102 3 410 Krugerstr. 42 102 1 300 Waag. 10 112 4 10 Brunnerstr. 105 F = { Teil Lager Menge Lageradresse Lager Lageradresse } Fremdschlüssel Lösung: Zerlegung der Relation vorrat (Teil Lager Menge) 101 1 25 102 3 410 102 1 300 112 4 10 lager (Lager Lageradresse) 1 Waag. 10 2 RMS 10 3 Krugerstr. 42 4 Brunnerstr. 105 Dr. Karsten Tolle PRG2 SS 2012 4
Prim Ein Attribut A heißt primin R, wenn es in einem Schlüssel von R enthalten ist, sonst heiße es nicht prim. A ist prim X: X ist Schlüssel, A X Dr. Karsten Tolle PRG2 SS 2012 5
volle funktionale Abhängigkeit Eine funktionale Abhängigkeit X Y heißt volle funktionale Abhängigkeit, wenn für keine Teilmenge X X, X Y gilt. Y heißt dann voll funktional abhängig von X. X Y voll funktional X X : X Y Dr. Karsten Tolle PRG2 SS 2012 6
2. Normalform Ein RelationenschemaR ist in 2. Normalform (2NF), wenn es in 1NF ist und jedes nicht prime Attribut voll funktional von jedem Schlüssel von R abhängig ist. 2. NF A nicht prim Schlüssel A voll funktional Die 2. NFist verletzt, wenn ein Teil eines Schlüssels ein Nicht-Schlüsselattribut funktional bestimmt. Dr. Karsten Tolle PRG2 SS 2012 7
Beispiel 1 vorrat (Teil Lager Menge Lageradresse) F = { Teil Lager Menge Lageradresse Lager Lageradresse } 101 1 25 Waag. 10 102 3 410 Krugerstr. 42 102 1 300 Waag. 10 112 4 10 Brunnerstr. 105 vorrat (Teil Lager Menge lager (Lager Lageradresse) 101 1 25 1 Waag. 10 102 3 410 3 Krugerstr. 42 102 1 300 4 Brunnerstr. 105 112 4 10 Dr. Karsten Tolle PRG2 SS 2012 8
Beispiel 2 R = ABCD F = {AB CD, B D} B D verletzt 2. NF Zerlegung in: R1 = (ABC) mit F1 = {AB C} R2 = (BD) mit F2 = {B D} Dr. Karsten Tolle PRG2 SS 2012 9
Vorgehen beim Prüfen auf NF (WICHTIG!!!) Ausgangspunkt: Relation R (mind. 1. NF) und Menge der FDs gegeben. 1. Welche Schlüssel gibt es? was sind die nicht primen Attribute! 2. Prüfe auf 2. NF (voll funktional abhängig von ALLEN Schlüsseln?) Dr. Karsten Tolle PRG2 SS 2012 10
Fahrzeug ID Hersteller Zugel_Ges_Gew Führerschein 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} Dr. Karsten Tolle PRG2 SS 2012 11
Trotzdem Probleme! 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 Dr. Karsten Tolle PRG2 SS 2012 12
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 1 VW bis 3.5 2 MB bis 7.5 3 MB bis 8.5 4 MAN bis 12 5 MB bis 12 6 VW bis 12 ZUGEL_GES_GEW bis 3.5 bis 7.5 bis 8.5 bis 12 bis 12 bis 12 FÜHRERSCHEIN B C1 C C C C Dr. Karsten Tolle PRG2 SS 2012 13
Normalformen Über die Normalformen(NF) werden Kriterien definiert, um Redundanzen und Anomalien zu verhindern. Es gibt: 1 NF 2 NF 3 NF BCNF 4 NF 5 NF 6 NF 1 NF 2 NF 3 NF Dr. Karsten Tolle PRG2 SS 2012 14
Normalisierung/ Denormalisierung Normalisierung:Der Prozess des Aufspaltens von Relationen, um Anomalien/Redundanzen zu verhindern. Denormalisierung: Der Prozess des Zusammenlegens von Relationen, um Performanz zu gewinnen. Dr. Karsten Tolle PRG2 SS 2012 15
seit Person (u:v) (w:x) lebt_in Ort AusweisNr. Name Vorname PLZ Ortsname Abhängig von u, v, w und x PERSON (AusweisNr., Name, Vorname) ORT (PLZ, Ortsname) LEBT_IN (AusweisNr., PLZ, seit) PERSON (AusweisNr., Name, Vorname) ORT(PLZ, Ortsname, AusweisNr., seit) PERSON (AusweisNr., Name, Vorname) ORT(PLZ, Ortsname) LEBT_IN (AusweisNr., PLZ, seit) PERSON (AusweisNr., Name, Vorname) ORT(PLZ, Ortsname) LEBT_IN (AusweisNr., PLZ, seit) PERSON (AusweisNr., Name, Vorname, PLZ, seit) Auto (3:5) (0:1) hat_räder Rad ORT(PLZ, Ortsname) KFZ-Kennzeichen Hersteller Fabr.-Nr. Breite PERSON_ORT (AusweisNr., Name, Vorname, PLZ, Ortsname, seit) PERSON_ORT (AusweisNr., Name, Vorname, PLZ, Ortsname, seit) Dr. Karsten Tolle PRG2 SS 2012 16
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) Girokonto Kreditrahmen Kto.-Nr. Kunde Kto.Stand Konto Sparkonto Zinssatz Möglichkeit 2: KONTO (Kto.Nr., Kunde, Kto.Stand) GIROKONTO (Kto.Nr., Kreditrahmen) SPARKONTO (Kto.Nr., Zinssatz) Möglichkeit 3: KONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen, Zinssatz) Dr. Karsten Tolle PRG2 SS 2012 17
rel. Modell ER???? Gegeben R(A, B, C) S (D, E) T (B, D, F) U (A, G) 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???? Dr. Karsten Tolle PRG2 SS 2012 18
Tabellen Ansicht ER-Modell Dr. Karsten Tolle PRG2 SS 2012 19
OO (ER) und rel. Modell Als Object-relational ImpedanceMismatch (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. Dr. Karsten Tolle PRG2 SS 2012 20
(Fast) AlleWegeführennachRom. Prüfe die Anforderungen und denke an die Zukunft! Dr. Karsten Tolle PRG2 SS 2012 21
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 3-12-517154-7 TITLE ISBN Number Dr. Karsten Tolle PRG2 SS 2012 22
Prinzipien des digitalen Speicherns II Atomisierung der Daten teiledie Datenin ihre kleinste Einheit auf 1. Normalform ISBN AUTHORS TITLE 0-13-221211-0 Jeffrey Hoffer, Mary Prescott andfred McFadden ISBN TITLE 0-13-221211-0 ISBN AUTHORS 0-13-221211-0 Jeffrey Hoffer 0-13-221211-0 Mary Prescott 0-13-221211-0 Fred McFadden Dr. Karsten Tolle PRG2 SS 2012 23
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 Dr. Karsten Tolle PRG2 SS 2012 24
Prinzipien des digitalen Speicherns IV HandhabungunsichererInformationen: RULER Hadrian??Nero Nero Bedeutung: nicht wirklich sicher/ abgeleitet aus anderen Informationen. RULER QUALIFICATION Hadrian uncertain Nero inferred Nero certain Dr. Karsten Tolle PRG2 SS 2012 25
Prinzipien des digitalen Speicherns V Konsistenzin der NamensgebungfürTabellenund Attribute. coinlist metal_information ID CODE besser coin_list metal_information ID ID Dr. Karsten Tolle PRG2 SS 2012 26
Prinzipien des digitalen Speicherns VI Ausnutzung der referenziellen Integrität wo immer möglich! Dr. Karsten Tolle PRG2 SS 2012 27
Sicherheit Jahr für Jahr kosten Datenpannen Firmen mehr Geld. Quelle: Symantec
Datenlecks zum Stöbern http://www.projekt-datenschutz.de/ http://opalkatze.wordpress.com/to-becontinue/datenpannen/datenpannen-2012/ http://www.datenleck.net/ Dr. Karsten Tolle PRG2 SS 2012 29
3-Schicht Architektur Sicherheit Bild vom BSI IT-Grundschutz-Katalog: https://www.bsi.bund.de/contentbsi/grundschutz/kataloge/baust/b05/b05007.html Dr. Karsten Tolle PRG2 SS 2012 30
Benutzer und Rechte CREATE USER testidentified BY PASSWORD li720lhjlj2' erzeugt einen neuen Benutzer GRANT selecton star_trek.* TO test weist dem Benutzer test die select Rechte für alle Tabellen der DB star_trek zu REVOKE selecton star_trek.* fromtest nimmt ihm die Rechte wieder Siehe auch: http://dev.mysql.com/doc/refman/5.1/de/grant.html Dr. Karsten Tolle PRG2 SS 2012 31
Grant und Revoke Dr. Karsten Tolle PRG2 SS 2012 32
Nutzung von Views Mitarbeiter Empno Vorname Nachname Gehalt 1 Ines Müller 75000 2 Fred Wagner 60000 3 Ingo Meyer 72000 4 Max Müller 26000 Jemand der die Vor-und Nachnamen der Mitarbeiter benötigt, würde z.b. die Select- Rechte an der Tabelle Mitarbeiter erhalten und so auch die Gehälter erfahren Dr. Karsten Tolle PRG2 SS 2012 33
Nutzung von Views Mitarbeiter Empno Vorname Nachname Gehalt 1 Ines Müller 75000 2 Fred Wagner 60000 3 Ingo Meyer 72000 4 Max Müller 26000 CREATE VIEW Mitarbeiter_Namen AS select Vorname, Nachname from Mitarbeiter; Vorname Ines Fred Ingo Max Nachname Müller Wagner Meyer Müller Dr. Karsten Tolle PRG2 SS 2012 34
Mitarbeiter Empno Vorname Nachname Gehalt 1 Ines Müller 75000 2 Fred Wagner 60000 3 Ingo Meyer 72000 4 Max Müller 26000 CREATE VIEW Mitarbeiter_Dept AS select m.empno, m.nachname, d.name as Abt from Mitarbeiter m, Abteilung d, Arbeitet_in a where m.empno = a.empno and a.depno = d.depno; Mitarbeiter_Dept Empno Nachname Abt Abteilung Depno Name Head 1 Finanzen 2 2 Einkauf 1 3 HR 1 Arbeitet_in Empno Depno 1 2 1 3 2 1 3 3 4 2 Mitarbeiter_Dept 1 Müller Einkauf 1 Müller HR 2 Wagner Finanzen 3 Meyer HR Dr. Karsten Tolle PRG2 4 SS 2012 Müller Einkauf 35
Absichern am Bsp. MySQL keine Standard Benutzer z.b. root mysql> RENAME USER root TO new_user; show databases nicht unterstützen Netzwerkzugang nur erlauben, wenn nötig Firewall installieren Siehe auch: http://dev.mysql.com/doc/refman/5.1/en/general-security-issues.html Dr. Karsten Tolle PRG2 SS 2012 36
SQL Injection (böswilliges) Einschleusen oder Verändern von SQL-Befehlen an die Datenbank durch den Benutzer.
Web Related Vulnerabilities 2011 (commercial applications) Dr. Karsten Tolle PRG2 SS 2012 38 Application Security Trends Report März 2012 - CENZIC
Mögliche Gefahren Zusätzliche Bedingungen einzufügen: Eingabe: 1 or id > 1 or name like % select * from mytable where id = 1 or id > 1 or name like %?? Daten der Tabelle können ausgespäht werden. Dr. Karsten Tolle PRG2 SS 2012 39
Mögliche Gefahren Zusätzliche Statements einzufügen: Eingabe: 1; drop mytable # select * from mytable where id = 1; drop mytable #?? Direkter Schaden an der Datenbank, eventuell Ausfall der Applikation. Dr. Karsten Tolle PRG2 SS 2012 40
Was möglich ist hängt ab von DBMS Erlaubt es mehrere SQL-Statements gleichzeitig auszuführen? Welche Zeichen werden als Kommentare interpretiert? (z.b.: --oder #) Verbindungsart / Programmiersprache JDBC, ODBC,??? Dr. Karsten Tolle PRG2 SS 2012 41
Gegenmaßnahmen DB-Verbindung nur mit den Rechten, die nötig sind aufbauen! (siehe GRANT und REVOKE) Nutzungvon Prepared Statements (in Java) Nutzung von statischem SQL, z.b. SQLJ Möglichst wenig Informationen über die Datenbank nach außen geben! z.b. bei Fehlermeldungen Eingaben auf Sonderzeichen und ungültige Werte prüfen(möglichstzurückweisen!) Anwendungdiesbezüglichtesten(testenlassen) Dr. Karsten Tolle PRG2 SS 2012 42
GegenmaßnahmenPHP Positivlisten Methode wurde eingegeben was man erwartet? Negativlisten Methode Ablehnung von Schlüsselwörtern Gegebene Funktion in PHP: mysql_real_escape_string() Sie Maskiert alle Zeichen mit denen man aus den Anführungszeichen ausbrechen kann. Kombination aller 3 ist die sicherste Variante. Siehe auch: http://www.inside-php.de/tutorial/php-sicherheit-13/sql-injections-vermeiden.html http://php.net/manual/en/security.database.sql-injection.php Dr. Karsten Tolle PRG2 SS 2012 43
Literaturhinweise Handling Java Web Application Input, Part 1 von Stephen Enright http://today.java.net/pub/a/today/2005/09/08/handling-java-web-app-input.html Advanced SQL Injection In SQL Server Applications von Chris Anley http://www.cgisecurity.com/lib/advanced_sql_injection.pdf (more) http://www.encription.co.uk/downloads/more_advanced_sql_injection.pdf Dr. Karsten Tolle PRG2 SS 2012 44