Upload
nadja-stoll
View
107
Download
0
Embed Size (px)
Citation preview
I N F O R M A T I K
Informationssysteme / Datenbankabfragen
Thomas Mohr
24. April 2009
2
IN
FO
RM
AT
IKWas sagt der Lehrplan?
Sammlung personenbezogener Daten Missbrauch personenbezogener Daten Schutz personenbezogener Daten
Bedeutung von Datenbanken Informationsdarstellung mit verknüpften Tabellen Erstellung von Abfragen mit einer Abfragesprache
3
IN
FO
RM
AT
IKInformationssysteme
4
IN
FO
RM
AT
IK
Was ist ein Informationssystem ?
• Ein Informationssystem kann auf formalisierte Fragen eines Anwenders Antworten aus einer gegebenen Datenmenge geben Komponenten eines Informationssystems:
Informationssystem
Erfassung
Speicherung
Analyse
Darstellung
DatenbanksystemDBS
Datenbank(Datenbasis)
Datenbank(Datenbasis)
DatenbankmanagementsystemDBMS, z.B. MySQL
5
IN
FO
RM
AT
IK
Ein Ausgangspunkt im Unterricht…
• Schüler führen eine Internet-Recherche durch:„Nachbarländer Deutschlands – Fläche, Einwohner, Hauptstadt“ Nutzung eines Informationssystems Unterschiedliche Darstellung der Informationen
6
IN
FO
RM
AT
IK
Software-Architekturen: „Standalone“-Programm
• Vorteile Übersichtlichkeit (?) Schnell zu programmieren nur eine
Programmiersprache
• Nachteile Daten meist nur vom
erzeugenden Programm zu lesen
Erweiterungen aufwändig Immer wieder gleiche
Probleme (z.B. Datumsformat)
PCDarstellung
Anwendungsprogramm „Logik“
Datenbasis
7
IN
FO
RM
AT
IK
(Datenbank)Server Datenbasis
Darstellung
Anwendungsprogramm „Logik“
Datenbasis
Software-Architekturen - Client-Server
Server
ClientDarstellung
Anwendungsprogramm„Logik“
8
IN
FO
RM
AT
IK
Software-Architekturen - Client-Server
(Datenbank)Server Datenbasis
Server
ClientDarstellung
Anwendungsprogramm„Logik“
• Vorteile Datenbank übernimmt
„Standardaufgaben“ Daten zentral vorhanden
(für mehrere Benutzer / Programme)
Erweiterungen relativ einfach
• Nachteile Installation von Software auf
allen Clients notwendig Weitere „Sprache“ zum
Datenbankzugriff
9
IN
FO
RM
AT
IK
Datenbankserver (z.B. MySQL) Datenbasis
Darstellung
Anwendungsprogramm„Logik“
Software-Architekturen – Webarchitektur
Webclient (Browser) Darstellung
Webserver (z.B. Apache und PHP) „Logik“
Server
Server
Client
10
IN
FO
RM
AT
IK
Software-Architekturen – Webarchitektur
• Vorteile Keine Installation von
zusätzlicher Software beim Client
• Nachteile http-Protokoll ohne
Sessionverwaltung
Webclient (Browser)
Webserver (z.B. Apache und PHP)
Datenbankserver (z.B. MySQL)
Darstellung
„Logik“
Datenbasis
Server
Server
Client
11
IN
FO
RM
AT
IK
Typische Hardware-Verteilung
• Viele (Web-) Clients teilen sich die Dienste eines Webservers, der wiederum auf einen Datenbankserver zurückgreift. In kleinen Systemen können Web- und Datenbankserver auf dem
gleichen Rechner sein.
Datenbankserver
Webserver
Clients
12
IN
FO
RM
AT
IK
…bis hin zum Extrem einer Web Farm
HACMP Fail-Over
Production DB Server FailOver DB Server
2,4 TByte
FDDI Switch
32 GByte RAM
Load Balancer
Application Server Farm
je 4 Prozessoren
32 GByte RAM
13
IN
FO
RM
AT
IK • Relationale Datenbanken
Die Daten werden in Form von Tabellen gespeichert Zwischen den Tabellen werden Beziehungen aufgebaut
(Relationen)
Name Einwohner Hauptstadt Kontinent
Dänemark 5165000 Kopenhagen EuropaDeutschland 81338000 Berlin EuropaIndien 761000000 Delhi AsienRwanda 6300000 Kigali Afrika
Arten von Datenbanken
Attribut (Merkmal, Spalte)
Attributwert (Datenwert)
Datensatz (Tupel)Attributklas
se
Land
14
IN
FO
RM
AT
IK
Arten von Datenbanken
• Relationale Datenbanken – typische Vertreter Oracle IBM (DB/2) Microsoft SQL Server (Access ?) Informix MySQL PostGreSQL
OpenSource
15
IN
FO
RM
AT
IK
Was bietet mir eine Datenbank?
Strukturierte Speicherung von Daten Verteilter, gleichzeitiger Zugriff mehrerer Benutzer /
Programme
ACID – Prinzip Atomicity
• Transaktionen (Änderungen an der Datenbank) werden ganz oder gar nicht durchgeführt
Consistency• Eine Transaktion führt wieder zu einem konsistenten (gültigen)
Zustand der Datenbank Isolation
• Transaktionen beeinflussen sich nicht gegenseitig Durability
• Eine Transaktion ist dauerhaft gespeichert, auch gegen Systemabstürze gesichert
17
IN
FO
RM
AT
IK
LNR Name Einwohner Hauptstadt Kontinent
DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.34 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika… … … … …
Land
SELECT Name, Einwohner, Kontinent FROM Land WHERE Einwohner > 10
Datenbankzugriff mit SQL - Ein erstes Beispiel
Länder mit über 10 Mio.
Einwohner
Ergebnistabelle
Name Einwohner Kontinent
Deutschland 81.34 EuropaIndien 761.00 Asien… … …
18
IN
FO
RM
AT
IK
Ein erstes Problem der Datenbank führt zur Erweiterung…
• Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner?SELECT Name, Einwohner FROM Land WHERE Kontinent = 'Europa' AND Einwohner > 20
Frankreich??Problem: Europa wird unterschiedlich geschrieben!
Lösung: Auslagerung in eine eigene Tabelle
19
IN
FO
RM
AT
IK • Wozu dient die Spalte LNR?
• … ein anderes Beispiel: Eine Tabelle mit Städten. Suche nach der Hauptstadt „Berlin“
Suche nach der Hauptstadt „Washington“
Exkurs: Primärschlüssel
Man benötigt noch das Land als Suchhilfe.
Selbst das Land reicht als Suchhilfe nicht
aus.
21
IN
FO
RM
AT
IK
Relationale Datenbanken – Beziehungen
• Land und Kontinent werden in zwei getrennten Tabellen gespeichert und über eine Beziehung miteinander verknüpft.
• Zur Verknüpfung dient ein Kürzel des Kontinents, das als Fremdschlüssel in Land gespeichert wird.
KNR Name
EU EuropaAS AsienAF Afrika
Kontinent
LNR Name Einwohner Hauptstadt Kontinent
DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.34 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika
LNR Name … KNR
DK Dänemark … EUD Deutschland … EUIND Indien … ASRWA Rwanda … AF
Land
Schlüsselattribut aus Kontinent
23
IN
FO
RM
AT
IKSQL – einfache Joins
• Müssen in SQL Daten aus mehreren Tabellen entnommen werden, so werden sog. „Joins“ gebildet. Die Abarbeitung eines Joins in mehreren Schritten kann an
folgendem Beispiel veranschaulicht werden:• Es sollen alle Länder mit ihren Kontinenten ausgegeben werden,
die mehr als 10 Mio. Einwohner haben.
LNR Name Einwohner KNR
DK Dänemark 5.16 EUD Deutschland 81.34 EUIND Indien 761.00 ASRWA Rwanda 6.30 AF
Land
KNR Name
EU EuropaAS AsienAF Afrika
Kontinent
24
IN
FO
RM
AT
IKSQL – einfache Joins
1. Cross-Join („jede Zeile mit jeder“) SELECT *
FROM Land, Kontinent
LNR Name Einwohner KNR KNR Name
DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …
LNR Name Einwohner KNR
DK Dänemark 5.16 EUD Deutschland 81.34 EUIND Indien 761.00 ASRWA Rwanda 6.30 AF
Lan
d KNR Name
EU EuropaAS AsienAF Afrika
Kon
tin
en
t
25
IN
FO
RM
AT
IK
WHERE Land.KNR= Kontinent.KNR
LNR Name Einwohner KNR KNR Name
DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …
2. Einschränken auf „passende“ Datensätze. Es dürfen nur die Zeilen genommen werden, für die die
„Land“ und die „Kontinent“ Tabelle Daten des gleichen Kontinents enthalten.
Dies wird durch die sog. „Join-Bedingung“ erreicht.
SELECT * FROM Land, Kontinent
SQL – einfache Joins
26
IN
FO
RM
AT
IK
AND Land.Einwohner > 10
SQL – einfache Joins
2. Einschränken auf „passende“ Datensätze (2). Es sollen nur Länder mit > 10 Mio. Einwohner gezeigt
werden. Momentan würde auch „Dänemark“ ausgegeben werden.
Also muss eine weitere Bedingung erfüllt sein: SELECT *
FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR
LNR Name Einwohner KNR KNR Name
DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …
27
IN
FO
RM
AT
IKSQL – einfache Joins
3. Einschränken auf gesuchte Spalten. Nur bestimmte Spalten werden ausgegeben. SELECT Land.Name, Land.Einwohner, Kontinent.Name
FROM Land,Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 10
Name Einwohner Name
Deutschland 81.34 EuropaIndien 761.00 Asien… … …
In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren.
LNR Name Einwohner KNR KNR Name
D Deutschland 81.34 EU EU EuropaIND Indien 761.00 AS AS Asien… … … … …
28
IN
FO
RM
AT
IK
Erweiterung der Datenbank
• Es sollen nun die wichtigsten Orte der Länder gespeichert werden.
• Wie sieht eine solche Ländertabelle aus? Es wird eine neue Tabelle „Ort“ angelegt mit einem
Fremdschlüssel auf „Land“.
ONR Name … LNR
BANGAL Bangalore … INDGOETTI Göttingen … DKARLSR Karlsruhe … DKOPENH Kopenhagen …
DK
Ort
LNR Name … KNR
DK Dänemark … EUD Deutschland … EUIND Indien … ASRWA Rwanda … AF
Land
Schlüsselattribut aus Land
29
IN
FO
RM
AT
IK
Kontinent
Teil von
Land Ort
Teil von
Hauptstadt
Bisheriges „Schema“ der Datenbank
• Ein erstes „E/R-Modell“ eigentlich intuitiv zu lesen!?
31
IN
FO
RM
AT
IK
Erweiterung der Datenbank
• Es sollen Flüsse gespeichert werden. Flüsse fließen durch Orte. Manche Orte werden von mehreren Flüssen durchflossen
(z.B. Koblenz)
• Wie sieht die Tabelle für die Flüsse aus?
FNR NameLaenge
ELB Elbe 1144MEK Mekong 4500MOS Mosel 544RHE Rhein 1320
Fluss
ONR Name
GOETTI GöttingenKARLSR KarlsruheKOBLEN Koblenz KOPENHKopenhagen
Ort
ONR
HAMBURPHNOMPKOBLENKOBLEN
Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden.
32
IN
FO
RM
AT
IK
Erweiterung der Datenbank
• Es sollen Flüsse gespeichert werden. Flüsse fließen durch Orte. Manche Orte werden von mehreren Flüssen durchflossen
(z.B. Koblenz)
• Wie sieht die Tabelle für die Flüsse aus?
FNR NameLaenge
ELB Elbe 1144MEK Mekong 4500MOS Mosel 544RHE Rhein 1320
Fluss
ONR Name
GOETTI GöttingenKARLSR KarlsruheKOBLEN Koblenz KOPENHKopenhagen
Ort
FNR
LEIRHERHE
Problem: Für Orte müssen mehrere Flüsse eingetragen werden.
Lösung: Auslagerung der Zuordnung in eine eigene Tabelle
33
IN
FO
RM
AT
IK
Erweiterung der Datenbank
• Es sollen Flüsse gespeichert werden. Flüsse fließen durch Orte. Manche Orte werden von mehreren Flüssen durchflossen
(z.B. Koblenz) Zuordnungstabelle mit Schlüsseln aus beiden
Haupttabellen.
FNR NameLaenge
ELB Elbe 1144MEK Mekong 4500MOS Mosel 544RHE Rhein 1320
Fluss
ONR Name
GOETTI GöttingenKARLSR KarlsruheKOBLEN Koblenz KOPENHKopenhagen
Ort
FNR ONR
ELBHAMBURRHE KOBLENRHE KARLSRMOS KOBLEN
Stadtfluss
34
IN
FO
RM
AT
IK
Struktur der Datenbank terra4
Kontinent
Sprache
Teil von
gesprochen
Land
Fluss
Ort
Teil von
durchfließt
n
m
n
1
1 n
Hauptstadt1 1 n
m
35
IN
FO
RM
AT
IK
Gruppieren von Ergebnissen
• Manchmal müssen die Ergebnisse einer Anfrage gruppiert und verrechnet werden. Bsp.: Wie viele Städte sind in Europa pro Land verzeichnet? SELECT o.ONR, l.Name
FROM Ort o, Land l WHERE o.LNR = l.LNR AND l.KNR = 'EU‘ ORDER BY l.Name
Selbst zählen???NEIN!
ONR Name
AALBOR DänemarkKOPENH DänemarkBERLIN DeutschlandDUESSE DeutschlandMAINZ DeutschlandTALLIN Estland
36
IN
FO
RM
AT
IK
Gruppieren von Ergebnissen
• Manchmal müssen die Ergebnisse einer Anfrage gruppiert und verrechnet werden. Bsp.: Wie viele Städte sind in Europa pro Land verzeichnet? SELECT l.Name, COUNT(*) AS Anzahl
FROM Ort o, Land l WHERE o.LNR = l.LNR AND l.KNR = 'EU‘ GROUP BY l.Name ORDER BY l.Name
ONR Name
AALBOR DänemarkKOPENH DänemarkBERLIN DeutschlandDUESSE DeutschlandMAINZ DeutschlandTALLIN Estland
3
1
2
NameAnzahl
Dänemark 2Deutschland 3Estland 1
37
IN
FO
RM
AT
IK
Struktur der kompletten Datenbank „miniterra“
Kontinent
Sprache
Teil von
gesprochen
Land
Fluss
Ort
Teil von
durchfließt
mündet
n
m
n
1
1 n
Hauptstadt1 1 n
m
1
n
benachbart
m
n
38
IN
FO
RM
AT
IK
u.v.m.
• SQL bietet noch einige weitere (hier nicht behandelte) Möglichkeiten: OUTER JOINS:
• Es werden beim Join auch Datensätze angezeigt, die keinen „Join-Partner“ finden.
• Bsp.: Alle Städte sollen ausgegeben werden und zwar (wenn vorhanden) mit ihren Flüssen.
Behandlung von leeren Feldern (NULL-Werten) …
39
IN
FO
RM
AT
IK
Vernetzung des Themas - Auswertungen
• Grafische Auswertung der Datenbank(z.B. Anzahl der Länder pro Kontinent) über Werkzeuge (z.B. Excel) über selbst erstellte Programme
40
IN
FO
RM
AT
IK
Vernetzung des Themas - Koordinatensystem
• Umrechnung Breiten/Längen-Angaben in Bildschirmkoordinaten
41
IN
FO
RM
AT
IK
Vernetzung des Themas - Grenzen von SQL
• Problem: „Verfolgen eines Flusslaufes“ von der Quelle zum Meer
z.B. Spree
• Hier werden iterative Strukturenbenötigt, die SQL (als mengen-orientierte Sprache) im Standard nicht bietet.
Anknüpfung an Programmierung PHP, Delphi, Java
Rhein
Mosel
Main
NeckarDonau
Isar
Inn
FuldaWerra
Weser
Elbe
HavelSpreeAller
Elbe
HavelSpree
Nordsee
42
IN
FO
RM
AT
IK
Vernetzung des Themas - Grenzen von SQL
• Problem: „Verfolgen eines Flusslaufes“ vom Meer zu den Zuflüssen
z.B. Nordsee
Beispiel für eine (elegante?)rekursive Programmierung
Rhein
Mosel
Main
NeckarDonau
Isar
Inn
FuldaWerra
Weser
Elbe
HavelSpreeAller
Nordsee
Rhein
Mosel
Main
Neckar
FuldaWerra
Weser
Aller
Elbe
HavelSpree
Nordsee
43
IN
FO
RM
AT
IK
Welches Datenbanksystem ? - Vorschlag: MySQL
Freie Software mit großer Entwicklergemeinde inzwischen allerdings von SUN aufgekauft
Installation über XAMPP-Paket auch für Schüler leicht machbar vorkonfigurierte Version (inkl. Datenbanken) ohne
Installationszwang kann den Schülern zur Verfügung gestellt werden
Es fehlen noch typische Konzepte relationaler Datenbanken Echte Fremdschlüssel-Überwachung Trigger …
• www.xampp.org • www.mysql.com
44
IN
FO
RM
AT
IK
Datenschutz
• Anknüpfungspunkt: www.schober.de
45
IN
FO
RM
AT
IK
Datenschutz
• Ein Blick ins Bundesdatenschutzgesetz:(http://bundesrecht.juris.de/bdsg_1990/ )
46
IN
FO
RM
AT
IK
Vernetzung des Themas - Datenschutz
• Datenbank-basierte Umfrage in der Schule Wie können durch Verknüpfen (eigentlich harmloser) Daten
neue Informationen gewonnen werden?
47
IN
FO
RM
AT
IK
Wahlfach Informatik im Leibniz-Gymnasium Pirmasens
FragenFragen