Title: Informationssysteme / Datenbankabfragen
1Informationssysteme / Datenbankabfragen
2Informationssysteme
3Was ist ein Informationssystem ?
- Ein Informationssystem kann auf formalisierte
Fragen eines Anwenders Antworten aus einer
gegebenen Datenmenge geben - Komponenten eines Informationssystems
4Ein Ausgangspunkt im Unterricht
- Schüler führen eine Internet-Recherche
durchNachbarländer Deutschlands Fläche,
Einwohner, Hauptstadt - Nutzung eines Informationssystems
- Unterschiedliche Darstellung der Informationen
5Software-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)
6Software-Architekturen - Client-Server
7Software-Architekturen - Client-Server
- 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
8Software-Architekturen Webarchitektur
9Software-Architekturen Webarchitektur
- Vorteile
- Keine Installation von zusätzlicher Software beim
Client
- Nachteile
- http-Protokoll ohne Sessionverwaltung
Darstellung
Client
Webclient (Browser)
Logik
Webserver (z.B. Apache und PHP)
Server
Datenbasis
Datenbankserver (z.B. MySQL)
Server
10Typische 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.
11bis hin zum Extrem einer Web Farm
Load Balancer
Application Server Farm
je 4 Prozessoren
HACMP Fail-Over
Production DB Server
FailOver DB Server
32 GByte RAM
32 GByte RAM
FDDI Switch
12Arten von Datenbanken
- Relationale Datenbanken
- Die Daten werden in Form von Tabellen gespeichert
- Zwischen den Tabellen werden Beziehungen
aufgebaut (Relationen)
Land
Name Einwohner Hauptstadt Kontinent Dänemark 51650
00 Kopenhagen Europa Deutschland 81338000
Berlin Europa Indien 761000000
Delhi Asien Rwanda 6300000 Kigali Afrika
13Arten von Datenbanken
- Relationale Datenbanken typische Vertreter
- Oracle
- IBM (DB/2)
- Microsoft SQL Server (Access ?)
- Informix
- MySQL
- PostGreSQL
OpenSource
14Abfragen mit SQL
- SQL Structured Query Language.
- Bezeichnet eine Sprache zur Kommunikation mit
Datenbanken. - Ist international genormt und wird von vielen DBS
verstanden. - Wird im Folgenden zur Formulierung von Abfragen
eingesetzt. - Syntax einer (einfachen) SQL-Abfrage
- SELECT Spalten
- FROM Tabelle
- WHERE Bedingung
- ORDER BY Attribute
- Die WHERE- und die ORDER BY-Klausel sind
optional.
15Datenbankzugriff - Ein erstes Beispiel
- SELECT Name, Einwohner, Kontinent FROM Land
WHERE Einwohner gt 10
Länder mit über 10 Mio. Einwohner
Land
LNR Name Einwohner Hauptstadt Kontinent DK Dänemar
k 5.16 Kopenhagen Europa D Deutschland 81.34
Berlin Europa IND Indien 761.00
Delhi Asien RWA Rwanda 6.30 Kigali Afrika
16Ein 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 gt 20
17Relationale 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.
18Relationale Datenbank Aufbau
- Jeder Datensatz wird durch einen Schlüssel
(Primärschlüssel) eindeutig identifiziert. Der
Schlüssel - kann aus mehreren Attributen zusammengesetzt
werden. - ist minimal, d.h. es kann kein Attribut
weggelassen werden. - Oft wird ein zusätzliches, eindeutiges
Schlüsselattribut hinzugefügt,z.B. eine
Landeskennung - wird meist durch Unterstreichung gekennzeichnet.
19Relationale Datenbanken Beziehungen
- Zwischen den Tabellen bestehen Beziehungen
(Relationen) - z.B. Kontinent eines Landes
- Die Verknüpfung erfolgt grundsätzlich dadurch,
- dass ein Fremdschlüssel der einen Tabelle
- auf den zugehörigen Primärschlüssel der anderen
Tabelle zeigt. - Vorteile
- Daten werden jeweils nur in einer Tabelle
gespeichert. - Datenänderungen sind leichter durchzuführen.
- Strukturänderungen (z.B. das Hinzufügen der
Kontinentfläche) lassen sich meist mit geringem
Aufwand realisieren. - Die Struktur lässt flexiblere Abfragen zu.
Master
Detail
PKey Data
PKey Data FKey
20SQL 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.
21SQL einfache Joins
- Cross-Join (jede Zeile mit jeder)
- SELECT FROM Land, Kontinent
LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deuts
chland 81.34 EU IND Indien 761.00 AS RWA Rwanda 6.
30 AF
KNR Name EU Europa AS Asien AF Afrika
Land
Kontinent
22SQL einfache Joins
- 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
23SQL einfache Joins
- Einschränken auf passende Datensätze (2).
- Es sollen nur Länder mit gt 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
24SQL einfache Joins
- 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 gt 10
25Erweiterung 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.
26Bisheriges Schema der Datenbank
- Ein erstes E/R-Modell
- eigentlich intuitiv zu lesen!?
27SQL Tabellen-Alias
- Soll in SQL auf eine Tabelle mehrfach zugegriffen
werden, so kann dies mit Alias-Namen geschehen - Es sollen alle Städte mit mehr als 1 Mio.
Einwohner ausgegeben werden dabei auch das
zugehörige Land mit Hauptstadt. - logische Struktur
- SELECT o.Name AS Stadt, l.Name AS Land, hs.Name
FROM Ort o, Land l, Ort hs WHERE o.LNR l.LNR
AND l.HauptONR hs.ONR AND
o.Einwohnergt10000000
Der Alias-Name für Land ist nicht notwendig
(verkürzt die Abfrage)
28Erweiterung 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?
29Erweiterung 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?
30Erweiterung 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.
31Struktur der Datenbank terra4
Sprache
n
gesprochen
1
n
m
Teil von
Land
Ort
Hauptstadt
n
1
1
n
Teil von
durchfließt
1
m
Kontinent
Fluss
32Gruppieren 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!
33Gruppieren 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
34Struktur der kompletten Datenbank miniterra
Sprache
n
gesprochen
n
1
n
m
Teil von
benachbart
Land
Ort
Hauptstadt
m
n
1
1
n
Teil von
durchfließt
m
1
1
mündet
Kontinent
Fluss
n
35u.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)
36Vernetzung des Themas - Grenzen von SQL
- Problem Verfolgen eines Flusslaufes
- von der Quelle zum Meerz.B. Spree
- Hier werden iterative Strukturenbenötigt, die
SQL (als mengen-orientierte Sprache) im Standard
nicht bietet. - Anknüpfung an Programmierung
- PHP, Delphi, Java
37Vernetzung des Themas - Grenzen von SQL
- Problem Verfolgen eines Flusslaufes
- vom Meer zu den Zuflüssenz.B. Nordsee
- Beispiel für eine (elegante?)rekursive
Programmierung
38Vernetzung des Themas - Auswertungen
- Grafische Auswertung der Datenbank(z.B. Anzahl
der Länder pro Kontinent) - über Werkzeuge (z.B. Excel)
- über selbst erstellte Programme
39Vernetzung des Themas - Datenschutz
- Datenbank-basierte Umfrage in der Schule
- Wie können durch Verknüpfen (eigentlich
harmloser) Daten neue Informationen gewonnen
werden?
40Welches 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
41Wahlfach Informatik im Leibniz-Gymnasium Pirmasens