Agenda für heute, 16. Dezember 2005 • Datenmodellierung • • • • Pause Datenbankentwurf Relationale Operatoren und SQL Sicherheit 2/37 Elemente der Datenverwaltung Wieso Datenmodellierung? Leute Daten Information Speicherkapazität + Rechenleistung Computer Datenverwaltung Programme Eine Beschreibung der Verarbeitung und Speicherung der Daten muss für Leute verständlich sein, sich aber auch für die Programmierung eignen! © Institut für Computational Science, ETH Zürich Verarbeitung + Speicherung 3/37 Algorithmen + Datenstrukturen © Institut für Computational Science, ETH Zürich Ein Modell wird konstruiert um das Verständnis über die Herkunft und Verwendung der Daten zu verbessern und um Details zu abstrahieren. Verständnis: Wie sollen die Daten gespeichert werden (Organisation) Abstrahieren: Welche Daten sollen gespeichert werden Bsp.: Bodenbeschaffenheit 4/37 © Institut für Computational Science, ETH Zürich Hilfsmittel für die Modellierung von Daten Methode Unterstützt Mind mapping Gedanken assoziativ spontan darstellen Concept Maps Wissen kontextabhängig organisieren und darstellen Entity-Relationship Modell Datenbankgerechte Darstellung von Objekten, deren Merkmale und Beziehungen zueinander 5/37 Mind mapping 6/37 © Institut für Computational Science, ETH Zürich Concept maps © Institut für Computational Science, ETH Zürich Entity-Relationship-Diagramm Beziehungstyp Name GrundNahrungsmittel Nährstoff Entitätsmenge 7/37 © Institut für Computational Science, ETH Zürich Mengen m 1 Name Rezept Komponenten Beziehung (Relationship) 8/37 m Verlust 1 Rezept Lebensmittel Nährstoff Entitätsmenge Merkmal (Attribut) © Institut für Computational Science, ETH Zürich E-R-Diagramm, Bsp. 2 Tabellarische Darstellung von Entitätsmengen Nahrungsmittel Name Datum Grundnahrungsmittel m 1 m Analyse Gruppe Quelle Name Person 1 Nährstoff Name Aprikose Bürli Paranuss CH-Code 18.1.2.1 12.1.2.Z.2 18.1.6.6 Protein 0.8g 8.618g 13g Wasser 86.79g 39.632g 5.929g 2.1g 3.983g 8.3g Kalium 315mg 159.927mg 680mg Kohlehydrate 12.1g 48.802g 11.8g Nahrungsfasern Methode Menge 0g 0g 0g Vitamin E Alkohol 0.7mg 0.411mg 7mg Eisen 0.4mg 2.032mg 3.1mg 7µg 22.97µg 12µg Folsäure Attribut Entität 9/37 Aufteilen von Entitätsmengen Name Aprikose Aprikose Aprikose Bürli Bürli Bürli CH-Code 18.1.2.1 18.1.2.1 18.1.2.1 12.1.2.Z.2 12.1.2.Z.2 12.1.2.Z.2 Menge 180 84 57 180 84 57 86.79 12.1 0.4 39.632 48.802 2.032 Nahrungsmittel NMittel_id 1000842 1001511 Name_d Aprikose Bürli Name_f Abricot Bürli Name_i Albicocca Bürli 18.1.2.1 12.1.2.Z.2 CH-Code Analyse m 1 m Nährstoffe 57 84 180 178 Name_d Eisen Kohlehydrate Wasser Vitamin K Name_f Fer Hydrate de carbon Eau Vitamine K Name_i Ferro Carboidrati Acqua Vitamina K Masseinheit mg g g mg Hauptkomp. ja ja ja nein 11/37 © Institut für Computational Science, ETH Zürich Nährstoffe Nährstoff_id Analyse_id 1 2 NMittel_id 1000842 1001511 Nährstoff_id Quelle Menge = Schlüssel Nährstoff_id © Institut für Computational Science, ETH Zürich Entitätsmengen und Beziehungen Nahrungsmittel Nährstoff_id 10/37 © Institut für Computational Science, ETH Zürich 180 84 CIQUAL Inst. f. LMW 86.79 48.802 Methode unbekannt Summenwert Person M. Racher S. Jacob 1 180 84 57 178 Name_d Wasser Kohlehydr. Eisen Vitamin K Name_f Eau Hydrate de carbon Fer Vitamine K Name_i Acqua Carboidrati Ferro Vitamina K Masseinheit g g mg mg Hauptkomp. ja ja ja nein 12/37 © Institut für Computational Science, ETH Zürich Modelle & Schemata • Datenmodellierung Modellierung der Daten aus der realen Welt • Datenbankentwurf • Relationale Operatoren und SQL • Sicherheit Entity-Relationship-Modell Konzeptionelles Schema Modellierung der Daten im Rechner Relationales Datenmodell 13/37 © Institut für Computational Science, ETH Zürich Grundlagen für den Datenbankentwurf © Institut für Computational Science, ETH Zürich Verschiedene Datenmodelle Selektive Abfrage Basisdaten Datenbank Konzeptionelles Schema Internes Schema • Datenstrukturen • Datentypen • Zugriffsmechanismen • Logische Gesamtstruktur • Eigenschaften der Daten • Beziehungen unter den Daten Datenmodell 14/37 Externes Schema • Anwendungsspezifische Sicht auf die Daten © Institut für Computational Science, ETH Zürich Hierarchisch z.B. UBS Netzwerk Relational z.B. SBB z.B. Nährwertdaten 15/37 Objektorientiert z.B. CAD © Institut für Computational Science, ETH Zürich Relationale Datenbanken Relationen aufteilen Nahrungsmittel • Tabellen in denen Einträge (Tupel) eingefügt, gelöscht oder geändert werden können (Mutationen). Name CH-Code Wasser Kohlehydrate Aprikose 18.1.2.1 86.79g 12.1g 0.4mg 0.8g 315mg ja Bürli 12.1.2.Z.2 39.632 39.632 2.032mg 8.618g 159.927mg ja • Mehrfache Speicherung von Werten (Redundanz) wird reduziert, indem Daten systematisch auf mehrere Tabellen (Relationen) aufgeteilt werden (Normalisieren). • Die ursprüngliche Information wird wieder hergestellt indem Daten aus den individuellen Tabellen mit relationalen Operatoren verknüpft werden. Grundlage dazu ist die relationale Algebra. Nahrungsmittel Name 16/37 Protein Kalium CH-Code 18.1.2.1 180 86.79 Aprikose 18.1.2.1 84 12.1 Aprikose 18.1.2.1 57 0.4 Bürli 12.1.2.Z.2 180 39.632 Bürli 12.1.2.Z.2 84 48.802 Bürli 12.1.2.Z.2 57 2.032 Name_f Hauptkomp. Nährstoff_id Menge Aprikose Nährstoffe Nährstoff_id Name_d Eisen Name_i Attribut Tupel Masseinh. Hauptkomp. 57 Eisen Fer Ferro mg ja 84 Kohlehydrate Hydrate de carbon Carboidrate g ja 180 Wasser Eau Acqua g ja © Institut für Computational Science, ETH Zürich © Institut für Computational Science, ETH Zürich 17/37 Relationen zusammenführen • Datenmodellierung • Datenbankentwurf Nahrungsmittel Name • Relationale Operatoren und SQL • Sicherheit CH-Code Nährstoff_id Menge Aprikose 18.1.2.1 180 86.79 Aprikose 18.1.2.1 84 12.1 Nährwerte Name Name_d Aprikose 18.1.2.1 57 0.4 Bürli Bürli 12.1.2.Z.2 180 39.632 Bürli Bürli 12.1.2.Z.2 84 48.802 Bürli 12.1.2.Z.2 57 2.032 Menge Wasser 39.632 Kohlehydrate 48.802 Nährstoffe Id_Nr 57 84 180 © Institut für Computational Science, ETH Zürich Name_d Eisen Name_f Name_i Fer Masseinh. Hauptkomp. Ferro Kohlehydrate Hydrate de carbon Carboidrate Wasser Eau Acqua 18/37 mg ja g ja g ja © Institut für Computational Science, ETH Zürich Relationale Operatoren Datenbanken abfragen Die drei wichtigsten Operatoren der relationalen Algebra für das Manipulieren von Tabellen sind: "In welchen Mengen kommen Kohlehydrate in der Datenbank vor?" a) Selection Wählt diejenigen Tupel einer Relation aus, welche bestimmte Bedingungen erfüllen. Natürlichsprachlich formulierte Frage Abfragesprache für Datenbanken z.B. SQL SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE b) Projection Wählt eine oder mehrere Spalten einer Relation aus. Nährstoff_id = 84 (Structured Query Language) Tabellarische Ausgabe (Relation) c) Join Paart selektiv Spalten aus verschiedenen Relationen. 19/37 Auswahl bestimmter Attribute mit dem Befehl SELECT (project) Attribut Name CH-Code © Institut für Computational Science, ETH Zürich Auswahl bestimmter Tupel mit dem Befehl SELECT SELECT * FROM Nahrungsmittel WHERE Menge < 15 Relation Nahrungsmittel SELECT CH-Code FROM Nahrungsmittel Nahrungsmittel 20/37 © Institut für Computational Science, ETH Zürich Nährstoff_id Menge Name CH-Code Nährstoff_id Menge Aprikose 18.1.2.1 Aprikose 18.1.2.1 84 12.1 Paranuss 18.1.6.6 180 5.929 180 86.79 Aprikose 18.1.2.1 180 86.79 Aprikose 18.1.2.1 84 12.1 Resultat: Bürli 12.1.2.Z.2 180 39.632 Paranuss 18.1.6.6 180 5.929 Bürli 12.1.2.Z.2 84 48.802 CH-Code Bürli 12.1.2.Z.2 180 39.632 Bürli 12.1.2.Z.2 57 2.032 18.1.2.1 Bürli 12.1.2.Z.2 84 48.802 18.1.2.1 Bürli 12.1.2.Z.2 57 2.032 21/37 18.1.6.6 Resultat: Name 12.1.2.Z.2 Aprikose 12.1.2.Z.2 12.1.2.Z.2 © Institut für Computational Science, ETH Zürich CH-Code Attributwert Nährstoff_id Menge 18.1.2.1 84 12.1 Paranuss 18.1.6.6 180 5.929 Bürli 12.1.2.Z.2 57 2.032 22/37 © Institut für Computational Science, ETH Zürich Select, project und join mit dem Befehl SELECT SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE Nährstoff_id = 84 Nahrungsmittel Name CH-Code Nährstoff_id Menge Aprikose 18.1.2.1 Aprikose 18.1.2.1 84 12.1 Paranuss 18.1.6.6 180 5.929 Bürli 12.1.2.Z.2 180 39.632 Bürli 12.1.2.Z.2 84 48.802 Bürli 12.1.2.Z.2 57 2.032 Nährstoff_id Menge Resultat: 180 84 12.1 84 48.802 86.79 Die drei relationalen Operatoren als SQL-Anweisung Mit der SELECT-Anweisung von SQL können alle drei relationalen Operatoren eingesetzt werden. Syntax der SELECT-Anweisung: SELECT [ALL | DISTINCT] Feld1[,Feld2] FROM Tabelle1[,Tabelle2] [WHERE "Bedingungen"] [GROUP BY "Felder-Liste"] [HAVING "Bedingungen"] [ORDER BY "Felder-Liste" [ASC | DESC]]; Hinweis: Die innerhalb eckiger Klammern [ ] angegebenen Klauseln sind optional. Soll das ganze Tupel ausgegeben werden (alle Spalten einer Tabelle) setzt man an Stelle von Spaltenbezeichnern ein * . Jede SQL-Anweisung muss mit einem Semikolon ; beendet werden. 23/37 24/37 © Institut für Computational Science, ETH Zürich Hinweis © Institut für Computational Science, ETH Zürich Relationen zusammenführen SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE Nährstoff_id = 84 SELECT Name, Name_d, Menge FROM NM, NS WHERE Name = Bürli AND Menge > 30 NM • Im Allgemeinen versteht man eine SELECT-FROM-WHERE Abfrage am schnellsten, indem man zuerst die FROM-Klausel betrachtet um zu sehen, welche Relationen involviert sind (Nahrungsmittel). • Anschliessend betrachtet man die WHERE-Klausel um zu sehen, welche Attribute eines Tupels für die Abfrage wichtig sind (Nährstoff_id). • Am Schluss sieht man der SELECT-Klausel an, was die Ausgabe ist (Nährstoff_id, Menge). Name NM.Name NS.Name_d NM.Menge 18.1.2.1 180 86.79 Aprikose 18.1.2.1 84 12.1 Bürli Wasser 39.632 Bürli Kohlehydrate 48.802 Aprikose 18.1.2.1 57 0.4 Bürli 12.1.2.Z.2 180 39.632 Bürli 12.1.2.Z.2 84 48.802 Bürli 12.1.2.Z.2 57 2.032 NS Id_Nr 57 180 © Institut für Computational Science, ETH Zürich Resultat: Nährstoff_id Menge Aprikose 84 25/37 CH-Code Name_d Eisen Name_f Name_i Fer Kohlehydrate Hydrate de carbon Wasser Masseinh. Hauptkomp. Ferro mg ja Carboidrate g ja Acqua g ja Eau 26/37 © Institut für Computational Science, ETH Zürich Funktionen in SQL SQL stellt verschiedene andere Operatoren zur Verfügung, so unter Anderem die folgenden fünf Aggregations-Operatoren : SUM Berechnet die Summe der numerischen Werte einer Spalte AVG Berechnet den Durchschnitt der Werte einer Spalte MIN Gibt den kleinsten Wert einer Spalte zurück MAX Gibt den grössten Wert einer Spalte zurück • Datenmodellierung • Datenbankentwurf • Relationale Operatoren und SQL • Sicherheit COUNT Gibt die Anzahl Zeilen einer Tabelle zurück 27/37 © Institut für Computational Science, ETH Zürich Statistische Datenbanken © Institut für Computational Science, ETH Zürich Statistische Datenbanken Datenbank-Verwaltungssysteme erlauben Zugriffe nur über sog. Transaktionsprogramme. Vertrauliche Daten Abfragen beschränkt auf statistische Operationen (Aggregationen): COUNT, SUM, MEAN, MIN, MAX Benutzerinnen und Benutzer greifen nicht selber auf Daten zu, sondern identifizieren bestimmte Datensätze mit einer sog. "charakteristischen Formel". Eine charakteristischen Formel C ist ein logischer Ausdruck, der Vergleichsoperatoren ( =, ≠, <, etc.) und logische Operatoren (AND, OR, NOT) enthält. Mit C lassen sich bestimmte Mengen von Datensätzen identifizieren. Beispiel C = "weiblich AND Professor OR (Gehalt ≥ CHF 80000)" 28/37 © Institut für Computational Science, ETH Zürich 29/37 © Institut für Computational Science, ETH Zürich Statistische Datenbanken Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 1 Mit einer charakteristischen Formel und Aggregations-Operatoren • Stehen statistische Daten zur Verfügung • Werden empfindliche Daten nicht preisgegeben Trotzdem kann es leicht sein, bestimmte vertrauliche Daten durch geeignete statistische Abfragen, die Rückschlüsse zulassen, herzuleiten! Frage: Wie viele Patienten haben folgende Eigenschaften? Männlich Alter 40 – 50 Verheiratet Zwei Kinder Lic.jur. Bank-Vizepräsident Antwort: 1 Wir wissen aber, dass Herr Schmied diese Eigenschaften hat und erhalten somit vertrauliche Informationen über Schmied mit der folgenden Abfrage. 30/37 © Institut für Computational Science, ETH Zürich Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 1 Frage: Wie viele Patienten haben folgende Eigenschaften? Männlich Alter 40 – 50 Verheiratet Zwei Kinder Lic.jur. Bank-Vizepräsident Nehmen Antidepressiva Die Abfrage wird mit "1" antworten, falls Schmied Antidepressiva genommen hat, sonst mit "0". 32/37 © Institut für Computational Science, ETH Zürich 31/37 © Institut für Computational Science, ETH Zürich Lassen sich solche Rückschlüsse verhindern? Einfaches Prinzip der "Blossstellung" • Eine Abfrage-Formel C, deren Antwortgrösse 1 ist. • Die Antwortgrösse der Abfrage C AND X. Verhinderung durch minimale Antwortgrösse: Antworte auf keine Abfrage, die weniger als k oder mehr als n-k Datensätze in der Antwort hat. n = totale Anzahl Datensätze in der Datenbank Diese Kontrolle ist leider nicht wirksam. 33/37 © Institut für Computational Science, ETH Zürich Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 2 Rückschlüsse mittels "Tracker" Geheime Wahlspenden Name Geschlecht Beruf Spende (CHF) Schamanski M Journalist 3000 Staub M Journalist 500 Bertolli M Unternehmer Ott W Journalist 5000 Zwahlen W Wissenschaftler 1000 Koller M Wissenschaftler 20000 Waser W Arzt 2000 Schmid M Anwalt 10000 1 n = 8; bei k =2: min. Antwortgrösse = 2, max. Antwortgrösse = 6 34/37 Angenommen, C = (Journalist AND W) identifiziert Ott eindeutig. Kontrolle Die minimale Anwortgrösse verhindert direkte Abfragen über Ott. Umgehung Kleine Antwortmengen "füttern", damit sie die minimale Antwortgrösse erreichen. Danach wird der Effekt der zusätzlichen Datensätze subtrahiert. Die Formel, welche die zusätzlichen Datensätze identifiziert, wird "Tracker" genannt. (To "track down" additional characteristics of an individual). 35/37 © Institut für Computational Science, ETH Zürich Tracker anwenden © Institut für Computational Science, ETH Zürich Kontrolle ist schwierig Frage: Wie viele Personen sind Journalist? Antwort: 3 Frage: Wie viele Personen sind Journalist AND M? Antwort: 2 Rückschluss: (Journalist AND W) identifiziert 1 Individuum (Ott) Frage: Summe der Spenden der Journalisten? Antwort: CHF 8500 Frage: Summe der Spenden Journalist AND M? Antwort: CHF 3500 Rückschluss: Spende der einzigen Journalistin = CHF 5000! 36/37 © Institut für Computational Science, ETH Zürich Abfragen tragen unweigerlich Information aus der Datenbank. Man kann deshalb nicht annehmen, dass sich ein System nie Blossstellen lässt. Deshalb Zugriffe aufzeichnen (threat monitoring) Notwendiger Aufwand für Blossstellungen hoch halten 37/37 © Institut für Computational Science, ETH Zürich