113
I N F O R M A T I K Informationssysteme / Datenbankabfragen Thomas Mohr

INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

Embed Size (px)

Citation preview

Page 1: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

I N F O R M A T I K

Informationssysteme / Datenbankabfragen

Thomas Mohr

Page 2: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

2

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?Datenbanken – Wozu?

Page 3: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

3

IN

FO

RM

AT

IKInformationssysteme

Page 4: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

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

Page 5: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

5

IN

FO

RM

AT

IK

Was ist ein Informationssystem ?

• Datenbasis / Datenbank Menge von Daten, die aus Sicht der Systembetreiber in

irgendeiner Weise als zusammengehörig betrachtet werden. Angereichert um weitere Daten, die das DBMS zur Erfüllung

seiner Aufgaben benötigt, bilden sie eine Datenbank (DB).

• Datenbankverwaltungssystem (DBMS) Softwareprodukte für die dauerhafte, integre und

anwendungsunabhängige Speicherung und Verwaltung von großen, mehrfachbenutzbaren integrierten Datenbasen

• Datenbanksystem Ein Datenbanksystem (DBS) besteht aus einem DBMS und

einer oder mehreren Datenbanken

• Informationssystem Ein Informationssystem erweitert die Datenbank um eine

Reihe von Werkzeugen zur Abfrage, Darstellung, Transformation und Analyse von Daten

Page 6: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

6

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

Page 7: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

7

IN

FO

RM

AT

IK

Software-Architekturen: „Standalone“-Programm

• z.B. selbst programmierte Schülerdatei in Delphi programmierte Übersicht von Länderinformationen

PCDarstellung

Anwendungsprogramm „Logik“

Datenbasis

Page 8: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

8

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

Page 9: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

9

IN

FO

RM

AT

IK

(Datenbank)Server Datenbasis

Darstellung

Anwendungsprogramm „Logik“

Datenbasis

Software-Architekturen - Client-Server

• z.B. Outlook und Exchange-Server „einfache“, datenbank-basierte Schülerverwaltung

Server

ClientDarstellung

Anwendungsprogramm„Logik“

Page 10: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

10

IN

FO

RM

AT

IK

Software-Architekturen - Client-Server

• z.B. Outlook und Exchange-Server „einfache“, datenbank-basierte Schülerverwaltung

(Datenbank)Server Datenbasis

Server

ClientDarstellung

Anwendungsprogramm„Logik“

Page 11: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

11

IN

FO

RM

AT

IK

(Datenbank)Server Datenbasis

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

Server

ClientDarstellung

Anwendungsprogramm„Logik“

Page 12: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

12

IN

FO

RM

AT

IK

Datenbankserver (z.B. MySQL) Datenbasis

Darstellung

Anwendungsprogramm„Logik“

Software-Architekturen – Webarchitektur

• Eine moderne 3-schichtige Webarchitektur…

Webclient (Browser) Darstellung

Webserver (z.B. Apache und PHP) „Logik“

Server

Server

Client

Page 13: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

13

IN

FO

RM

AT

IK

Software-Architekturen – Webarchitektur

• Eine moderne 3-schichtige Webarchitektur…

Webclient (Browser)

Webserver (z.B. Apache und PHP)

Datenbankserver (z.B. MySQL)

Darstellung

„Logik“

Datenbasis

Server

Server

Client

Page 14: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

14

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

Page 15: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

15

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

Page 16: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

16

IN

FO

RM

AT

IK

… und zum Testen / für die Fortbildung?

• Alle drei Schichten sind auf einem Rechner!

Datenbankserver

Webserver

Clients InternetExplorer

Apache

MySQL

ClientWebserver

Datenbankserver

Page 17: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

17

IN

FO

RM

AT

IK

Das andere Extrem – eine 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

Page 18: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

18

IN

FO

RM

AT

IK

Arten von Datenbanken

• Man unterscheidet verschiedene Arten von Datenbanken:

• Hierarchische Datenbanken Die Datenelemente sind baumartig miteinander verbunden

• Vernetzte Datenbanken Die Datenelemente sind mit Zeigern zu einem Netz

miteinander verbunden

• Beide Formen waren vor allem bei Großrechnern im Einsatz und werden zunehmend von relationalen Datenbanken abgelöst

Page 19: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

19

IN

FO

RM

AT

IK • Relationale Datenbanken

Die Daten werden in Form von Tabellen gespeichert Zwischen den Tabellen werden Beziehungen aufgebaut

(Relationen)

Objektrelationale Datenbanken• erweitern die relationalen Datenbanken und objektorientierte

Funktionen (z.B. Vererbung)

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

Page 20: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

20

IN

FO

RM

AT

IK

Arten von Datenbanken

• Relationale Datenbanken – typische Vertreter Oracle IBM (DB/2) Microsoft SQL Server (Access ?) Informix MySQL PostGreSQL

OpenSource

Page 21: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

21

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

Page 22: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

22

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?

Abfragesprachesprache SQL

Datenbanken – Wozu?

Page 23: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

23

IN

FO

RM

AT

IK

MySQL – Jetzt wird es (endlich) praktisch…

• Starten Sie den Datenbankserver und den Webserver

• Das Datenbanksystem bietet einen Service für andere Rechner an Die Windows-Firewall kann dies melden.

Der Port muss freigegeben werden.

Page 24: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

24

IN

FO

RM

AT

IK

Die erste Datenbank importieren

• Die Administration von MySQL funktioniert selbst schon am einfachsten über den Browser Webarchitektur http://localhost/phpmyadmin

Datenbankserver

Webserver

Client

Browser

Apache

MySQL

Page 25: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

25

IN

FO

RM

AT

IK

Die erste Datenbank importieren

• Legen Sie eine neue Datenbank „terra1“ an.

• Wählen Sie den Punkt „Importieren“ und suchen die Datei„terra1.sql“

Page 26: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

26

IN

FO

RM

AT

IK

Die erste Tabelle…

• Klicken Sie auf „Struktur“: Die Tabelle „land“ wird angezeigt.

• Lassen Sie sich den Inhalt der Tabelle anzeigen.

Page 27: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

27

IN

FO

RM

AT

IK

LNR Name Einwohner Hauptstadt Kontinent

DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.33 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika

Land

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.

Schlüsselattribut

Page 28: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

28

IN

FO

RM

AT

IK

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.

Page 29: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

31

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)

Veranschaulichendes Beispiel

Länder mit über 10 Mio.

Einwohner

Ergebnistabelle

Name Einwohner Kontinent

Deutschland 81.34 EuropaIndien 761.00 Asien… … …

Page 30: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

32

IN

FO

RM

AT

IK

SQL – WHERE

• Bedingungen mit Textattributen: Name = 'Deutschland' Name LIKE 'P%' (Paraguay, Polen,

Portugal) Name LIKE 'I_land' (Irland, Island)

• Bedingungen mit Zahlattributen: Stufe=7 (gleich 7) Stufe<>7 (ungleich 7) Stufe<7 (kleiner 7) Stufe>7 (größer 7) Stufe<=7 (kleiner gleich 7) Stufe>=7 (größer gleich 7) Stufe BETWEEN 7 AND 10 (zwischen 7 und 10)

Page 31: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

33

IN

FO

RM

AT

IK

SQL – WHERE

• Vergleich auf Nullwert (kein Attributwert angegeben):LNR IS NULL

• Logische Verknüpfungen: NOT (Kontinent='Europa')

(Kontinent nicht Europa)

(Kontinent='Europa') AND (Einwohner<1)

(Zwergstaaten in Europa)

(Kontinent='Europa') OR (Kontinent='Asien')

(Länder in Eurasien)

Page 32: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

34

IN

FO

RM

AT

IK

SQL – ORDER BY

• Das Abfrageergebnis kann sortiert werden:

SELECT [Spalten]

FROM [Tabelle]

WHERE [Bedingung]

ORDER BY [Attribute];

• Die Sortierung geschieht nach dem angegebenen Attribut.• Bei mehreren Sortierattributen wird nach dem zweiten

(dritten...) sortiert, sobald die Werte des ersten (zweiten...) identisch sind.

• Absteigende Sortierung mit DESC

• Beispiele:SELECT * FROM Land ORDER BY Name

SELECT * FROM Land ORDER BY Kontinent, Einwohner DESC

Page 33: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

35

IN

FO

RM

AT

IKDie ersten SQL Befehle

• Öffnen Sie das SQL-Fenster

1. Geben Sie alle Länder aus!

2. Geben Sie alle Länder aus: Name, Einwohner, Hauptstadt Sortierung nach Einwohner absteigend

SELECT * FROM Land

SELECT Name, Einwohner, Hauptstadt FROM Land ORDER BY Einwohner DESC

Page 34: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

36

IN

FO

RM

AT

IK

Aufgaben, Datenbank: terra1

3. Welche Länder liegen in Asien und Australien?

4. Welche Länder haben zwischen 10 und 100 Mio. Einwohner? Absteigend nach Einwohner sortiert

WHERE Kontinent='Asien' OR Kontinent='Australien'

WHERE Einwohner BETWEEN 10 AND 100 ORDER BY Einwohner DESC

Page 35: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

37

IN

FO

RM

AT

IK

Hilfsfunktionen

• Wichtig sind vor allem Funktionen zur Manipulation von Strings und Datumsangaben, z.B. DATEDIFF(D1, D2) Differenz (Tage) NOW() Aktuelle Zeit/Datum (SELECT

CURDATE())

• Wichtige Stringfunktionen CONCAT(S1,S2,…) Verbinden von Strings LOWER(),UPPER() In Groß-/Kleinbuchstaben

umwandeln CHAR_LENGTH() Länge in Zeichen MID(str,pos,len) String ausschneiden TRIM(s), LTRIM, RTRIM Abschneiden von Leerzeichen …

• Weitere Funktionen online in der Hilfe zu MySQL!

SQL ist hier nicht standardisiert Die Funktionen sind bei anderen DBS oft unterschiedlich

Page 36: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

38

IN

FO

RM

AT

IK

Aufgaben, Datenbank: terra1

5. Geben Sie die Länder in folgender Form aus:

6. Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner? WHERE Kontinent = 'Europa'

AND Einwohner > 20

Frankreich??Problem: Europa wird unterschiedlich geschrieben!

Lösung: Auslagerung in eine eigene Tabelle

Spalten können mit „AS“ umbenannt werden

CONCAT(UPPER(Name),' - ',Hauptstadt) AS Land,round(Einwohner) AS "Mio. Einwohner"

Page 37: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

39

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

Page 38: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

40

IN

FO

RM

AT

IK

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.

PKey DataPKey Data FKey

Master Detail

Page 39: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

41

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

Page 40: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

42

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

Page 41: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

43

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

Page 42: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

44

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… … … … …

Page 43: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

45

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… … … … …

Page 44: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

46

IN

FO

RM

AT

IK 1. Geben Sie alle Kontinente mit ihren Ländern aus:

Name der Kontinente und Länder Sortierung nach Kontinent absteigend

2. In welchen Kontinenten gibt es Länder mit mehr als 100 Mio. Einwohner?

SELECT Kontinent.Name FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 100

SELECT DISTINCT Kontinent.Name FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 100

Aufgaben, Datenbank: terra2

SELECT Kontinent.Name, Land.Name FROM Kontinent, Land WHERE Kontinent.KNR = Land.KNR ORDER BY Kontinent.Name DESC

Problem: Es werden Duplikate angezeigt

Lösung: DISTINCT-Anweisung

Page 45: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

47

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

Page 46: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

48

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!?

Finden Sie die Stelle in der Datenbank terra3,

an der die „Hauptstadt“ abgespeichert ist?

Page 47: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

49

IN

FO

RM

AT

IK 1. Geben Sie alle Orte mit ihren Ländern aus:

Name der Orte und Länder Sortierung nach Einwohnerzahl absteigend

2. Geben Sie alle Länder mit ihrer Hauptstadt aus! Sortierung nach Kontinent und Land.

SELECT Kontinent.Name AS Kontinent, Land.Name, Ort.Name AS Hauptstadt FROM Ort, Land, Kontinent WHERE Ort.ONR = Land.HauptONR AND Land.KNR = Kontinent.KNR ORDER BY Kontinent.Name, Land.Name

Aufgaben, Datenbank: terra3

SELECT Ort.Name, Ort.Einwohner, Land.Name AS Land FROM Ort, Land WHERE Ort.LNR = Land.LNR ORDER BY Ort.Einwohner DESC

Page 48: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

50

IN

FO

RM

AT

IKSQL – 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>10000000

Der Alias-Name für Land ist nicht

notwendig (verkürzt die

Abfrage)

Land OrtTeil von HauptstadtOrt

Page 49: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

51

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.

Page 50: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

52

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

Page 51: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

53

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

Page 52: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

54

IN

FO

RM

AT

IK

Struktur der Datenbank terra4

Kontinent

Teil von

Land

Fluss

Ort

Teil von

durchfließt

n

1

1 n

Hauptstadt1 1 n

m

Page 53: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

55

IN

FO

RM

AT

IK

Aufgaben, Datenbank: terra4

1. Welche Orte liegen an der Donau?

2. Welche Länder durchfließt die Donau?

3. Welche Flüsse fließen durch Deutschland?

SELECT o.Name FROM Ort o, Stadtfluss sf, Fluss f WHERE o.ONR = sf.ONR AND sf.FNR = f.FNR AND f.Name = 'Donau'

SELECT DISTINCT l.Name FROM Land l, Ort o, Stadtfluss sf, Fluss f WHERE l.LNR = o.LNR AND o.ONR = sf.ONR AND sf.FNR = f.FNR AND f.Name = 'Donau'

SELECT DISTINCT f.Name, f.Laenge FROM Fluss f, StadtFluss sf, Ort o, Land l WHERE f.FNR = sf.FNR AND sf.ONR = o.ONR AND o.LNR = l.LNR AND l.Name = 'Deutschland'

Page 54: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

56

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

Page 55: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

57

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

Page 56: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

58

IN

FO

RM

AT

IK

Aufgaben, Datenbank: terra4

1. Wie viele Staaten haben Megacities (> 5 Mio. Einwohner) als Hauptstadt?

2. Zählen Sie die Staaten pro Kontinent! Geben Sie die Kontinente nach der Anzahl absteigend aus.

SELECT COUNT(*) FROM Land L, Ort O WHERE O.ONR = L.HauptONR AND O.Einwohner > 5000000 ORDER BY O.Einwohner DESC

SELECT K.Name, COUNT(*) AS Anzahl FROM Ort O, Land L, Kontinent K WHERE O.ONR = L.HauptONR AND L.KNR = K.KNR AND O.Einwohner > 5000000 GROUP BY K.Name ORDER BY Anzahl DESC

GROUP BY entfällt, wenn „nur“ gezählt

wird.

Page 57: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

59

IN

FO

RM

AT

IK

Aufgaben, Datenbank: terra4

3. Wie viele Einwohner haben die Länder pro Kontinent im Schnitt?

4. Welche Städte liegen an mehr als einem Fluss?

SELECT k.Name AS Kontinent, AVG(l.Einwohner) AS Schnitt FROM Kontinent k, Land l WHERE k.KNR = l.KNR GROUP BY k.Name ORDER BY k.Name

SELECT o.Name, COUNT(*) AS Anzahl FROM Ort o, StadtFluss sf WHERE o.ONR = sf.ONR GROUP BY o.NameHAVING COUNT(*)>1 ORDER BY o.Name

Weitere BuiltIn-Funktionen:

MAX, MIN, SUM,…

Page 58: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

60

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

Page 59: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

61

IN

FO

RM

AT

IK

Für Experten…

• Welche Städte liegen an mehr als einem Fluss? Welche Flüsse sind es jeweils?

• Welche Länder grenzen an Deutschland?

SELECT o.Name, f.Name FROM Ort o, StadtFluss sf1, Fluss f WHERE o.ONR = sf1.ONR AND f.FNR = sf1.FNR AND EXISTS (SELECT NULL FROM StadtFluss sf2 WHERE sf1.FNR<>sf2.FNR AND sf2.ONR=o.ONR) ORDER BY o.Name

SELECT l1.Name, l2.Name FROM Nachbarland n, Land l1, Land l2 WHERE (n.LNR1='D' OR n.LNR2='D') AND l1.LNR = n.LNR1 AND l2.LNR = n.LNR2

Page 60: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

62

IN

FO

RM

AT

IK

Für Experten…

• Welche Länder grenzen an Deutschland? Geben Sie nur die Nachbarländer aus!

• Welche Flüsse münden in den Rhein?

SELECT IF(l1.LNR='D',l2.Name, l1.Name) AS "Direkte Nachbarn" FROM Nachbarland n, Land l1, Land l2 WHERE (n.LNR1='D' OR n.LNR2='D') AND l1.LNR = n.LNR1 AND l2.LNR = n.LNR2 ORDER BY "Direkte Nachbarn"

SELECT fc.Name FROM Fluss fp, Fluss fc WHERE fp.FNR = fc.ZielFNR AND fp.Name = 'Rhein'

ACHTUNG:Nicht genormt!

Selbstreferenz der Tabelle Fluss

Page 61: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

63

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) …

Page 62: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

64

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?

Abfragesprachesprache SQL

Verwaltung MySQL

Page 63: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

65

IN

FO

RM

AT

IK

Verwaltung des Datenbanksystems

• In einem Datenbanksystem müssen Rechte für verschiedene Benutzer verwaltet werden: MySQL arbeitet nach der Installation ohne Schutz des

Administrators• Jeder kann auf alle Datenbanken zugreifen und diese verändern

Mehrere Schüler sollen sich einen Datenbankserver „teilen“, dabei sich aber nichts gegenseitig „kaputtmachen“

• Die Rechte können sehr fein vergeben werden, am Wichtigsten sind: SELECT: Benutzer kann Tabellen

auslesen INSERT/UPDATE/DELETE: Tabelleninhalte dürfen

verändert werden CREATE/ALTER/…: Tabellenstruktur darf

verändert werden

Page 64: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

66

IN

FO

RM

AT

IK

MySQL – Passwort für Administrator vergeben

• Anmeldetyp für phpMyAdmin ändern Ins Verzeichnis xampp\phpmyadmin wechseln. Datei config.inc.php mit Notepad öffnen Zeile $cfg['Servers'][$i]['auth_type'] = ‘config';

ändern auf $cfg['Servers'][$i]['auth_type'] = 'http';

Page 65: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

67

IN

FO

RM

AT

IK

MySQL – Passwort für Administrator vergeben

• phpMyAdmin in Browser starten Menüpunkt „Rechte“ Benutzer „root“ auswählen und bearbeiten

Passwort eingeben und speichern Beim nächsten Aufruf von phpMyAdmin ist die Eingabe des

Passworts notwendig

Page 66: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

68

IN

FO

RM

AT

IK

Benutzer / Rechte vergeben

• Über den gleichen Dialog können weitere Benutzer angelegt werden und Rechte auf den Datenbanken vergeben werden z.B. für einen zentralen Datenbankserver sollen pro

Schülergruppe „exklusive“ Datenbanken zur Verfügung gestellt werden

Page 67: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

69

IN

FO

RM

AT

IK

Benutzer / Rechte vergeben

• Soll sich auch der Administrator (root) von anderen Rechnern aus anmelden können, so muss dies separat konfiguriert werden. Bei jedem Benutzer ist angegeben, von welchem Rechner

aus eine Anmeldung möglich ist. Menüpunkt „Rechte“ Benutzer „root“ auswählen und bearbeiten

Page 68: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

70

IN

FO

RM

AT

IK

Benutzer anlegen

1. Schützen Sie den Administrator-Zugang für ihren mySQL-Server wie zuvor beschrieben.

2. Legen Sie einen Benutzer „ifb“ und Passwort „Speyer“ an. Dieser soll die Leserechte (SELECT) auf der Datenbank „miniterra“ erhalten.

3. Versuchen Sie, mit diesem Benutzer auf die Datenbank des Nachbarn / der Nachbarin zuzugreifen.

Page 69: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

71

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?

Verwaltung MySQL

Datenbankmodellierung

Page 70: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

72

IN

FO

RM

AT

IK

Ein neues Informationssystem… Anforderungskatalog

Schulverwaltung

• Die Benutzer können eine Liste aller Lehrer mit ihrem Dienstkürzel abrufen.

• Für jede Klasse ist eine Liste der durchgeführten Klassenfahrten mit dem leitenden Lehrer ersichtlich.

• StD L. Lämpel übernimmt dieses Jahr die 7a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren.

• Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach.

• StR A. Kribich hat sich fortgebildet und darf ab diesem Jahr neben Mathematik und ev. Religion auch Informatik unterrichten. Die Fachschaftsliste muss aktualisiert werden.

• Nachdem LiA Sch. Merz in Rente gegangen ist, geht die Fachbereichsleitung in Sport an OStR‘ G. Lenk.

Page 71: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

73

IN

FO

RM

AT

IK

• Die Benutzer können eine Liste aller Lehrer mit ihrem Dienstkürzel abrufen.

• StD L. Lämpel übernimmt dieses Jahr die 7a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren.

• Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach.

• …

?

Datenmodell

Repräsentation der Informationen als

strukturierte Daten

Modellbildung

• Um ein Informationssystem zu erstellen, muss ein Ausschnitt der realen Welt („Miniwelt“) im Computersystem erfasst werden.

Miniwelt

Unstrukturierte Informationen über

die Miniwelt

Page 72: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

74

IN

FO

RM

AT

IK

Modellbildung

• Um aus einer Beschreibung einer Miniwelt das Datenmodell einer Datenbank abzuleiten, bietet es sich an, zunächst ein grafisches Konzept der Daten zu erstellen.

Text

ExterneSicht

KonzeptionelleSicht

InternesModell

(z.B. relationalesDatenmodell)

Page 73: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

75

IN

FO

RM

AT

IK

Konzeptionelles Modell – E/R-Diagramme

• E/R-Diagramme dienen dazu, das konzeptionelle Modell des Informationssystems zu erstellen. Es werden zwei Konstrukte verwendet: Entitätstypen Beziehungstypen (Relationships)

• Eine Entität ist ein bestimmtes Objekt der realen Welt oder unserer Vorstellung z.B. eine Person, ein Gegenstand, ein Ereignis

• Entitäten mit gleichen Eigenschaften werden zu Entitätstypen zusammengefasst Symbol: Rechteck

Lehrer

Page 74: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

76

IN

FO

RM

AT

IK

E/R-Diagramme - Entitätstyp

• Beispiel Entitätstyp: Entität: Lehrer Lämpel, Kürzel Lä Entitätstyp: Menge aller Lehrer mit den Merkmalen

Vorname,Nachname, Kürzel, …

Primärschlüssel: Kürzel (?) (oder ein künstlicher Schlüssel)

Entitätstyp„Lehrer“

Kürzel: LäName: LämpelVorname: LudwigTitel: StD

3 Entitäten

Kürzel: KrName: KribichVorname: AlfredTitel: StR

Kürzel: LeName: LenkVorname: GertrudTitel: OStR'

Page 75: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

77

IN

FO

RM

AT

IK

Klasse

E/R-Diagramme - Beziehungstyp

• Gleichartige Beziehungen zwischen Entitäten werden als ein Beziehungstyp zwischen den Entitätstypen definiert. Symbol: Raute

• Beispiel: Ein Lehrer führt Klassenfahrten durch.

Lehrer

Kuerzel: MeName: Merz

Kuerzel: KrName: Kribich

Kuerzel: LäName: Lämpel

Stufe: 12Teil: m3

Stufe: 11Teil: M1

Stufe: 8Teil: a

Entitätstyp Entitätstyp

Klassenfahrt

Beziehungstyp

Beziehungen

Page 76: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

78

IN

FO

RM

AT

IK

Modellierung oft nicht eindeutig

• Die Beziehung „Klassenfahrt“ könnte man auch als eigenen Entitätstyp modellieren. Modellierung ist oft nicht eindeutig, es gibt je nach Ansicht

mehrere sinnvolle Modelle für eine Miniwelt.

KlasseLehrer

führt durch Klassenfahrt nimmt

teil

Page 77: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

79

IN

FO

RM

AT

IK

E/R-Diagramme - Attribute

• Die Eigenschaften aller Entitäten und Beziehungen eines Entitätstyps bzw. eines Beziehungstyps werden mit Hilfe von Attributen erfasst. Symbol: Ellipse

• Beispiel:

KlasseLehrer Klassenfahrt

NameKürzel

Vornameidentifizierend

beschreibend

Teil

Anzahl

StufeDatum

Ziel

Page 78: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

80

IN

FO

RM

AT

IK

E/R-Diagramme – Kardinalität

• Ein Beziehungstyp wird durch die Kardinalität genauer bezeichnet: 1:n- Beziehung am Beispiel: Klassenzuordnung der Schüler

SchülerKlasse angehören

Name: 9a

Name: 9b

Name: 10d

Name: Müller Vorname: Yvonne

Name: Meier Vorname: Jan

Name: Dietz Vorname: Nicole

Name: Seiler Vorname: Manfred

Klasse Schüler

1 n

Ein Schüler gehört einer Klasse an. Einer Klasse gehören mehrere Schüler an.

Page 79: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

81

IN

FO

RM

AT

IK

E/R-Diagramme – Kardinalität

• n:m – Beziehung am Beispiel: Kurszuordnung von Schülern in der MSS

SchülerKurs besucht

Fach: Mathe LK: ja

Fach: Deutsch LK: ja

Fach: Englisch LK: ja

Kurs Schüler

n m

Ein Kurs hat mehrere Schüler. Ein Schüler nimmt an mehreren Kursen teil.

Name: Müller Vorname: Yvonne

Name: Meier Vorname: Jan

Name: Dietz Vorname: Nicole

Name: Seiler Vorname: Manfred

Page 80: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

82

IN

FO

RM

AT

IK

E/R-Diagramme – Kardinalität

• Die Kardinalitäten (1:1, 1:n, n:m) geben nur an, wie viele Entitäten maximal miteinander verbunden sind.

Bsp.: Ein Schüler ist maximal einer Klasse zugeordnet.Einer Klasse sind maximal n Schüler zugeordnet.

• Die Kardinalität kann zusätzlich eingeschränkt werden.

Bsp.: Eine Klasse hat minimal 8 und maximal 30 Schüler.

SchülerKlasse angehören1 n

SchülerKlasse angehören1 n

[8,30][1,1]

Page 81: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

83

IN

FO

RM

AT

IK

Personen

E/R-Diagramme – Reflexive Beziehungstypen

• Beziehungen können auch auf dem gleichen Entitätstyp gelten, Selbstbeziehung oder Reflexive Beziehung. Bsp.: Heirat

Name: Meier Vorname: Klaus

Name: Bach Vorname: Stefan

Name: Meier Vorname: Sabine

Name: Bach-Meier Vorname: Petra

Name: Hurtig Vorname: Hans

Personen Heirat1

1oder n:m ?

Page 82: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

85

IN

FO

RM

AT

IK

Normalisierung von relationalen Schemata

• Im ersten Teil wurde eine bestehende Datenbank sukzessive erweitert und vor allem in mehrere Tabellen zerlegt, um Redundanzen zu vermeiden.

• Dieser Prozess kann in der sog. „Normalisierung“ formalisiert werden. Das Relationenschema wird dabei in die erste, zweite, dritte

usw. Normalform überführt. Immer mehr Redundanzen werden vermieden. Immer mehr Tabellen sind notwendig (und Anfragen werden

komplexer). Prozess wird in der Realität nur bis zu einem gewissen Grad

durchlaufen.

Weitergehendes mit Beispielen in: http://de.wikipedia.org/wiki/Normalisierung

Page 83: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

86

IN

FO

RM

AT

IK

Transformation E/R-Modell in relationales Schema

• Transformation von Entitätstypen Für jeden Entitätstyp eine Tabelle

Schüler

NameSNR

Vorname

Schueler

SNR Name Vorname

E/R

-Mod

ell

Rela

tion

ale

s Sch

em

a

Page 84: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

87

IN

FO

RM

AT

IK

Transformation E/R-Modell in relationales Schema

• Transformation von 1:n-Beziehungstypen Fremdschlüssel wird auf Seite der „Kind“-Klasse hinzugefügt

(kann, aber muss nicht der Name des Primärschlüssels sein).

SchülerKlasse angehören1 n

NameSNR

Vorname

StufeKNR

Klasse

KNR Stufe

Schueler

SNR Name Vorname

E/R

-Mod

ell

Rela

tion

ale

s Sch

em

a

KNR

Page 85: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

88

IN

FO

RM

AT

IK

Transformation E/R-Modell in relationales Schema

• Transformation von n:m-Beziehungstypen Einfügen eines Fremdschlüssels nicht möglich Separate Tabelle mit zwei Fremdschlüsseln

SchülerKurs besuchtn m

Schueler

SNR Name Vorname

NameSNR

Vorname

StufeKNR

Kurs

KNR Stufe

Fehlstunden

KNR

Besucht

Fehlst.SNR

E/R

-Mod

ell

Rela

tion

ale

s Sch

em

a

Page 86: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

89

IN

FO

RM

AT

IK

Transformation E/R-Modell in relationales Schema

• Transformation von 1:1-Beziehungstypen z.B. das separate Speichern von sensiblen Daten zu Personen Separate Tabelle, wobei dort Primärschlüssel auch

Fremdschlüssel ist.

SchülerPrivatSchüler Zusatzdaten1 1

SchuelerPrivat

KonfessionSNR

Herkunft

NameSNRVorname

Schueler

SNR Name Vorname

E/R

-Mod

ell

Rela

tion

ale

s Sch

em

a

HerkunftKonfessionSNR

Page 87: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

91

IN

FO

RM

AT

IK

Tools für E/R-Diagramme

• DBDesigner4http://fabforce.net/dbdesigner4/

• Ungetestet: Mogwai ER-Designer

(http://sourceforge.net/projects/mogwai/) TOAD Data Modeler TOAD für MySQL (Beta)

http://www.toadsoft.com/toadmysql/Overview.htm

• Oder doch einfach mit Office-Programmen…

Page 88: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

92

IN

FO

RM

AT

IK

Aufgaben

• Erstellen Sie ein E/R-Modell und dann das relationale Schema.

„Schule“

• Es werden alle LehrerInnen mit ihren Namen, Vornamen, Kürzeln und Dienstgrad erfasst.

• Die Benutzer können im Internet eine Liste der Klassen mit ihren KlassenleiterInnen einsehen.

• Es ist eine Suche nach den Fachschaften der Schule möglich. Dabei werden auch alle LehrerInnen angezeigt, die der Fachschaft angehören.

Page 89: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

93

IN

FO

RM

AT

IK

Bibliothek … Anforderungskatalog

• Erstellen Sie ein E/R-Modell und dann das relationale Schema.

„Bibliothek“

• In der Bibliothek müssen Bücher erfasst werden. Eine Suche ist möglich über Sachgebiet, Autor, Titel, Erscheinungsort und –jahr, Verlag.

• Bei der Suche wird eine Liste aller verfügbaren Verlage vorgeblendet.

• Leser, die Bücher ausleihen wollen, müssen sich zuvor registrieren.

• Für ein Buch kann herausgefunden werden, ob es zur Zeit ausgeliehen ist und von wem.

• Um Schäden nachvollziehen zu können, können alle vorherigen Ausleiher ermittelt werden.

• Bei zu langer Ausleihe erfolgt eine Mahnung an den Leser. Das muss vermerkt werden.

Page 90: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

94

IN

FO

RM

AT

IK

Anfragen an die Bibliothek-Datenbank

• Eine Datenbank für das Schema kann fertig importiert werden!(Bibliotheks-DB_latin.sql)

1. Welche Bücher sind bei einem Verlag aus München erschienen?(214 Ergebnisse)

2. Welche Jugendbücher sind zur Zeit von welchem Leser ausgeliehen?Geben Sie den Buchtitel, den Lesernamen und das Datum der Ausleihe aus!(7 Ergebnisse)

3. Wie viele Bücher existieren zu jedem Sachgebiet?Geben Sie die Sachgebiete nach Anzahl absteigend sortiert aus.

4. Wie viele Bücher aus jedem Sachgebiet sind zur Zeit ausgeliehen?(Kinder: 14)

5. Welche Leser haben zur Zeit Bücher ausgeliehen?(49 Ergebnisse, Achtung Duplikate?)

Page 91: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

95

IN

FO

RM

AT

IK

Arztpraxis … Anforderungskatalog

„Arztpraxis“

• Dr. Mager (kurz Ma) behandelt am 21.2.2005 den Patienten Willi Schäfer (Patientennummer 3012). Im Rahmen dieser Behandlung werden die folgenden Leistungen erbracht: Beratung, symptombezogene Untersuchung, Schutzimpfung. Jede dieser Leistungen ist über eine Nummer identifizierbar und kostet eine bestimmte Gebühr.

• Frau Dr. Hurtig (kurz Hu) wird am Sonntag (27.2.2005) zu einem Notfall gerufen. Patient Manfred Achilles ist beim Fußballspiel eine Sehne gerissen. In der Untersuchung vor Ort wird das Bein ruhig gestellt und der Patient ins Krankenhaus eingewiesen.

• Herr Dr. Alzheimer (kurz Al) besucht regelmäßig seine Patientin Paula Stein im Altenheim. Diese Untersuchung gilt als Vorsorgemaßnahme.

Page 92: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

96

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Page 93: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

97

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

Page 94: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

98

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

Page 95: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

99

IN

FO

RM

AT

IK

Zugriff auf MySQL über PHP

• Grundlegende Schritte jedes Datenbankzugriffs in PHP:

1. Verbindung mit dem Datenbanksystem aufbauen

Ergebnis der Verbindung ist eine Variable (Handle), mit der auf die Verbindung zugegriffen werden kann.

Fehler sollten (gerade hier) abgefangen (PHP-Konstrukt „or die“) und ausgegeben werden.

2. Datenbank auswählen

$link = mysql_connect($Host, $Benutzer, $Passwort) or die("DB-Verbindung unmöglich: " . mysql_error());

mysql_select_db($Datenbank) or die("Auswahl Datenbank unmöglich: " . mysql_error());

Page 96: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

100

IN

FO

RM

AT

IK

Zugriff auf MySQL über PHP

3. Abfrage ausführen

Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann.

4. Ergebnisse ausgeben Grundlegendes Problem

• Programmiersprachen sind iterativ• relationale Datenbanken (und damit SQL) sind

mengenorientiert Speicherung und „Durchlaufen“ der Ergebnisse notwendig

Für das Abrufen der Ergebnisse gibt es drei wesentliche Varianten:i. Arrayii. Assoziatives Arrayiii. Objektorientiert

5. Freigabe der Handles (kann entfallen)

$result = mysql_query($SQLText) or die("Anfrage fehlgeschlagen: " . mysql_error());

mysql_free_result($result);mysql_close($link);

Page 97: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

101

IN

FO

RM

AT

IK

Zugriff auf eine Spalte der Ergebniszeile

Auslesen und Speichern einerErgebniszeile als Array

Zugriff auf MySQL über PHP

• Ausgabe der Ergebnisse als Array mysql_fetch_array liefert eine komplette Zeile des

Ergebnisses als Array (Alternative: mysql_fetch_row) Nach der letzten Zeile wird FALSE zurückgegeben

while ($arrRow = mysql_fetch_array($result)){ echo "$arrRow[0] : $arrRow[1]";}

Schleife über alle Zeilen

des Ergebnisses

Page 98: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

102

IN

FO

RM

AT

IK

Zugriff auf eine Spalte der Ergebniszeile

Auslesen und Speichern einerErgebniszeile als Array

Schleife über alle Zeilen

des Ergebnisses

Zugriff auf MySQL über PHP

• Ausgabe der Ergebnisse als assoziatives Array mysql_fetch_array liefert auch ein assoziatives Array, d.h.

es kann über die Spaltennamen zugegriffen werden. Problem: Spaltennamen müssen eindeutig sein

while ($arrRow = mysql_fetch_array($result)){ echo "$arrRow[Land] : $arrRow[Sprache]";}

Page 99: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

103

IN

FO

RM

AT

IK

Zugriff auf eine Spalte der Ergebniszeile

Auslesen und Speichern einer

Ergebniszeile als objekt

Zugriff auf MySQL über PHP

• Ausgabe der Ergebnisse als Objekt mysql_fetch_object liefert eine komplette Zeile des

Ergebnisses als Objekt Nach der letzten Zeile wird FALSE zurückgegeben

while ($oRow = mysql_fetch_object($result)){ echo "$oRow->Land : $oRow->Sprache";}

Schleife über alle Zeilen

des Ergebnisses

Page 100: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

104

IN

FO

RM

AT

IK

Zugriff auf MySQL über PHP

• Weitere interessante Funktionen: mysql_num_rows($result)

• Gibt die Anzahl der Zeilen (Datensätze) im Ergebnis aus. mysql_num_fields($result)

• Gibt die Anzahl der Spalten im Ergebnis aus. mysql_field_name($result, 0)

• Name eines Feldes im Ergebnis. mysql_affected_rows()

• Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation wie z.B. DELETE, UPDATE

• Vereinfachung: Herstellen der Verbindung / Datenbankauswahl in einer

separaten Include-Datei, die immer wieder verwendet werden kann.• include "_DBVerbindung.inc";

Page 101: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

105

IN

FO

RM

AT

IK

PHP und Datenbanken – Aufgaben

1. Erstellen Sie php-Anzeigeseiten für die Datenbank miniterra.Verwenden Sie dazu Abfragen aus dem SQL-Teil.

2. Erstellen Sie eine Abfrage, bei der der Kontinent eingegeben werden kann (HTML-Formular). Es werden dann alle Länder des Kontinents ausgegeben.

3. Geben Sie die Länder mit ihren Kontinenten aus.Es sollen Links in jeder Spalte sein, die eine Sortierung erlauben.

4. Geben Sie den Verlauf eines Flusses bis zur Mündung aus.(Achtung: Rekursion!)

Page 102: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

106

IN

FO

RM

AT

IK

MySQL in Delphi

• In Delphi kann der Zugriff auf Datenbanken mittels Borland Database Engine (BDE) bzw. dbExpress erfolgen. Problem: Ab Delphi 5 ist die Datenbankunterstützung nur in

der Professional-Version enthalten.

Lösung: Verzicht auf Borland-Datenbank-Komponenten und Verwendung freier Zugriffssoftware MySQLDirect (http://www.sourceforge.net/projects/directsql)

• Units, die einen einfachen Datenbankzugriff erlauben

Einsteiger-Tutorial dazu: http://www.dsdt.info/tutorials/

Page 103: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

107

IN

FO

RM

AT

IK

(Datenbank)Server Datenbasis

ODBC Connector

• ODBC (Open DataBase Connectivity) ist ein (alter) Standard, um auf Datenquellen (insbesondere Datenbanken) zuzugreifen. gewisse Standardisierung und damit leichtere Portierung auf

andere Datenbanksysteme Zugriffsmöglichkeit für verschiedene Programme (Excel, Access,

Delphi, …) Muss für MySQL separat installiert werden (

http://mysql.org/downloads/connector/)

MySQL mit ODBC „anzapfen“

Darstellung

Anwendungsprogramm„Logik“

Server

Client

Page 104: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

108

IN

FO

RM

AT

IK

MySQL mit ODBC „anzapfen“

Page 105: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

109

IN

FO

RM

AT

IK

ODBC-Zugriff am Beispiel Excel 2003

• In Excel gibt es Probleme mit der erstellten Datenquelle: Ein Zeichen des Charactersets wird abgeschnitten. Lösung: Speicherung der Quelle als dsn-Datei. Daten Importieren mysql_Quelle_für_miniterra.dsn

öffnen.

Diese Datei kann für eigene Zweckeleicht mit einem Editor angepasst werden.

Page 106: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

110

IN

FO

RM

AT

IK

Agenda

Abfragesprachesprache SQL

Verwaltung MySQL

Datenbankmodellierung

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Datenbanken – Wozu?

Zugriff auf Datenbanken (PHP & Co.)

Ausblick

Page 107: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

111

IN

FO

RM

AT

IK

Ausblick - Was hätte man noch alles behandeln können?

• Weitere Möglichkeiten von SQL Outer Joins Sub-Selects

• Datenbank-Management Zugriffsbeschleunigung über Indizes Verwaltung der physischen Speicherung

• storage engine InnoDB für MySQL• Sicherung der Datenbank

• Verändern der Datenbankinhalte mit SQL INSERT / DELETE / UPDATE

• Verändern der Datenbankstruktur über Anweisungen Data Definition Language (DDL)

• u.v.m.

Page 108: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

112

IN

FO

RM

AT

IK

Software / Links

• XAMPP http://www.apachefriends.org/de/xampp.html

• Deutsche MySQL Seite http://www.mysql.de/ (englisch: http://mysql.com/)

• MySQL Gui Tools http://www.mysql.de/downloads/gui-tools/

• PHP-Dokumentation (mit MySQL Funktionen) http://www.php.net/download-docs.php

• Connectors (ODBC, JDBC, …) für MySQL http://www.mysql.de/downloads/connector/

Page 109: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

113

IN

FO

RM

AT

IK

Software / Links

• Material zur MySQL-Verwendung von Klaus Merkert http://www.hsg-kl.de/faecher/inf/material/datenbanken/mysq

l/index.php

• Material zu DB allgemein von OSZ Handel, Berlin http://oszhdl.be.schule.de/gymnasium/faecher/informatik/dat

enbanken/index.htm

• u.v.m.

Page 110: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

114

IN

FO

RM

AT

IK

Schemata der Beispieldatenbanken

• Schema zur Beispieldatenbank „schulverwaltung.sql“

Lehrer Faecher

Klassen

Klassenleiter

unterrichtet

n

m

n m

KBuchstabeKStufe Saal

LNR FNR FachName Vorname

Page 111: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

115

IN

FO

RM

AT

IK

Schemata der Beispieldatenbanken

• Schema zur Beispieldatenbank „bibliothek.sql“

Buecher Ausleihe

BuchNr Autor …

Leser

LeserNr Nachname …

Leserprivat

LeserNr Geschlecht …

Ist Teil von

…zurueck

Verlag

VNR Name Ort

gibt heraus

n

1 1

1

n m

Page 112: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

116

IN

FO

RM

AT

IK

Schemata der Beispieldatenbanken

• Schema zur Beispieldatenbank „wm2006.sql“

Begegnung

SchiedsrichterTeam

Land

Ort

Team1 Team2

n

11

n

1

1

1 1

n

n

1

Datum

Ergebnis

Page 113: INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

117

IN

FO

RM

AT

IK

Schemata der Beispieldatenbanken

• WM-Datenbank als UML-Diagramm

Begegnung

SchiedsrichterTeam

Land

Ort

TNR2

TNR1

TNRTNR

LNR

TNR

LNR

LNR

SNR

ONR

ONR

Datum

Ergebnis

NameEinwohner

Kontinent

NameVorname

NameSitze

Trainer

TNR in Team ist Primär- und

Fremdschlüssel