Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informationssysteme / Datenbankabfragen

Ähnliche Präsentationen


Präsentation zum Thema: "Informationssysteme / Datenbankabfragen"—  Präsentation transkript:

1 Informationssysteme / Datenbankabfragen
Thomas Mohr 24. April 2009

2 Was sagt der Lehrplan? Bedeutung von Datenbanken
Informationsdarstellung mit verknüpften Tabellen Erstellung von Abfragen mit einer Abfragesprache Sammlung personenbezogener Daten Missbrauch personenbezogener Daten Schutz personenbezogener Daten

3 Informationssysteme

4 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 Datenbanksystem DBS Datenbank (Datenbasis) Datenbankmanagementsystem DBMS, z.B. MySQL

5 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 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) Darstellung Anwendungsprogramm „Logik“ Datenbasis PC

7 Software-Architekturen - Client-Server
Darstellung Anwendungsprogramm „Logik“ Datenbasis Darstellung Anwendungsprogramm „Logik“ Client Server (Datenbank)Server Datenbasis

8 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 (Datenbank)Server Datenbasis Server Client Darstellung Anwendungsprogramm „Logik“ Datenbankzugriff aus Delphi heraus (Client-Server)

9 Software-Architekturen – Webarchitektur
Client Webclient (Browser) Darstellung Server Darstellung Anwendungsprogramm „Logik“ Webserver (z.B. Apache und PHP) „Logik“ Datenbankserver (z.B. MySQL) Datenbasis Server

10 Software-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 In realen Systemen werden heute meist noch mehr Schichten unterteilt, z.B. eine eigene Schicht für die Prozesslogik (z.B. Geschäftsprozesse in SAP) Datenbasis Datenbankserver (z.B. MySQL) Server

11 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 Hardware-Anforderungen an Webserver und Datenbankserver sehr unterschiedlich. Datenbankserver benötigt vor allem viel Hauptspeicher und Plattenplatz, Webserver vor allem Rechenstärke (PHP-Interpretation).

12 …bis hin zum Extrem einer Web Farm
Load Balancer Application Server Farm je 4 Prozessoren HACMP Fail-Over Production DB Server FailOver DB Server HACMP - High Availability Cluster Multi-Processing FDDI - Fibre Distributed Data Interface Shark - Tiger Shark is a parallel file system for IBM's AIX Operating System 32 GByte RAM 32 GByte RAM FDDI Switch 2,4 TByte

13 Relationale Datenbanken
Arten von Datenbanken Relationale Datenbanken Die Daten werden in Form von Tabellen gespeichert Zwischen den Tabellen werden Beziehungen aufgebaut (Relationen) Attribut (Merkmal, Spalte) Attributwert (Datenwert) Datensatz (Tupel) Attributklasse Land Name Einwohner Hauptstadt Kontinent Dänemark Kopenhagen Europa Deutschland Berlin Europa Indien Delhi Asien Rwanda Kigali Afrika

14 Relationale Datenbanken – typische Vertreter
Arten von Datenbanken Relationale Datenbanken – typische Vertreter Oracle IBM (DB/2) Microsoft SQL Server (Access ?) Informix MySQL PostGreSQL OpenSource Einen wesentlichen Fortschritt erzielte in den 1960er und 1970er Jahren Edgar F. Codd mit seiner Forschungsarbeit am IBM Almaden Research Center. Codd entwickelte die Grundlagen des ersten experimentellen relationalen Datenbanksystems System R. Die Berkeley Group folgte mit Ingres und der Abfragesprache QUEL. Oracle (damals noch unter den Firmennamen SDL und RSI) verwertete die Ergebnisse des System R und führte SQL zum kommerziellen Erfolg. IBM folgte mit SQL/DS und DB2. Die relationalen Datenbanksysteme verdrängten in den 1980ern die hierarchischen und netzwerkartigen Systeme und der Großteil der Behörden, Konzerne, Institute und mittelständischen Unternehmen stellte seine IT auf Datenbanksysteme um. Während in den 1990ern wenige kommerzielle Hersteller von Datenbank-Software faktisch den Markt beherrschten (namentlich IBM, Informix, Microsoft mit SQL Server und Oracle), erlangen in den 2000ern die Open-Source-Datenbankmanagementsysteme eine immer größere Bedeutung. Vor allem MySQL und PostgreSQL erzielten signifikante Marktanteile. Als Reaktion bieten die führenden kommerziellen Hersteller gebührenfreie Versionen ihrer Datenbank-Software an. Software-AG: Adabas Früher dBase (von Ashton Tate, dann von Borland gekauft): Dateibasiertes DBS mit eigener Zugriffssprache, später auch SQL-Unterstützung

15 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 Atomarität  Konten-Buchungsbeispiel Konsistenz  Definierte Bedingungen, Regeln werden eingehalten Isoliertheit Dauerhaftigkeit

16 SQL = Structured Query Language.
Abfragen 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. Tabelle anzeigen  SQL wird schon ausgegeben.

17 Datenbankzugriff mit SQL - Ein erstes Beispiel
SELECT Name, Einwohner, Kontinent FROM Land WHERE Einwohner > 10 Länder mit über 10 Mio. Einwohner Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda Kigali Afrika … … … … … Ergebnistabelle Name Einwohner Kontinent Deutschland Europa Indien Asien … … …

18 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 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.

20 Relationale 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. LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda 6.30 Kigali Afrika Land Schlüsselattribut Primärschlüssel anlegen für Tabelle „land“. Problem: Feld noch leer und kann daher nicht als Primärschlüssel verwendet werden (nicht eindeutig)

21 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. LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda Kigali Afrika LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF Land KNR Name EU Europa AS Asien AF Afrika Kontinent Beispiel-Datenbank: terra2.sql Schlüsselattribut aus Kontinent

22 Relationale 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 FKey PKey Data

23 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 DK Dänemark 5.16 EU D Deutschland EU IND Indien AS RWA Rwanda 6.30 AF Land KNR Name EU Europa AS Asien AF Afrika Kontinent

24 Cross-Join („jede Zeile mit jeder“)
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 EU IND Indien AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika Land Kontinent 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 EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

25 Einschränken auf „passende“ Datensätze.
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 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 EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

26 AND Land.Einwohner > 10
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 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 EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

27 Einschränken auf gesuchte Spalten.
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.KNR AND Land.Einwohner > 10 LNR Name Einwohner KNR KNR Name D Deutschland EU EU Europa IND Indien AS AS Asien … … … … … Name Einwohner Name Deutschland Europa Indien Asien … … … In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren.

28 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 … IND GOETTI Göttingen … D KARLSR Karlsruhe … D KOPENH Kopenhagen … DK Ort LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF Land Schlüsselattribut aus Land Datenbank: terra3.sql

29 Bisheriges „Schema“ der Datenbank
Ein erstes „E/R-Modell“ eigentlich intuitiv zu lesen!? Kontinent Teil von Land Ort Hauptstadt

30 Der Alias-Name für Land ist nicht notwendig (verkürzt die Abfrage)
SQL – 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.Einwohner> Land Ort Teil von Hauptstadt Der Alias-Name für Land ist nicht notwendig (verkürzt die Abfrage)

31 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 Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 Fluss ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Ort ONR HAMBUR PHNOMP KOBLEN Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden.

32 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 Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 Fluss ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Ort FNR LEI RHE Problem: Für Orte müssen mehrere Flüsse eingetragen werden. Lösung: Auslagerung der Zuordnung in eine eigene Tabelle

33 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 Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 Fluss ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Ort FNR ONR ELB HAMBUR RHE KOBLEN RHE KARLSR MOS KOBLEN Stadtfluss

34 Struktur der Datenbank terra4
Sprache n gesprochen m 1 n Teil von Land Ort Hauptstadt n 1 1 n Teil von durchfließt 1 m Kontinent Fluss

35 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 ONR Name AALBOR Dänemark KOPENH Dänemark BERLIN Deutschland DUESSE Deutschland MAINZ Deutschland TALLIN Estland Selbst zählen??? NEIN!

36 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änemark KOPENH Dänemark BERLIN Deutschland DUESSE Deutschland MAINZ Deutschland TALLIN Estland Name Anzahl Dänemark 2 Deutschland 3 Estland 1 3 1 2

37 Struktur der kompletten Datenbank „miniterra“
Sprache n gesprochen n m 1 n Teil von benachbart Land Ort Hauptstadt m n 1 1 n Teil von durchfließt m 1 1 Kontinent Fluss mündet n

38 SQL bietet noch einige weitere (hier nicht behandelte) Möglichkeiten:
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) Bsp. der Flüsse: SELECT o.Name, f.Name AS Fluss FROM Ort o LEFT OUTER JOIN (Stadtfluss sf JOIN Fluss f ON f.FNR=sf.FNR) ON o.ONR=sf.ONR ORDER BY o.Name  Besonders kompliziert, da Stadtfluss noch mit einem regulären Join mit Fluss verbunden werden muss.

39 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 Vernetzung des Themas - Koordinatensystem
Umrechnung Breiten/Längen-Angaben in Bildschirmkoordinaten

41 Vernetzung des Themas - Grenzen von SQL
Problem: „Verfolgen eines Flusslaufes“ von der Quelle zum Meer z.B. Spree Hier werden iterative Strukturen benötigt, die SQL (als mengen- orientierte Sprache) im Standard nicht bietet. Anknüpfung an Programmierung PHP, Delphi, Java Rhein Mosel Main Neckar Donau Isar Inn Fulda Werra Weser Elbe Havel Spree Aller Elbe Havel Spree Nordsee

42 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 Neckar Donau Isar Inn Fulda Werra Weser Elbe Havel Spree Aller Nordsee Rhein Mosel Main Neckar Fulda Werra Weser Aller Elbe Havel Spree Nordsee

43 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

44 Anknüpfungspunkt: www.schober.de
Datenschutz Anknüpfungspunkt:

45 Datenschutz Ein Blick ins Bundesdatenschutzgesetz: ( )

46 Vernetzung des Themas - Datenschutz
Datenbank-basierte Umfrage in der Schule Wie können durch Verknüpfen (eigentlich harmloser) Daten neue Informationen gewonnen werden?

47 Wahlfach Informatik im Leibniz-Gymnasium Pirmasens
Fragen


Herunterladen ppt "Informationssysteme / Datenbankabfragen"

Ähnliche Präsentationen


Google-Anzeigen