Datenmodellierung - EvIM

Werbung
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
Herunterladen