440 likes | 720 Views
Informationssysteme / Datenbankabfragen. Thomas Mohr. 24. April 2009. Bedeutung von Datenbanken Informationsdarstellung mit verknüpften Tabellen Erstellung von Abfragen mit einer Abfragesprache. Sammlung personenbezogener Daten Missbrauch personenbezogener Daten
E N D
Informationssysteme / Datenbankabfragen Thomas Mohr 24. April 2009
Bedeutung von Datenbanken • Informationsdarstellung mit verknüpften Tabellen • Erstellung von Abfragen mit einer Abfragesprache • Sammlung personenbezogener Daten • Missbrauch personenbezogener Daten • Schutz personenbezogener Daten Was sagt der Lehrplan?
Informationssystem DatenbanksystemDBS Erfassung Datenbankmanagementsystem DBMS, z.B. MySQL Speicherung Analyse Darstellung Datenbank (Datenbasis) Datenbank (Datenbasis) Was ist ein Informationssystem ? • Ein Informationssystem kann auf formalisierte Fragen eines Anwenders Antworten aus einer gegebenen Datenmenge geben • Komponenten eines Informationssystems:
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
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) Darstellung PC „Logik“ Anwendungsprogramm Datenbasis Software-Architekturen: „Standalone“-Programm
Darstellung Darstellung Anwendungsprogramm „Logik“ Client „Logik“ Anwendungsprogramm Datenbasis Datenbasis (Datenbank)Server Server Software-Architekturen - Client-Server
Darstellung Anwendungsprogramm „Logik“ Client Datenbasis (Datenbank)Server Server Software-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
Darstellung Client Webclient (Browser) Darstellung Anwendungsprogramm „Logik“ „Logik“ Webserver (z.B. Apache und PHP) Server Datenbasis Datenbankserver (z.B. MySQL) Server Software-Architekturen – Webarchitektur
Vorteile Keine Installation von zusätzlicher Software beim Client Nachteile http-Protokoll ohne Sessionverwaltung Software-Architekturen – Webarchitektur Darstellung Client Webclient (Browser) „Logik“ Webserver (z.B. Apache und PHP) Server Datenbasis Datenbankserver (z.B. MySQL) Server
Clients Webserver Datenbankserver 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.
2,4 TByte …bis hin zum Extrem einer Web Farm Load Balancer Application Server Farm je 4Prozessoren HACMP Fail-Over Production DB Server FailOver DB Server 32 GByte RAM 32 GByte RAM FDDI Switch
Attribut (Merkmal, Spalte) Attributwert (Datenwert) Attributklasse Datensatz (Tupel) Arten 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 5165000 Kopenhagen Europa Deutschland 81338000 Berlin Europa Indien 761000000 Delhi Asien Rwanda 6300000 Kigali Afrika
Arten von Datenbanken • Relationale Datenbanken – typische Vertreter • Oracle • IBM (DB/2) • Microsoft SQL Server (Access ?) • Informix • MySQL • PostGreSQL OpenSource
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
Ergebnistabelle Name Einwohner Kontinent Deutschland 81.34 Europa Indien 761.00 Asien … … … Datenbankzugriff mit SQL - Ein erstes Beispiel • SELECT Name, Einwohner, Kontinent FROM LandWHERE Einwohner > 10 Länder mit über 10 Mio. Einwohner Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland 81.34 Berlin Europa IND Indien 761.00 Delhi Asien RWA Rwanda 6.30 Kigali Afrika … … … … …
Frankreich??Problem: Europa wird unterschiedlich geschrieben! Lösung: Auslagerung in eine eigene Tabelle 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
Exkurs: Primärschlüssel • Wozu dient die Spalte LNR? • … ein anderes Beispiel: Eine Tabelle mit Städten. • Suche nach der Hauptstadt „Berlin“ • Suche nach der Hauptstadt „Washington“ Man benötigt noch das Land als Suchhilfe. Selbst das Land reicht als Suchhilfe nicht aus.
LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland 81.34 Berlin Europa IND Indien 761.00 Delhi Asien RWA Rwanda 6.30 Kigali Afrika Land Kontinent LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF KNR Name EU Europa AS Asien AF Afrika Schlüsselattribut aus Kontinent 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.
Land Kontinent LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland 81.34 EU IND Indien 761.00 AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika SQL – 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 KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – einfache Joins • Cross-Join („jede Zeile mit jeder“) • SELECT * FROM Land, Kontinent LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland 81.34 EU IND Indien 761.00 AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika Land Kontinent
WHERE Land.KNR= Kontinent.KNR LNR Name Einwohner KNR KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – 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
AND Land.Einwohner > 10 LNR Name Einwohner KNR KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – einfache Joins • 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 D Deutschland 81.34 EU EU Europa IND Indien 761.00 AS AS Asien … … … … … Name Einwohner Name Deutschland 81.34 Europa Indien 761.00 Asien … … … In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren. SQL – 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.KNRAND Land.Einwohner > 10
Ort Land ONR Name … LNR BANGAL Bangalore … IND GOETTI Göttingen … D KARLSR Karlsruhe … D KOPENH Kopenhagen … DK LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF Schlüsselattribut aus Land 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“.
Teil von Land Ort Hauptstadt Teil von Kontinent Bisheriges „Schema“ der Datenbank • Ein erstes „E/R-Modell“ • eigentlich intuitiv zu lesen!?
Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR HAMBUR PHNOMP KOBLEN KOBLEN ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden. 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?
Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen FNR LEI RHE RHE Problem: Für Orte müssen mehrere Flüsse eingetragen werden. Lösung: Auslagerung der Zuordnung in eine eigene Tabelle 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?
Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Stadtfluss FNRONR ELB HAMBUR RHE KOBLEN RHE KARLSR MOS KOBLEN 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.
Struktur 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
ONR Name AALBOR Dänemark KOPENH Dänemark BERLIN Deutschland DUESSE Deutschland MAINZ Deutschland TALLIN Estland 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änemark KOPENH Dänemark BERLIN Deutschland DUESSE Deutschland MAINZ Deutschland TALLIN Estland Name Anzahl Dänemark 2 Deutschland 3 Estland 1 2 3 1 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
Struktur 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
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) • …
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
Vernetzung des Themas - Koordinatensystem • Umrechnung Breiten/Längen-Angaben in Bildschirmkoordinaten
Nordsee Elbe Elbe Havel Havel Aller Spree Spree Weser Rhein Fulda Werra Main Mosel Neckar Donau Inn Isar Vernetzung 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
Nordsee Nordsee Elbe Elbe Havel Havel Aller Aller Spree Spree Weser Weser Rhein Rhein Fulda Fulda Werra Werra Main Main Mosel Mosel Neckar Neckar Donau Inn Isar Vernetzung des Themas - Grenzen von SQL • Problem: „Verfolgen eines Flusslaufes“ • vom Meer zu den Zuflüssenz.B. Nordsee • Beispiel für eine (elegante?)rekursive Programmierung
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
Datenschutz • Anknüpfungspunkt: www.schober.de
Datenschutz • Ein Blick ins Bundesdatenschutzgesetz:(http://bundesrecht.juris.de/bdsg_1990/ )
Vernetzung des Themas - Datenschutz • Datenbank-basierte Umfrage in der Schule • Wie können durch Verknüpfen (eigentlich harmloser) Daten neue Informationen gewonnen werden?
Fragen Fragen Wahlfach Informatik im Leibniz-Gymnasium Pirmasens