Upload
sigiswald-zierer
View
111
Download
0
Embed Size (px)
Citation preview
Agenda für heute, 15. Dezember 2006
• DatenmodellierungDatenmodellierung• Pause
• Datenbankentwurf
• Relationale Operatoren und SQL
• Sicherheitsaspekte
© Institut für Computational Science, ETH Zürich2/35
© Institut für Computational Science, ETH Zürich
Elemente der Datenverwaltung
Leute
Information
Daten
Computer
Programme
Daten-verwaltung
Verarbeitung+
Speicherung
Algorithmen+
Datenstrukturen
Eine Beschreibung der Verarbeitung und Speicherung der Daten muss für Leute verständlich sein, sich aber auch für die Programmierung eignen!
Speicherkapazität+
Rechenleistung
3/35
© Institut für Computational Science, ETH Zürich
Wieso Datenmodellierung?
Verständnis: Wie sollen die Daten gespeichert werden (Organisation)
Abstrahieren: Welche Daten sollen gespeichert werden
Bsp.: Bodenbeschaffenheit
• Verständnis über Herkunft und Verwendung der Daten
• Details abstrahieren
4/35
© Institut für Computational Science, ETH Zürich
Hilfsmittel für die Modellierung von Daten
Methode Unterstützt
Mind mapping Gedanken assoziativspontan darstellen
Entity-Relationship Modell Datenbankgerechte Darstellung von Objekten,deren Merkmale und Beziehungen zueinander
Concept Maps Wissen kontextabhängig organisieren und darstellen
5/35
© Institut für Computational Science, ETH Zürich
Mind mapping
6/35
© Institut für Computational Science, ETH Zürich
Concept maps
7/35
© Institut für Computational Science, ETH Zürich
Entity-Relationship-Diagramm
Nahrungsmittel
Name
Rezept Lebensmittel
Warencode
Nährstoff
NameQuantität
Zutaten
8/35
Nährstoff Verluste
m m m 1
Entitätsmenge Beziehung(Relationship)
Entitätsmenge
Merkmal(Attribut)
Beziehungstyp
© Institut für Computational Science, ETH Zürich
Tabellarische Darstellung von Entitätsmengen
Nahrungsmittel
Name Aprikose Bürli Paranuss
CH-Code 18.1.2.1 12.1.2.Z.2 18.1.6.6
Protein 0.8 8.618 13
Masseinheit g g g
Wasser 86.79 39.632 5.929
Masseinheit g g g
Kalium 315 159.927 680
Masseinheit mg mg mg
Kohlehydrate 12.1 48.802 11.8
Masseinheit g g g
Vitamin E 0.7 0.411 7
Masseinheit mg mg mg
Entität
Attribut
9/35
Entitätsmenge
Attributname
© Institut für Computational Science, ETH Zürich
Entflechten von Information
Nahrungsmittel
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
Nährstoff_id 180 84 57 180 84 57
Menge 86.79 12.1 0.4 39.632 48.802 2.032
Nährstoffe
Nährstoff_id 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
10/35
= Schlüssel: stellt Verbindung zwischen Tabellen her
© Institut für Computational Science, ETH Zürich
Festhalten von Beziehungen (Relationships)
Nahrungsmittel
NMittel_id 1000842 1001511
Name_d Aprikose Bürli
Name_f Abricot Bürli
Name_i Albicocca Bürli
CH-Code 18.1.2.1 12.1.2.Z.2
Nährstoffe
Nährstoff_id 180 84 57 178
Name_d Wasser Kohlehydrat Eisen Vitamin K
Name_f Eau Hydrate de carbon Fer Vitamine K
Name_i Acqua Carboidrati Ferro Vitamina K
Masseinheit g g mg mg
Analyse
Analyse_id 1 2
NMittel_id 1000842 1001511
Nährstoff_id 180 84
Quelle CIQUAL Inst. f. LMW
Menge 86.79 48.802
Methode unbekannt Summenwert
Person M. Racher S. Jacob
11/35
1
1
m
m
© Institut für Computational Science, ETH Zürich
• Datenmodellierung
• DatenbankentwurfDatenbankentwurf• Relationale Operatoren und SQL
• Sicherheitsaspekte
© Institut für Computational Science, ETH Zürich
Modelle vs. Schemata
Modellierung derDaten aus der realen Welt
Modellierung derDaten im Rechner
Konzeptionelles Schema
Entity-Relationship-Modell
Relationales Datenmodell
12/35
© Institut für Computational Science, ETH Zürich
Grundlagen für den Datenbankentwurf
Datenbank
Basisdaten Selektive Abfrage
Konzeptionelles Schema
Internes Schema Externes Schema• Datenstrukturen
• Datentypen
• Zugriffsmechanismen
• Anwendungsspezifische Sicht auf die Daten
• Logische Gesamtstruktur
• Eigenschaften der Daten
• Beziehungen unter den Daten
Datenmodell
13/35
© Institut für Computational Science, ETH Zürich
Das Verbreitetste: Das Relationenmodell
• Tabellen in denen Einträge (Tupel) eingefügt, gelöscht oder geändert werden können (Mutationen)
• Verknüpfen von Daten aus den individuellen Tabellen mit relationalen Operatoren stellt die ursprüngliche Information wieder her
• Verteilen von Daten auf mehrere Tabellen (Normalisieren) reduziert Redundanz, d.h. die wiederholte Speicherung gleicher Werte
14/35
© Institut für Computational Science, ETH Zürich
Elemente einer Relation
Name CH-Code Wasser Masseinh Kohlehyd Masseinh Eisen Masseinh
Aprikose 18.1.2.1 86.79 g 12.1 g 0.4 mg
Bürli 12.1.2.Z.2 39.632 g 39.632 g 2.032 mg
Nahrungsmittel
15/35
Tupel
AttributRelation Attributname
Attributwert
© Institut für Computational Science, ETH Zürich
Verteilen von Daten auf mehrere Tabellen
Name CH-Code Nährstoff_id Menge
Aprikose 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
Nährstoff_id Name_d Name_f Name_i Masseinh.
57 Eisen Fer Ferro mg
84 Kohlehydrate Hydrate de carbon Carboidrate g
180 Wasser Eau Acqua g
Nahrungsmittel
Nährstoffe
Name CH-Code Wasser Masseinh Kohlehyd Masseinh Eisen Masseinh
Aprikose 18.1.2.1 86.79 g 12.1 g 0.4 mg
Bürli 12.1.2.Z.2 39.632 g 39.632 g 2.032 mg
Nahrungsmittel
16/35
© Institut für Computational Science, ETH Zürich
Daten zusammenführen: Nährwerte von Bürli
Name CH-Code Nährstoff_id Menge
Aprikose 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
Id_Nr Name_d Name_f Name_i Masseinh.
57 Eisen Fer Ferro mg
84 Kohlehydrate Hydrate de carbon Carboidrate g
180 Wasser Eau Acqua g
Nahrungsmittel
Nährstoffe
Name Name_d Menge
Bürli Wasser 39.632
Bürli Kohlehydrate 48.802
Nährwerte
17/35
• Datenmodellierung
• Datenbankentwurf
• Relationale Operatoren und SQL Relationale Operatoren und SQL • Sicherheitsaspekte
© Institut für Computational Science, ETH Zürich
Relationale Operatoren
Die drei wichtigsten Operatoren der relationalen Algebra für das Manipulieren von Tabellen sind:
a) SelectionWählt diejenigen Tupel einer Relation aus, welche bestimmte Bedingungen erfüllen.
b) ProjectionWählt eine oder mehrere Spalten einer Relation aus.
c) JoinPaart selektiv Spalten aus verschiedenen
Relationen.
18/35
© Institut für Computational Science, ETH Zürich
Datenbanken abfragen: SQL
"Wieviele Nahrungsmittel enthalten weniger als 50 g Kohlehydrate ?"
19/35
Abfragesprache für Datenbankenz.B. SQL (Structured Query Language)
SELECT Menge FROM Nährstoffe WHERE Nährstoff_id = 84 AND Menge < 50
Natürlichsprachlich formulierte Frage
Tabellarische Ausgabe (Relation)
Nährstoffe
© Institut für Computational Science, ETH Zürich
Projection mit dem SQL-Befehl SELECT
SELECT CH-Code FROM Nahrungsmittel
20/35
Name CH-Code Nährstoff_id Menge
Aprikose 18.1.2.1 180 86.79
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
CH-Code
18.1.2.1
18.1.2.1
18.1.6.6
12.1.2.Z.2
12.1.2.Z.2
12.1.2.Z.2
Nahrungsmittel
Resultat:
Attribut Relation
© Institut für Computational Science, ETH Zürich
Selection mit dem SQL-Befehl SELECT
SELECT * FROM Nahrungsmittel WHERE Menge < 15
Resultat:
21/35
Name CH-Code Nährstoff_id Menge
Aprikose 18.1.2.1 180 86.79
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
Nahrungsmittel
Name CH-Code Nährstoff_id Menge
Aprikose 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
Attributwert
© Institut für Computational Science, ETH Zürich
Selection + Projection mit dem SQL-Befehl SELECT
SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE Nährstoff_id = 84
Nährstoff_id Menge
84 12.1
84 48.802
Resultat:
22/35
Name CH-Code Nährstoff_id Menge
Aprikose 18.1.2.1 180 86.79
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
Nahrungsmittel
© Institut für Computational Science, ETH Zürich
Hinweis
• 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).
23/35
SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE Nährstoff_id = 84
© Institut für Computational Science, ETH Zürich
Selection + Projection + Join mit dem SQL-Befehl SELECT
Name CH-Code Nährstoff_id Menge
Aprikose 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
Id_Nr Name_d Name_f Name_i Masseinh. Hauptkomp.
57 Eisen Fer Ferro mg ja
84 Kohlehydrate Hydrate de carbon Carboidrate g ja
180 Wasser Eau Acqua g ja
NM
NS
NM.Name NS.Name_d NM.Menge
Bürli Wasser 39.632
Bürli Kohlehydrate 48.802
Resultat:
SELECT Name, Name_d, Menge FROM NM, NS WHERE Name = Bürli AND Menge > 30
24/35
© 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 :
SUMBerechnet die Summe der numerischen Werte einer Spalte
AVGBerechnet den Durchschnitt der Werte einer Spalte
MINGibt den kleinsten Wert einer Spalte zurück
MAXGibt den grössten Wert einer Spalte zurück
COUNT Gibt die Anzahl Zeilen einer Tabelle zurück
25/35
• Datenmodellierung
• Datenbankentwurf
• Relationale Operatoren und SQL
• SicherheitsaspekteSicherheitsaspekte
© Institut für Computational Science, ETH Zürich
Statistische Datenbanken
• Abfragen beschränkt auf statistische Operationen (Aggregationen):
COUNT
SUM
MEAN
MIN
MAX
• Vertrauliche Daten
26/35
© Institut für Computational Science, ETH Zürich
Statistische Datenbanken
27/35
Abfragen an Datenbanken werden als logischer Ausdruck formuliert
Beispiel
Suche: "weiblich AND Professor OR (Gehalt ≥ CHF 80000)"
Bei statistischen Datenbanken sind Antworten Resultate von Aggregations-Operatoren
• Somit stehen nur statistische Daten zur Verfügung
• Es werden empfindliche Daten nicht preisgegeben
Trotzdem kann es leicht sein, bestimmte vertrauliche Daten durch geeignete statistische Abfragen, die Rückschlüsse zulassen, herzuleiten!
© Institut für Computational Science, ETH Zürich
Von Urs Schmied (im Bild rechts) wissen wir, dass er
28/35
Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 1
Die Daten sind erfunden, Ähnlichkeiten mit lebenden Personen sind rein zufällig!
• zwischen 34 und 36 Jahre alt ist
• Jus studierte
• bei der UBS eine Position als Vizepräsident inne hat
© Institut für Computational Science, ETH Zürich
Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 1
Wir wissen auch, dass er im Spital ist, aber nicht wieso.
Weil wir Zugang zur statistischen Datenbank des Spitals haben, formulieren wir folgende Frage:
Wie viele Patienten haben folgende Eigenschaften?MännlichAlter 34 – 36VerheiratetZwei KinderLic.jur.Bank-Vizepräsident
Antwort: 1
Wir gehen davon aus, dass es sich um Urs handelt und erhalten somit vertrauliche Informationen über ihn mit der folgenden Abfrage:
29/35
© 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 34 – 36
Verheiratet
Zwei Kinder
Lic.jur.
Bank-Vizepräsident
Nehmen Antidepressiva
Das System wird mit "1" antworten, falls Schmied Antidepressiva erhält, sonst mit "0"
30/35
© Institut für Computational Science, ETH Zürich
Lassen sich solche Rückschlüsse verhindern?
Einfaches Prinzip der "Blossstellung"
• Eine Abfrage deren Antwortgrösse 1 ist.
• Die Antwortgrösse der Abfrage 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
31/35
© Institut für Computational Science, ETH Zürich
Gewisses Vorwissen erlaubt Rückschlüsse: Beispiel 2
Name Geschlecht Beruf Spende (CHF)
Schamanski M Journalist 3000
Staub M Journalist 500
Bertolli M Unternehmer 1
Ott W Journalist 5000
Zwahlen W Wissenschaftler 1000
Koller M Wissenschaftler 20000
Waser W Arzt 2000
Schmid M Anwalt 10000
Geheime Wahlspenden
n = 8; bei k =2: min. Antwortgrösse = 2, max. Antwortgrösse = 6
32/35
© Institut für Computational Science, ETH Zürich
Rückschlüsse mittels "Tracker"
Angenommen, die Frage: (Journalist AND W)
identifiziert Ott eindeutig
Kontrolle Die minimale Anwortgrösse verhindert direkte Abfragen über Ott
UmgehungKleine 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)
33/35
© Institut für Computational Science, ETH Zürich
Tracker anwenden
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!
34/35
© Institut für Computational Science, ETH Zürich
Kontrolle ist schwierig
Abfragen tragen unweigerlich Information aus einer Datenbank
Man kann deshalb nicht annehmen, dass sich ein System nie Blossstellen lässt
DeshalbZugriffe aufzeichnen (threat monitoring)
Notwendiger Aufwand für Blossstellungen hoch halten
35/35
Wir wünschen Ihnen ein schönes Wochenende!