INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr 24. April 2009.

Post on 06-Apr-2015

107 views 0 download

Transcript of INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr 24. April 2009.

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