Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr.

Ähnliche Präsentationen


Präsentation zum Thema: "INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr."—  Präsentation transkript:

1 INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr

2 I N F O R M A T I K 2 Agenda Abfragesprachesprache SQLVerwaltung MySQL / MariaDBDatenbankmodellierungThemenvernetzung (DB-Zugriff, etc.)AusblickDatenbanken – Wozu?

3 I N F O R M A T I K 3 Informationssysteme

4 I N F O R M A T I K 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) Datenbank (Datenbasis) Datenbankmanagementsystem DBMS, z.B. MySQL

5 I N F O R M A T I K 5 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

6 I N F O R M A T I K 6 Ein Ausgangspunkt im Unterricht… Schüler führen eine Internet-Recherche durch: „Städte in Deutschland – Einwohner, geografische Lage“  Schüler nutzen ein Informationssystem  Schüler stellen automatisch Informationen unterschiedlich dar Mainz  196.000  50° Nord  8° 16‘ Ost Landau  43000  49,19  8,12 Listen 850199000Mainz 84943000Landau LängeBreiteEinwohnerName Tabellen Tabellen bieten schon „von Hand“ Vorteile:  leichter zu ergänzen (neue Spalte)  Summenzeile  …

7 I N F O R M A T I K 7 Motivation - Datenbank Idee: Sammlung der gefundenen Städte in einem Tabellenblatt (OpenOffice Calc / MS Excel) auf einem zentralen Laufwerk  Es treten typische Probleme auf:  Es kann immer nur ein Benutzer die Datei öffnen.  Daten können von jedem geändert / gelöscht werden.  Keinerlei Konsistenzprüfung der eingegebenen Daten.  Abhilfe: Nutzung eines Datenbanksystems…  MS Access ist in dieser Hinsicht schon ungeeignet.

8 I N F O R M A T I K 8 Software-Architekturen: „Standalone“-Programm z.B.  selbst programmierte Schülerdatei  in Delphi programmierte Übersicht von Länderinformationen PC Darstellung Anwendungsprogramm „Logik“ Datenbasis

9 I N F O R M A T I K 9 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) PC Darstellung Anwendungsprogramm „Logik“ Datenbasis

10 I N F O R M A T I K 10 (Datenbank)Server Datenbasis Darstellung Anwendungsprogramm „Logik“ Datenbasis Software-Architekturen - Client-Server z.B.  Outlook und Exchange-Server  „einfache“, datenbank-basierte Schülerverwaltung Server Client Darstellung Anwendungsprogramm „Logik“

11 I N F O R M A T I K 11 Software-Architekturen - Client-Server z.B.  Outlook und Exchange-Server  „einfache“, datenbank-basierte Schülerverwaltung (Datenbank)Server Datenbasis Server Client Darstellung Anwendungsprogramm „Logik“

12 I N F O R M A T I K 12 (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 Client Darstellung Anwendungsprogramm „Logik“

13 I N F O R M A T I K 13 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 Client

14 I N F O R M A T I K 14 Software-Architekturen – Webarchitektur Eine moderne 3-schichtige Webarchitektur… Webclient (Browser) Webserver (z.B. Apache und PHP) Datenbankserver (z.B. MySQL) Darstellung „Logik“ Datenbasis Server Client

15 I N F O R M A T I K 15 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 Client

16 I N F O R M A T I K 16 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

17 I N F O R M A T I K 17 … und zum Testen / für die Fortbildung? Alle drei Schichten sind auf einem Rechner! Datenbankserver Webserver Clients Internet Explorer Apache MySQL MariaDB Client Webserver Datenbankserver

18 I N F O R M A T I K 18 Das andere Extrem – eine Web Farm HACMP Fail-Over Production DB ServerFailOver DB Server 2,4 TByte FDDI Switch 32 GByte RAM Load Balancer Application Server Farm je 4 Prozessoren 32 GByte RAM

19 I N F O R M A T I K 19 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

20 I N F O R M A T I K 20 Relationale Datenbanken  Die Daten werden in Form von Tabellen gespeichert  Zwischen den Tabellen werden Beziehungen aufgebaut (Relationen) Empfehlung:  Einheitliche Begriffe nutzen,  nicht zu nah an der mathematischen Betrachtung (Relationenalgebra) Arten von Datenbanken NameEinwohnerBreiteLaengeLand Berlin3458763 52,5213,41Deutschland Mainz 18475250,00 8,27Deutschland Paris218130048,86 2,35Frankreich Speyer 50600 49,31 8,43Deutschland Ort Attribut (Spalte, Merkmal) Datenwert (Attributwert) Datensatz (Tupel) Attributklasse Name

21 I N F O R M A T I K 21 Atomare Werte  Ein Wert für ein Attribut in einem Datensatz soll atomar sein.  nur einfache Werte  keine Listen Daten in Tabellen Nicht atomarer Datenwert

22 I N F O R M A T I K 22 Arten von Datenbanken Relationale Datenbanken – typische Vertreter  Oracle  IBM (DB/2)  Microsoft SQL Server (Access ?)  Informix  MySQL/MariaDB  PostGreSQL OpenSource

23 I N F O R M A T I K 23 Was bietet mir eine Datenbank?  Strukturierte Speicherung von Daten  Verteilter, gleichzeitiger Zugriff mehrerer Benutzer / Programme  Verwaltung von Zugriffsrechten  ACID – Prinzip (Idee: Analogie zu Bank-Transaktionen)  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. Im Unterricht gut durch Rollenspiele zu veranschaulichen.

24 I N F O R M A T I K 24 500 € ACID-Prinzip A – Atomicity Bsp.: Ein Kontosystem mit nicht überziehbaren Konten  Bob überweist Alice 500 €. Die Transaktion bricht nach der Abbuchung von Bobs Konto ab. BobAlice 700 €300 € 200 € Die Transaktion darf nur „ganz oder gar nicht“ stattfinden. Konkret: Das Geld darf unterwegs nicht „verschwinden“

25 I N F O R M A T I K 25 1000 € ACID-Prinzip C – Consistency Bsp.:  Bob will Alice 1000 € überweisen. Die Transaktion überzieht sein Konto, was nicht erlaubt ist. BobAlice 700 €300 € -300 € Jede Transaktion muss die Datenbank in einem konsistenten (den definierten Regeln entsprechenden) Zustand hinterlassen. (insbesondere bei der Konsistenz von Schlüsselbeziehungen, s.u.) 1300 €

26 I N F O R M A T I K 26 400 € ACID-Prinzip I – Isolation Bsp.:  Bob überweist Alice 400 € und gleichzeitig an Carol 500 €. Jede Transaktion für sich ist in Ordnung, zusammen überziehen sie das Konto. BobAlice 700 €300 € -200 € Jede Transaktion muss so ablaufen, dass parallel ablaufende Transaktionen sie nicht stören können. (zumindest logisch nacheinander ablaufen – serialisierbar) 500 € Carol 700 €600 € 100 €

27 I N F O R M A T I K 27 Agenda Abfragesprachesprache SQL Verwaltung MySQL / MariaDB Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick Datenbanken – Wozu? Abfragesprachesprache SQLDatenbanken – Wozu?

28 I N F O R M A T I K 28 GF - Lehrplan Sprachen zur Datenbankverwaltung An der Schnittstelle nach außen bietet das Datenbanksystem (DBS) Sprachen für folgende Zwecke:  Datenabfrage und -manipulation (DML)  Verwaltung der Datenbank und Definition der Datenstrukturen (DDL)  Berechtigungssteuerung (DCL) Bei relationalen DBS ist dies alles in der Sprache SQL vereint.  Beschränkung in der Schule im Wesentlichen auf Abfragesprache.

29 I N F O R M A T I K 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. 29 MySQL/MariaDB – Jetzt wird es (endlich) praktisch…

30 I N F O R M A T I K 30 Die erste Datenbank importieren Administration von MySQL/MariaDB funktioniert selbst schon am einfachsten über den Browser (oder Admin-Button in Control Panel)  Webarchitektur http://localhost/phpmyadminhttp://localhost/phpmyadmin Datenbankserver Webserver Client Browser Apache MySQL MariaDB

31 I N F O R M A T I K 31 Die erste Datenbank importieren Legen Sie eine neue Datenbank „terra1“ an. Wechseln Sie zur Datenbank (links), wählen Sie den Punkt „Importieren“ und suchen die Datei „terra1.sql“

32 I N F O R M A T I K 32 Die erste Tabelle… Klicken Sie auf „Struktur“: u.a. wird die Tabelle „ort“ angezeigt.  Lassen Sie sich den Inhalt der Tabelle anzeigen. Tipp: Ändern Sie die Einstellungen von phpmyadmin, so dass nur die Icons angezeigt werden!

33 I N F O R M A T I K 33 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.

34 I N F O R M A T I K 34 SQL – SELECT und FROM Eine Projektion schränkt die Abfrage hinsichtlich der Attribute ein (die Spalten der resultierenden Tabelle): SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY [Attribute]; Die darzustellenden Spalten der Tabelle müssen durch Kommata getrennt angegeben werden; * steht für „alle Spalten“. Beispiele:  SELECT * FROM land;  SELECT Name FROM land;  SELECT Name, Kontinent FROM land;

35 I N F O R M A T I K 35 SQL – WHERE Eine Selektion schränkt die Abfrage hinsichtlich der Datensätze ein (die Zeilen der resultierenden Tabelle): SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY [Attribute]; Die Abfrage enthält alle Datensätze, welche die angegebene Bedingung erfüllen. Beispiele:  SELECT * FROM land WHERE (Kontinent='Europa')  SELECT * FROM land WHERE (Einwohner>10)

36 I N F O R M A T I K 36 NameEinwohnerBreiteLaengeLand Berlin3458763 52,5213,41Deutschland Mainz 18475250,00 8,27Deutschland Paris218130048,86 2,35Frankreich Speyer 50600 49,31 8,43Deutschland … ………… ort  SELECT Name, Einwohner, Land FROM ort WHERE Einwohner > 1000000 Datenbankzugriff mit SQL - Ein erstes Beispiel Millionenstädte ? Ergebnistabelle NameEinwohnerLand Berlin3458763Deutschland Paris2181300Frankreich ………

37 I N F O R M A T I K 37 SQL – WHERE Bedingungen mit Textattributen:  Name = 'Paris'  Name LIKE 'P%' (Potsdam, Peine, Pirmasens)  Name LIKE 'A_len' (Aalen, Ahlen) 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)

38 I N F O R M A T I K 38 SQL – WHERE Vergleich auf Nullwert (kein Attributwert angegeben): Breite IS NULL Logische Verknüpfungen:  NOT (Land='Deutschland') (Land nicht Deutschland)  (Land='Deutschland') AND (Einwohner>100000) (Millionenstädte in Deutschland)  (Land='Deutschland') OR (Land='Schweiz') (Orte in Deutschland und Schweiz)

39 I N F O R M A T I K 39 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 ort ORDER BY Name SELECT * FROM ort ORDER BY Land, Einwohner DESC

40 I N F O R M A T I K Übungen 1 Bearbeiten Sie in inf-schule die Aufgaben 2-8 unter 40 http://inf-schule.de/information/datenbanksysteme/terra/relationaledb/uebungen

41 I N F O R M A T I K Übungen 1 Beispieltabelle Geben Sie alle Länder aus:  Name, Einwohner, Hauptstadt  Sortierung nach Einwohner absteigend Welche Länder haben zwischen 10 und 100 Mio. Einwohner?  Absteigend nach Einwohner sortiert 41 SELECT Name, Einwohner, Hauptstadt FROM land ORDER BY Einwohner DESC Nicht atomare Datenwerte WHERE Einwohner BETWEEN 10 AND 100 ORDER BY Einwohner DESC

42 I N F O R M A T I K 42 Übungen 1 6.Welche Länder haben einen „Arm“ oder ein „Bein“ im Namen? 8.Welche Länder liegen in Asien und Australien? WHERE Kontinent='Asien' OR Kontinent='Australien' WHERE Name like '%bein%' OR Name like '%arm%'

43 I N F O R M A T I K 43 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, RTRIMAbschneiden von Leerzeichen  … Weitere Funktionen online in der Hilfe zu MySQL! SQL ist hier nicht standardisiert  Die Funktionen sind bei anderen DBS oft unterschiedlich

44 I N F O R M A T I K Nutzen der Hilfsfunktionen Ausgabe der Länder in folgender Form: 44 Spalten können mit „AS“ umbenannt werden CONCAT(UPPER(Name),' - ',Hauptstadt) AS Land, round(Einwohner) AS "Mio. Einwohner"

45 I N F O R M A T I K 45 Wozu dient die Spalte LNR in der Land-Tabelle ? … ein anderes Beispiel:  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.

46 I N F O R M A T I K 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. 46 LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.33BerlinEuropa INDIndien761.00 DelhiAsien RWARwanda6.30KigaliAfrika Land Relationale Datenbank – Aufbau Schlüsselattribut

47 I N F O R M A T I K Fehler in Daten Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner? 47 WHERE Kontinent = 'Europa' AND Einwohner > 20 Frankreich?? Problem: Europa wird unterschiedlich geschrieben! Lösung: Auslagerung in eine eigene Tabelle

48 I N F O R M A T I K 48 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. KNRName EUEuropa ASAsien AFAfrika Kontinent LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.34 BerlinEuropa INDIndien761.00 DelhiAsien RWARwanda6.30 KigaliAfrika LNRName…KNR DKDänemark…EU DDeutschland…EU INDIndien…AS RWARwanda…AF Land Schlüsselattribut aus Kontinent

49 I N F O R M A T I K 49 Relationale Datenbanken – Beziehungen 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. KNRName EUEuropa ASAsien AFAfrika Kontinent LNRName…KNR DKDänemark…EU DDeutschland…EU INDIndien…AS RWARwanda…AF Land Primärschlüssel aus Kontinent

50 I N F O R M A T I K 50 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. LNRNameEinwohnerKNR DKDänemark5.16EU DDeutschland81.34EU INDIndien761.00AS RWARwanda6.30AF Land KNRName EUEuropa ASAsien AFAfrika Kontinent

51 I N F O R M A T I K 51 SQL – einfache Joins 1.Cross-Join („jede Zeile mit jeder“)  SELECT * FROM Land, Kontinent LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika …………… LNRNameEinwohnerKNR DKDänemark5.16EU DDeutschland81.34EU INDIndien761.00AS RWARwanda6.30AF Land KNRName EUEuropa ASAsien AFAfrika Kontinent

52 I N F O R M A T I K 52 WHERE Land.KNR= Kontinent.KNR LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika …………… 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

53 I N F O R M A T I K 53 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 LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika ……………

54 I N F O R M A T I K 54 SQL – 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 NameEinwohnerName Deutschland81.34Europa Indien761.00Asien ……… In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren. LNRNameEinwohnerKNRKNRName DDeutschland81.34EUEUEuropa INDIndien761.00ASASAsien ……………

55 I N F O R M A T I K Übungen 2 Bearbeiten Sie in inf-schule die Aufgaben unter 55 http://inf-schule.de/information/datenbanksysteme/terra/datenverknuepfen/uebungen

56 I N F O R M A T I K Übungen 2 Aufgabe 2  Warum wäre das Attribut "Name" ein möglicher Primärschlüssel für die Schüler-Tabelle?  Was ist im Moment ein möglicher Primärschlüssel der Noten-Tabelle?  Was ist der Fremdschlüssel in der Noten-Tabelle? 56

57 I N F O R M A T I K 57 4.Welche Länder liegen in Asien?  Name und Einwohner Länder  Sortierung nach Einwohnerzahl absteigend 5.Orte in Europe mit mehr als 1 Mio. Einwohner SELECT land.Name, ort.Name AS "Stadt", ort.Einwohner FROM kontinent, land, ort WHERE kontinent.Name = 'Europa' AND kontinent.KNR = land.KNR AND land.LNR = ort.LNR AND ort.Einwohner > 1000000 ORDER BY ort.Einwohner DESC Übungen 2 SELECT land.Name, land.Einwohner FROM kontinent, land WHERE kontinent.KNR = land.KNR ORDER BY land.Einwohner DESC

58 I N F O R M A T I K Duplikate... In welchen Kontinenten gibt es Länder mit mehr als 100 Mio. Einwohner? 58 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 Problem: Es werden Duplikate angezeigtLösung: DISTINCT-Anweisung

59 I N F O R M A T I K 59 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“. ONRName…LNR BANGALBangalore…IND GOETTIGöttingen…D KARLSR Karlsruhe…D KOPENHKopenhagen…DK Ort LNRName…KNR DKDänemark…EU DDeutschland…EU INDIndien…AS RWARwanda…AF Land Schlüsselattribut aus Land

60 I N F O R M A T I K 60 Kontinent Teil von LandOrt Teil von Hauptstadt Bisheriges „Schema“ der Datenbank Ein erstes „E/R-Modell“ (Entity/Relationship)  eigentlich intuitiv zu lesen!? Hatten Sie die Stelle in der Datenbank terra3, an der die „Hauptstadt“ abgespeichert ist, gefunden?

61 I N F O R M A T I K 61 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>10000000 Der Alias-Name für Land ist nicht notwendig (verkürzt die Abfrage) LandOrt Teil vonHauptstadt Ort

62 I N F O R M A T I K 62 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? FNRNameLaenge ELBElbe1144 MEKMekong4500 MOSMosel544 RHERhein1320 Fluss ONRName GOETTIGöttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENHKopenhagen Ort ONR HAMBUR PHNOMP KOBLEN Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden.

63 I N F O R M A T I K 63 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? FNRNameLaenge ELBElbe1144 MEKMekong4500 MOSMosel544 RHERhein1320 Fluss ONRName GOETTIGöttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENHKopenhagen Ort FNR LEI RHE Problem: Für Orte müssen mehrere Flüsse eingetragen werden. Lösung: Auslagerung der Zuordnung in eine eigene Tabelle

64 I N F O R M A T I K 64 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. FNRNameLaenge ELBElbe1144 MEKMekong4500 MOSMosel544 RHERhein1320 Fluss ONRName GOETTIGöttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENHKopenhagen Ort FNRONR ELBHAMBUR RHEKOBLEN RHEKARLSR MOSKOBLEN Stadtfluss

65 I N F O R M A T I K 65 Struktur der Datenbank terra4 Kontinent Teil von Land Fluss Ort Teil von durchfließt n 1 1n Hauptstadt 11 n m

66 I N F O R M A T I K Übungen 3 Bearbeiten Sie in inf-schule die Aufgaben unter 66 http://inf-schule.de/information/datenbanksysteme/terra/beziehungstabelle/uebungen

67 I N F O R M A T I K 67 Übungen 3 1.Welche Orte liegen an der Saar ? 3.Welche Orte durchfließt der Rhein in Rheinland-Pfalz? Ordnung nach Rheinkilometer 4.Welche Länder durchfließt die Donau? SELECT o.Name FROM ort o, stadtfluss sf, fluss f WHERE o.ONR = sf.ONR AND sf.FNR = f.FNR AND f.Name = 'Saar' SELECT ort.Name, stadtfluss.KM FROM ort, stadtfluss, fluss WHERE ort.Landesteil='Rheinland-Pfalz' AND ort.ONR = stadtfluss.ONR AND stadtfluss.FNR = fluss.FNR AND fluss.Name = 'Rhein' AND stadtfluss.KM IS NOT NULL ORDER BY stadtfluss.KM SELECT DISTINCT l.Name FROM fluss f, stadtfluss sf, ort o, land l WHERE f.Name = 'Donau' AND f.FNR = sf.FNR AND sf.ONR = o.ONR AND o.LNR = l.LNR

68 I N F O R M A T I K 68 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! ONRName AALBOR Dänemark KOPENHDänemark BERLINDeutschland DUESSEDeutschland MAINZDeutschland TALLINEstland

69 I N F O R M A T I K 69 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 ONRName AALBOR Dänemark KOPENHDänemark BERLINDeutschland DUESSEDeutschland MAINZDeutschland TALLINEstland 3 1 2 NameAnzahl Dänemark2 Deutschland3 Estland1

70 I N F O R M A T I K Übungen 4 Bearbeiten Sie in inf-schule die Aufgaben 1 - 3 unter 70 http://inf-schule.de/information/datenbanksysteme/terra/aggregation/uebungen

71 I N F O R M A T I K 71 Übungen 4 1.Wie viele Orte liegen in Frankreich? 3.In welchen Staaten liegen Megacities (mehr als 1 Mio. Einwohner)? Ausgabe: Anzahl der Städte pro Land! SELECT COUNT(*) FROM land, ort WHERE ort.LNR = land.LNR AND land.Name = 'Frankreich' SELECT land.Name, COUNT(*) AS Anzahl FROM land, ort WHERE land.LNR = ort.LNR AND ort.Einwohner>1000000 GROUP BY land.Name ORDER BY Anzahl DESC GROUP BY entfällt, wenn „nur“ gezählt wird.

72 I N F O R M A T I K 72 Übungen 4 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.Name HAVING COUNT(*)>1 ORDER BY o.Name Weitere BuiltIn- Funktionen: MAX, MIN, SUM,…

73 I N F O R M A T I K 73 Struktur der kompletten Datenbank „miniterra“ Kontinent Sprache Teil von gesprochen Land Fluss Ort Teil von durchfließt mündet n m n 1 1n Hauptstadt 11 n m 1 n benachbart m n

74 I N F O R M A T I K 74 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

75 I N F O R M A T I K 75 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

76 I N F O R M A T I K 76 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)  …

77 I N F O R M A T I K 77 Agenda Abfragesprachesprache SQL Verwaltung MySQL/MariaDB Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick Datenbanken – Wozu? Abfragesprachesprache SQLVerwaltung MySQL/MariaDB

78 I N F O R M A T I K 78 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

79 I N F O R M A T I K 79 MySQL – Passwort für Administrator ändern Der Administrator (root) für die Datenbank hat alle Rechte und muss geschützt werden. phpMyAdmin in Browser starten  Menüpunkt „Benutzerkonten“  Benutzer „root - localhost“ auswählen und bearbeiten

80 I N F O R M A T I K 80 MySQL – Passwort für Administrator ändern  Button „Passwort ändern“  Beim nächsten Aufruf von phpMyAdmin ist die Eingabe des neuen Passworts notwendig  oder einfacher - direkt per SQL-Befehl: SET password = PASSWORD('HierMussEinGutesPasswortRein')

81 I N F O R M A T I K 81 MySQL – Passwort für Administrator ändern Anmeldetyp für phpMyAdmin ändern  Ins Verzeichnis xampp\phpmyadmin wechseln.  Datei config.inc.php mit Notepad++ oder Wordpad öffnen. (oder über Control Panel öffnen)

82 I N F O R M A T I K Anmeldetyp für phpMyAdmin ändern  Zeile $cfg['Servers'][$i]['auth_type'] = ‘config'; ändern auf = 'cookie';  Bei der nächsten Anmeldung (Browser einmal zuvor schließen!) ist die Eingabe von Benutzer (root) und Passwort notwendig 82 MySQL – Passwort für Administrator ändern

83 I N F O R M A T I K 83 Benutzer / Rechte vergeben Über den Reiter „Benutzerkonten“ können weitere Benutzer angelegt 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 Oder einfacher… gleich noch etwas SQL lernen: CREATE USER Schueler1@localhost IDENTIFIED BY 'meinPasswort'; Da phpmyadmin immer lokal auf dem Server läuft… GRANT ALL PRIVILEGES ON dbSchueler1.* TO Schueler1@localhost; CREATE DATABASE dbSchueler1;

84 I N F O R M A T I K Benutzer / Rechte vergeben Einem Benutzer können aber auch Rechte (z.B. nur Leserecht) auf zentralen Datenbanken wie terra vergeben werden: … oder auch entzogen werden: 84 GRANT SELECT ON terra.* TO Schueler1@localhost; REVOKE SELECT ON terra.* FROM Schueler1@localhost;

85 I N F O R M A T I K Problem: XAMPP-Rechte Jetzt kann der Benutzer über http://Rechnername/phpmyadmin oder über http://IP-Adresse/phpmyadmin vom Schulnetzwerk auf den Server zugreifen.  Problem: Neues Rechte-System in aktuelleren XAMPP-Versionen  Manuelles Anpassen der Konfigurationsdatei httpd-xampp.conf nötig. 85

86 I N F O R M A T I K Anpassen der Konfigurationsdatei httpd-xampp.conf Im Verzeichnis \xampp\apache\conf\extra findet sich die Konfigurationsdatei httpd-xampp.conf  evtl. Sicherungskopie anlegen!  Im letzten Abschnitt muss der Zugriff wieder erlaubt werden, indem das Verbot „auskommentiert“ wird.  Danach muss der Webserver mit XAMPP Control Panel neu gestartet werden.  Dies ist die „quick and dirty“-Methode ohne Beachtung eines Sicherheitskonzepts  Die Anpassung ist für ein „öffentliches“ System im Internet absolut ungeeignet! 86

87 I N F O R M A T I K 87 Übung: 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 „terra“ erhalten. 3.Passen Sie die Konfigurationsdatei httpd-xampp.conf an. 4.Versuchen Sie, mit diesem Benutzer auf die Datenbank des Nachbarn / der Nachbarin zuzugreifen.

88 I N F O R M A T I K 88 Skript zur Anlage der Datenbanken Zur Vereinfachung existiert ein PHP-Skript, das eine erste Umgebung für den Unterricht einrichtet:  Verzeichnis terra_install in das htdocs-Verzeichnis des XAMPP-Pakets kopieren.  http://localhost/terra_install aufrufen. http://localhost/terra_install Das Skript  legt die Datenbanken terra1…4 und miniterra an.  erzeugt Benutzerkonten und Datenbanken für die Schüler mit entsprechenden Rechten.

89 I N F O R M A T I K 89 Agenda Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick Datenbanken – Wozu? Verwaltung MySQLDatenbankmodellierung

90 I N F O R M A T I K 90 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.

91 I N F O R M A T I K 91 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

92 I N F O R M A T I K 92 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 Externe Sicht Konzeptionelle Sicht Internes Modell (z.B. relationales Datenmodell)

93 I N F O R M A T I K 93 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

94 I N F O R M A T I K 94 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ämpel Vorname: Ludwig Titel: StD 3 Entitäten Kürzel: Kr Name: Kribich Vorname: Alfred Titel: StR Kürzel: Le Name: Lenk Vorname: Gertrud Titel: OStR'

95 I N F O R M A T I K 95 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: Me Name: Merz Kuerzel: Kr Name: Kribich Kuerzel: Lä Name: Lämpel Stufe: 12 Teil: m3 Stufe: 11 Teil: M1 Stufe: 8 Teil: a Entitätstyp Klassenfahrt Beziehungstyp Beziehungen

96 I N F O R M A T I K 96 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

97 I N F O R M A T I K 97 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 Name Kürzel Vorname identifizierend beschreibend Teil Anzahl Stufe Datum Ziel

98 I N F O R M A T I K 98 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 KlasseSchüler Ein Schüler gehört einer Klasse an. Einer Klasse gehören mehrere Schüler an. 1n

99 I N F O R M A T I K 99 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 KursSchüler Ein Kurs hat mehrere Schüler. Ein Schüler nimmt an mehreren Kursen teil. nm Name: Müller Vorname: Yvonne Name: Meier Vorname: Jan Name: Dietz Vorname: Nicole Name: Seiler Vorname: Manfred

100 I N F O R M A T I K 100 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ören 1n SchülerKlasse angehören 1n [8,30][1,1]

101 I N F O R M A T I K 101 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 Heirat 1 1 oder n:m ?

102 I N F O R M A T I K 102 E/R-Diagramme – Ist-Beziehung Die Ist-Beziehung gibt an, dass ein Entitätstyp eine Spezialisierung eines anderen Entitätstyps darstellt.  Bsp.: „Lehrer“ spezialisiert „Person“ Die Spezialisierungstypen erben die Attribute des Generalisierungstyps. Generalisierungstyp Spezialisierungstypen Klasse Person SchülerLehrer ist Titel VornameName

103 I N F O R M A T I K 103 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_(Datenbank) http://de.wikipedia.org/wiki/Normalisierung_(Datenbank

104 I N F O R M A T I K 104 Transformation E/R-Modell in relationales Schema Transformation von Entitätstypen  Für jeden Entitätstyp eine Tabelle Schüler Name SNRSNR Vorname Schueler SNRNameVorname E/R-Modell Relationales Schema

105 I N F O R M A T I K 105 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ören 1n Name SNR Vorname Stufe KNR Klasse KNRStufe Schueler SNRNameVorname E/R-Modell Relationales Schema KNR

106 I N F O R M A T I K 106 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 besucht nm Schueler SNRNameVorname Name SNR Vorname Stufe KNR Kurs KNRStufe Fehlstunden KNR Besucht Fehlst.SNR E/R-Modell Relationales Schema

107 I N F O R M A T I K 107 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 Zusatzdaten 11 SchuelerPrivat Konfession SNR Herkunft Name SNR Vorname Schueler SNRNameVorname E/R-Modell Relationales Schema HerkunftKonfessionSNR

108 I N F O R M A T I K 108 Transformation E/R-Modell in relationales Schema Transformation der Ist-Beziehung  Separate Tabelle, ähnlich der 1:1-Beziehung E/R-Modell Relationales Schema PersonSchüler ist Name Vorname PNRSNR Schulart SchuelerPerson SNRNameVorname KonfessionSchulartSNR Konfession

109 I N F O R M A T I K 109 Tools für E/R-Diagramme DBDesigner4 http://fabforce.net/dbdesigner4/ http://fabforce.net/dbdesigner4/ MySQL Workbench http://www.mysql.com/downloads/workbench/ http://www.mysql.com/downloads/workbench/ Ungetestet:  Mogwai ER-Designer http://sourceforge.net/projects/mogwai/ http://sourceforge.net/projects/mogwai/  TOAD Data Modeler  TOAD für MySQL http://toadformysql.com/index.jspa http://toadformysql.com/index.jspa Oder doch einfach mit Office-Programmen…

110 I N F O R M A T I K 110 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.

111 I N F O R M A T I K 111 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.

112 I N F O R M A T I K 112 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?)

113 I N F O R M A T I K 113 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.

114 I N F O R M A T I K 114 Wer kennt wen? - Anforderungskatalog „Wer-kennt-wen“ Bei der Registrierung muss der Benutzer sich einen eindeutigen Benutzernamen auswählen und seine email-Adresse hinterlegen. Benutzer legen Gruppen an, denen weitere Benutzer beitreten können. Ein Benutzer sieht in einer Übersicht, mit welchen anderen Benutzern er Freundschaften unterhält. Ein persönliches Blog erlaubt einem Benutzer, regelmäßig sein Leben mit anderen zu teilen. Ein Benutzer wird rechtzeitig an Events erinnert, an denen er teilnimmt.

115 I N F O R M A T I K 115 Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick Datenbanken – Wozu? Themenvernetzung (DB-Zugriff, etc.) Agenda Datenbankmodellierung

116 I N F O R M A T I K 116 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

117 I N F O R M A T I K 117 Vernetzung des Themas - Koordinatensystem Umrechnung Breiten/Längen-Angaben in Bildschirmkoordinaten

118 I N F O R M A T I K 118 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  Python, PHP, Delphi, Java Rhein Mosel Main Neckar Donau Isar Inn Fulda Werra Weser Elbe Havel Spree Aller Elbe Havel Spree Nordsee

119 I N F O R M A T I K 119 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

120 I N F O R M A T I K 120 Zugriff auf MySQL über Python Grundlegende Schritte jedes Datenbankzugriffs am Beispiel Python und der Bibliothek mysql.connector: 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.  In manchen Fällen (z.B. PHP) kann die Datenbank erst in einem zweiten Schritt ausgewählt werden. con = mysql.connector.connect( host = 'localhost', user = 'root', password = 'sql', database = 'terra') # http://dev.mysql.com/downloads/connector/python/ import mysql.connector

121 I N F O R M A T I K 121 Zugriff auf MySQL über Python 2.Abfrage ausführen  Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann. 3.Ergebnisse ausgeben  Grundlegendes Problem Programmiersprachen sind iterativ relationale Datenbanken (und damit SQL) sind mengenorientiert  Speicherung und „Durchlaufen“ der Ergebnisse notwendig 4.Freigabe der Handles cursor = con.cursor() SQLBefehl = 'SELECT Name, Einwohner FROM kontinent' cursor.execute(SQLBefehl) cursor.close() con.disconnect()

122 I N F O R M A T I K Auslesen und Speichern einer Ergebniszeile 122 Zugriff auf eine Spalte der Ergebniszeile Zugriff auf MySQL über Python Ausgabe der Ergebnisse  cursor.fetchone() liefert eine komplette Zeile des Ergebnisses als Tupel  Nach der letzten Zeile wird None zurückgegeben Iteration über alle Zeilen des Ergebnisses row=cursor.fetchone() while (row!=None): print(row[0], row[1]) row = cursor.fetchone ()

123 I N F O R M A T I K 123 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)http://www.sourceforge.net/projects/directsql Units, die einen einfachen Datenbankzugriff erlauben  Einsteiger-Tutorial dazu: http://www.delphi-treff.de/tutorials/http://www.delphi-treff.de/tutorials/

124 I N F O R M A T I K 124 Datenschutz Anknüpfungspunkt: www.schober.dewww.schober.de

125 I N F O R M A T I K 125 Datenschutz Ein Blick ins Bundesdatenschutzgesetz: (http://bundesrecht.juris.de/bdsg_1990/ )http://bundesrecht.juris.de/bdsg_1990/

126 I N F O R M A T I K 126 Vernetzung des Themas - Datenschutz Datenbank-basierte Umfrage in der Schule  Wie können durch Verknüpfen (eigentlich harmloser) Daten neue Informationen gewonnen werden?

127 I N F O R M A T I K 127 Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick Datenbanken – Wozu? Themenvernetzung (DB-Zugriff, etc.) Agenda Ausblick

128 I N F O R M A T I K 128 Ausblick - Was hätte man noch alles behandeln können? Weitere Möglichkeiten von SQL  Outer Joins (z.T. auf inf-schule.de in gbuch-Datenbank)  Sub-Selects Verändern der Datenbankinhalte mit SQL  INSERT / DELETE / UPDATE Verändern der Datenbankstruktur über Anweisungen  Data Definition Language (DDL) Datenbank-Management  Zugriffsbeschleunigung über Indizes  Verwaltung der physischen Speicherung storage engine InnoDB für MySQL Sicherung der Datenbank u.v.m.

129 I N F O R M A T I K 129 Software / Links XAMPP  http://www.xampp.org http://www.xampp.org Deutsche MySQL Seite  http://www.mysql.de/ http://www.mysql.de/ MySQL Workbench  http://www.mysql.com/downloads/workbench/ http://www.mysql.com/downloads/workbench/ PHP-Dokumentation (mit MySQL Funktionen)  http://www.php.net/download-docs.php http://www.php.net/download-docs.php Connectors (Python, Java, …) für MySQL  http://www.mysql.de/downloads/connector/ http://www.mysql.de/downloads/connector/

130 I N F O R M A T I K 130 Software / Links Material zur MySQL-Verwendung von Klaus Merkert  http://www.hsg-kl.de/faecher/inf/material/datenbanken/mysql/index.php http://www.hsg-kl.de/faecher/inf/material/datenbanken/mysql/index.php Material zu PostgreSQL von Klaus Merkert  http://www.hsg-kl.de/faecher/inf/datenbanken/postgres/index.php http://www.hsg-kl.de/faecher/inf/datenbanken/postgres/index.php Material zu DB allgemein von OSZ Handel, Berlin  http://oszhdl.be.schule.de/gymnasium/faecher/informatik/datenbanken/in dex.htm http://oszhdl.be.schule.de/gymnasium/faecher/informatik/datenbanken/in dex.htm u.v.m.

131 I N F O R M A T I K 131 Informationssysteme / Datenbankabfragen Fragen

132 I N F O R M A T I K 132 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank „schulverwaltung.sql“ LehrerFaecher Klassen Klassenleiter unterrichtet n m nm KBuchstabeKStufeSaal LNRFNRFachNameVorname

133 I N F O R M A T I K 133 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank „bibliothek.sql“ Buecher Ausleihe BuchNrAutor… Leser LeserNrNachname… Leserprivat LeserNrGeschlecht… Ist Teil von …zurueck Verlag VNRNameOrt gibt heraus n 11 1 nm

134 I N F O R M A T I K 134 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank „wm2006.sql“ Begegnung SchiedsrichterTeam Land Ort Team1Team2 n 11 n 1 1 11 n n 1 Datum Ergebnis

135 I N F O R M A T I K 135 Schemata der Beispieldatenbanken WM-Datenbank als UML-Diagramm Begegnung SchiedsrichterTeam Land Ort TNR2 TNR1 TNR LNR TNR LNR SNR ONR Datum Ergebnis Name Einwohner Kontinent Name Vorname Name Sitze Trainer TNR in Team ist Primär- und Fremdschlüssel

136 I N F O R M A T I K 136 Wer kennt wen? - Anforderungskatalog „Wer-kennt-wen“ Bei der Registrierung muss der Benutzer sich einen eindeutigen Benutzernamen auswählen und seine email- Adresse hinterlegen. Benutzer legen Gruppen an, denen weitere Benutzer beitreten können. Ein Benutzer sieht in einer Übersicht, mit welchen anderen Benutzern er Freundschaften unterhält. Ein persönliches Blog erlaubt einem Benutzer, regelmäßig sein Leben mit anderen zu teilen. Ein Benutzer wird rechtzeitig an Events erinnert, an denen er teilnimmt.

137 I N F O R M A T I K 137 Zugriff auf MySQL über PHP Grundlegende Schritte jedes Datenbankzugriffs am Beispiel 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());

138 I N F O R M A T I K 138 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.Array ii.Assoziatives Array iii.Objektorientiert 5.Freigabe der Handles (kann entfallen) $result = mysql_query($SQLText) or die("Anfrage fehlgeschlagen: ". mysql_error()); mysql_free_result($result); mysql_close($link);

139 I N F O R M A T I K 139 Zugriff auf eine Spalte der Ergebniszeile Auslesen und Speichern einer Ergebniszeile 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

140 I N F O R M A T I K 140 Zugriff auf eine Spalte der Ergebniszeile Auslesen und Speichern einer Ergebniszeile 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]"; }

141 I N F O R M A T I K 141 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

142 INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr


Herunterladen ppt "INFORMATIK Informationssysteme / Datenbankabfragen Thomas Mohr."

Ähnliche Präsentationen


Google-Anzeigen