Menge

Werbung
Agenda für heute, 16. Dezember 2005
• Datenmodellierung
•
•
•
•
Pause
Datenbankentwurf
Relationale Operatoren und SQL
Sicherheit
2/37
© Institut für Computational Science, ETH Zürich
Elemente der Datenverwaltung
Speicherkapazität
+
Rechenleistung
Leute
Daten
Information
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!
Verarbeitung
+
Speicherung
3/37
Algorithmen
+
Datenstrukturen
© Institut für Computational Science, ETH Zürich
Wieso Datenmodellierung?
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
© Institut für Computational Science, ETH Zürich
Mind mapping
6/37
© Institut für Computational Science, ETH Zürich
Concept maps
7/37
© Institut für Computational Science, ETH Zürich
Entity-Relationship-Diagramm
Beziehungstyp
Name
GrundNahrungsmittel
Nährstoff
Entitätsmenge
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
Name
Grundnahrungsmittel
Gruppe
Datum
m
1
Name
Analyse
Person
m
Methode
9/37
1
Quelle
Nährstoff
Menge
© 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.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
0g
0g
0g
Vitamin E
0.7mg
0.411mg
7mg
Eisen
0.4mg
2.032mg
3.1mg
7g
22.97g
12g
Nahrungsfasern
Alkohol
Folsäure
Attribut
Entität
10/37
© Institut für Computational Science, ETH Zürich
Aufteilen von Entitätsmengen
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
180
84
57
180
84
57
86.79
12.1
0.4
39.632
48.802
2.032
Nährstoff_id
Menge
= Schlüssel
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
Hauptkomp.
ja
ja
ja
nein
11/37
© Institut für Computational Science, ETH Zürich
Entitätsmengen und Beziehungen
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
Nährstoffe
Nährstoff_id
1
m
Analyse_id
1
2
NMittel_id
1000842
1001511
180
84
Quelle
CIQUAL
Inst. f. LMW
Menge
86.79
48.802
Methode
unbekannt
Summenwert
Person
M. Racher
S. Jacob
Nährstoff_id
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
• Datenmodellierung
• Datenbankentwurf
• Relationale Operatoren und SQL
• Sicherheit
© Institut für Computational Science, ETH Zürich
Modelle & Schemata
Modellierung der
Daten aus der
realen Welt
Entity-Relationship-Modell
Konzeptionelles Schema
Relationales Datenmodell
Modellierung der
Daten im Rechner
13/37
© Institut für Computational Science, ETH Zürich
Grundlagen für den Datenbankentwurf
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
Verschiedene Datenmodelle
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
• Tabellen in denen Einträge (Tupel) eingefügt, gelöscht oder
geändert werden können (Mutationen).
• 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.
16/37
© Institut für Computational Science, ETH Zürich
Relationen aufteilen
Nahrungsmittel
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
Nahrungsmittel
Name
Eisen
CH-Code
Protein Kalium
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
Hauptkomp.
Attribut
Tupel
Nährstoffe
Nährstoff_id 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
17/37
Acqua
g
© Institut für Computational
Science,ja
ETH Zürich
• Datenmodellierung
• Datenbankentwurf
• Relationale Operatoren und SQL
• Sicherheit
© Institut für Computational Science, ETH Zürich
Relationen zusammenführen
Nahrungsmittel
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ährwerte
Nam
e
Name_d
Menge
Bürli
Wasser
39.632
Bürli
Kohlehydrate
48.802
Nährstoffe
Id_Nr
57
84
180
Name_d
Eisen
Name_f
Name_i
Hauptkomp.
Ferro
mg
ja
Carboidrate
g
ja
Acqua
g
ja
Fer
Kohlehydrate Hydrate de carbon
Wasser
Masseinh
.
Eau
18/37
© 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) Selection
Wählt diejenigen Tupel einer Relation aus,
welche bestimmte Bedingungen erfüllen.
b) Projection
Wählt eine oder mehrere Spalten einer
Relation aus.
c) Join
Paart selektiv Spalten aus verschiedenen
Relationen.
19/37
© Institut für Computational Science, ETH Zürich
Datenbanken abfragen
"In welchen Mengen
kommen Kohlehydrate
in der Datenbank vor?"
Natürlichsprachlich
formulierte Frage
SELECT Nährstoff_id, Menge
FROM Nahrungsmittel WHERE
Abfragesprache für
Datenbanken
z.B. SQL
Nährstoff_id = 84
(Structured Query Language)
Tabellarische Ausgabe
(Relation)
20/37
© Institut für Computational Science, ETH Zürich
Auswahl bestimmter Attribute mit dem Befehl SELECT (project)
Attribut
Relation
SELECT CH-Code FROM Nahrungsmittel
Nahrungsmittel
Name
CH-Code
Nährstoff_id Menge
Aprikose
18.1.2.1
180
86.79
Aprikose
18.1.2.1
84
12.1
Resultat:
Paranuss
18.1.6.6
180
5.929
CH-Code
Bürli
12.1.2.Z.2
180
39.632
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
18.1.6.6
12.1.2.Z.2
12.1.2.Z.2
12.1.2.Z.2
21/37
© Institut für Computational Science, ETH Zürich
Auswahl bestimmter Tupel mit dem Befehl SELECT
SELECT * FROM Nahrungsmittel WHERE Menge < 15
Nahrungsmittel
Resultat:
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
Name
CH-Code
Attributwert
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
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
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
Nährstoff_id
Menge
84
12.1
84
48.802
Resultat:
23/37
© Institut für Computational Science, ETH Zürich
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.
24/37
© Institut für Computational Science, ETH Zürich
Hinweis
SELECT Nährstoff_id, Menge FROM Nahrungsmittel WHERE Nährstoff_id = 84
• 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).
25/37
© Institut für Computational Science, ETH Zürich
Relationen zusammenführen
SELECT Name, Name_d, Menge FROM NM, NS WHERE Name = Bürli AND Menge > 30
NM
Name
CH-Code
Nährstoff_id Menge
Resultat:
NM.Name NS.Name_d
NM.Menge
Aprikose
18.1.2.1
180
86.79
Aprikose
18.1.2.1
84
12.1
Bürli
Wasser
39.632
Aprikose
18.1.2.1
57
0.4
Bürli
Kohlehydrate
48.802
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
84
180
Name_d
Eisen
Name_f
Name_i
Fer
Kohlehydrate Hydrate de carbon
Wasser
Eau
Masseinh
.
Hauptkomp.
Ferro
mg
ja
Carboidrate
g
ja
g
ja
26/37 Acqua
© 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
COUNT Gibt die Anzahl Zeilen einer Tabelle zurück
27/37
© Institut für Computational Science, ETH Zürich
• Datenmodellierung
• Datenbankentwurf
• Relationale Operatoren und SQL
• Sicherheit
© Institut für Computational Science, ETH Zürich
Statistische Datenbanken
Vertrauliche Daten
Abfragen beschränkt auf statistische Operationen (Aggregationen):
COUNT, SUM, MEAN , MIN, MAX
28/37
© Institut für Computational Science, ETH Zürich
Statistische Datenbanken
Datenbank-Verwaltungssysteme erlauben Zugriffe nur über sog.
Transaktionsprogramme.
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)"
29/37
© Institut für Computational Science, ETH Zürich
Statistische Datenbanken
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!
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
Antwort: 1
Wir wissen aber, dass Herr Schmied diese Eigenschaften hat und
erhalten somit vertrauliche Informationen über Schmied mit der
folgenden Abfrage.
31/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
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
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
© Institut für Computational Science, ETH Zürich
Rückschlüsse mittels "Tracker"
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
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
Kontrolle ist schwierig
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
Wir wünschen Ihnen ein schönes
Wochenende!
Herunterladen