Informationssysteme Datenbankabfragen Thomas Mohr I N F O
Informationssysteme / Datenbankabfragen Thomas Mohr I N F O R M A T I K
K Agenda T I Datenbanken – Wozu? A Abfragesprache SQL R M Verwaltung My. SQL O Datenbankmodellierung F Zugriff auf Datenbanken (PHP & Co. ) I N Ausblick 2
I N F O R M A T I K Informationssysteme 3
Was ist ein Informationssystem ? I K • Ein Informationssystem kann auf formalisierte Fragen eines Anwenders Antworten aus einer gegebenen Datenmenge geben A T § Komponenten eines Informationssystems: R Erfassung O M Informationssystem Speicherung Datenbanksystem DBS Datenbankmanagementsystem F DBMS, z. B. My. SQL N Analyse Darstellung I Datenbank (Datenbasis) 4 Datenbank (Datenbasis)
Was ist ein Informationssystem ? K • Datenbasis / Datenbank T I § 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). A • Datenbankverwaltungssystem (DBMS) R M § Softwareprodukte für die dauerhafte, integre und anwendungsunabhängige Speicherung und Verwaltung von großen, mehrfachbenutzbaren integrierten Datenbasen O • Datenbanksystem F § Ein Datenbanksystem (DBS) besteht aus einem DBMS und einer oder mehreren Datenbanken N • Informationssystem I § Ein Informationssystem erweitert die Datenbank um eine Reihe von Werkzeugen zur Abfrage, Darstellung, Transformation und Analyse von Daten 5
Ein Ausgangspunkt im Unterricht… I K • Schüler führen eine Internet-Recherche durch: „Nachbarländer Deutschlands – Fläche, Einwohner, Hauptstadt“ I N F O R M A T è Nutzung eines Informationssystems è Unterschiedliche Darstellung der Informationen 6
Software-Architekturen: Standalone“-Programm „ K • z. B. M A T I § selbst programmierte Schülerdatei § in Delphi programmierte Übersicht von Länderinformationen R ng ellu t s r a O D I N F Anwendungsprogramm 7 ik“ g o L „ asis b n Date PC
Software-Architekturen: Standalone“-Programm „ K • • Vorteile î Daten meist nur vom erzeugenden Programm zu lesen î Erweiterungen aufwändig î Immer wieder gleiche Probleme (z. B. Datumsformat) M A T I ì Übersichtlichkeit (? ) ì Schnell zu programmieren ì nur eine Programmiersprache Nachteile R ng ellu t s r a O D I N F Anwendungsprogramm 8 ik“ g o L „ asis b n Date PC
Software-Architekturen - Client-Server K • z. B. R M A T I § Outlook und Exchange-Server § „einfache“, datenbank-basierte Schülerverwaltung Client I N F O Anwendungsprogramm ung l l e t s Dar “ ik „„LLooggik“ asis b n Date (Datenbank)Server asis nb Date Server 9
• z. B. § Outlook und Exchange-Server § „einfache“, datenbank-basierte Schülerverwaltung Anwendungsprogramm ung l l e t s Dar “ ik „Log Client I N F O R M A T I K Software-Architekturen - Client-Server (Datenbank)Server asis nb Date Server 10
Vorteile ì Datenbank übernimmt „Standardaufgaben“ ì Daten zentral vorhanden ì Erweiterungen relativ einfach • Nachteile î Installation von Software auf allen Clients notwendig î Weitere „Sprache“ zum Datenbankzugriff (für mehrere Benutzer / Programme) Anwendungsprogramm ung l l e t s Dar “ ik „Log Client I N F O R M I T • A K Software-Architekturen - Client-Server (Datenbank)Server asis nb Date Server 11
• Eine moderne 3 -schichtige Webarchitektur… ng Webclient (Browser) ellu t s r a D Client M A T I K Software-Architekturen – Webarchitektu Anwendungsprogramm Webserver (z. B. Apache und PHP) Server I N F O R ng ellu t s r Da ““ ikik „„LLoogg Datenbankserver asis (z. B. My. SQL) nb Date Server 12
• Eine moderne 3 -schichtige Webarchitektur… ng Webclient (Browser) ellu t s r a D Client Webserver (z. B. Apache und PHP) ik“ „Log Server I N F O R M A T I K Software-Architekturen – Webarchitektu Datenbankserver asis (z. B. My. SQL) nb Date Server 13
• • Vorteile Nachteile ì Keine Installation von zusätzlicher Software beim Client î http-Protokoll ohne Sessionverwaltung ng Webclient (Browser) ellu t s r a D Client Webserver (z. B. Apache und PHP) ik“ „Log Server I N F O R M A T I K Software-Architekturen – Webarchitektu Datenbankserver asis (z. B. My. SQL) nb Date Server 14
• 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. A T I K Typische Hardware-Verteilung Webserver I N F O R M Clients Datenbankserver 15
• Alle drei Schichten sind auf einem Rechner! A T I K … und zum Testen / für die Fortbildung? Internet Explorer Client Webserver Datenbankserver Apache I N F O R M Clients Datenbankserver 16 My. SQL
K Das andere Extrem – eine Web Farm T I Load Balancer M A Application. Server Farm R je 4 Prozessoren O HACMP Fail-Over Fail. Over. DB Server 32 GByte RAM I N F Production. DB Server FDDI Switch 2, 4 TByte 17
• 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 I N F O R M A T I K Arten von Datenbanken • Beide Formen waren vor allem bei Großrechnern im Einsatz und werden zunehmend von relationalen Datenbanken abgelöst 18
• Relationale Datenbanken § Die Daten werden in Form von Tabellen gespeichert § Zwischen den Tabellen werden Beziehungen aufgebaut (Relationen) Attribut (Merkmal, Spalte) A T I K Arten von Datenbanken Attributwert (Datenwert) Name Einwohner Hauptstadt Kontinent Dänemark Deutschland Indien Rwanda 5165000 81338000 761000000 6300000 Kopenhagen Berlin Delhi Kigali Europa Asien Afrika Datensatz (Tupel) Attributklasse I N F O R M Land § Objektrelationale Datenbanken • erweitern die relationalen Datenbanken und objektorientierte Funktionen (z. B. Vererbung) 19
I N F O R M A T I K Arten von Datenbanken 20 • Relationale Datenbanken – typische Vertreter § § § Oracle IBM (DB/2) Microsoft SQL Server (Access ? ) Informix My. SQL Open. Source Post. Gre. SQL
O R M A T I K 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 I N F § Isolation 21 • Transaktionen beeinflussen sich nicht gegenseitig § Durability • Eine Transaktion ist dauerhaft gespeichert, auch gegen Systemabstürze gesichert
Datenbanken – Wozu? Abfragesprache SQL Verwaltung My. SQL Datenbankmodellierung I N F O R M A T I K Agenda 22 Zugriff auf Datenbanken (PHP & Co. ) Ausblick
• Starten Sie den Datenbankserver und den Webserver I N F O R M A T I K My. SQL– Jetzt wird es (endlich) praktisch… 23 • Das Datenbanksystem bietet einen Service für andere Rechner an è Die Windows-Firewall kann dies melden. Der Port muss freigegeben werden.
• Die Administration von My. SQL funktioniert selbst schon am einfachsten über den Browser è Webarchitektur T I K Die erste Datenbank importieren A Browser R M Client Webserver N F O Apache I My. SQL 24 Datenbankserver http: //localhost/phpmyadmin
• Legen Sie eine neue Datenbank „terra 1“ an. I N F O R M A T I K Die erste Datenbank importieren 25 • Wählen Sie den Punkt „Importieren“ und suchen die Datei „terra 1. sql“
I N F O R M A T I K Die erste Tabelle… 26 • Klicken Sie auf „Struktur“: Die Tabelle „land“ wird angezeigt. • Lassen Sie sich den Inhalt der Tabelle anzeigen.
• 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. Land LNR Name Einwohner Hauptstadt Kontinent DK D IND RWA Dänemark Deutschland Indien Rwanda 5. 16 81. 33 761. 00 6. 30 Kopenhagen Berlin Delhi Kigali Europa Asien Afrika I N F O R M A T I K Relationale Datenbank – Aufbau Schlüsselattribut 27
• 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. A T I K Abfragen mit SQL SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY [Attribute]; I N F O R M • Syntax einer (einfachen) SQL-Abfrage: 28 • Die WHERE- und die ORDER BY-Klausel sind optional.
Länder mit über 10 Mio. Einwohner Land LNR Name Einwohner Hauptstadt Kontinent DK D IND RWA … Dänemark Deutschland Indien Rwanda … 5. 16 81. 34 761. 00 6. 30 … Kopenhagen Berlin Delhi Kigali … Europa Asien Afrika … I N F O R M T § SELECT Name, Einwohner, Kontinent FROM Land WHERE (Einwohner > 10) A I K Veranschaulichendes Beispiel 31 Ergebnistabelle Name Einwohner Kontinent Deutschland Indien … 81. 34 761. 00 … Europa Asien …
• Bedingungen mit Textattributen: § Name = 'Deutschland' § Name LIKE 'P%' (Paraguay, Polen, Portugal) § Name LIKE 'I_land' (Irland, Island) A T I K SQL – WHERE I N F O R M • Bedingungen mit Zahlattributen: 32 § § § § 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)
• Vergleich auf Nullwert (kein Attributwert angegeben): LNR IS NULL • Logische Verknüpfungen: § NOT (Kontinent='Europa') (Kontinent nicht Europa) R M A T I K SQL – WHERE § (Kontinent='Europa') AND (Einwohner<1) I N F O (Zwergstaaten in Europa) 33 § (Kontinent='Europa') OR (Kontinent='Asien') (Länder in Eurasien)
• 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 I N F O R M A T I K SQL – ORDER BY • Beispiele: SELECT * FROM Land ORDER BY Name SELECT * FROM Land ORDER BY Kontinent, Einwohner DESC 34
• Öffnen Sie das SQL-Fenster 1. Geben Sie alle Länder aus! SELECT * FROM Land I N F O R M A T I K Die ersten SQL Befehle 35 2. Geben Sie alle Länder aus: § § Name, Einwohner, Hauptstadt Sortierung nach Einwohner absteigend SELECT Name, Einwohner, Hauptstadt FROM Land ORDER BY Einwohner DESC
3. Welche Länder liegen in Asien und Australien? WHERE Kontinent='Asien' OR Kontinent='Australien' 4. Welche Länder haben zwischen 10 und 100 Mio. Einwohner? § Absteigend nach Einwohner sortiert I N F O R M A T I K Aufgaben, Datenbank: terra 1 36 WHERE Einwohner BETWEEN 10 AND 100 ORDER BY Einwohner DESC
• Wichtig sind vor allem Funktionen zur Manipulation von Strings und Datumsangaben, z. B. § DATEDIFF(D 1, D 2) Differenz (Tage) § NOW() Aktuelle Zeit/Datum (SELECT CURDATE()) § … • Wichtige Stringfunktionen § § § CONCAT(S 1, S 2, …) 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 My. SQL! I N F O R M A T I K Hilfsfunktionen SQL ist hier nicht standardisiert Die Funktionen sind bei anderen DBS oft unterschiedlich 37
5. Geben Sie die Länder in folgender Form aus: CONCAT(UPPER(Name), ' - ', Hauptstadt) AS Land, round(Einwohner) AS "Mio. Einwohner" Spalten können mit „AS“ umbenannt werden 6. Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner? WHERE Kontinent = 'Europa' AND Einwohner > 20 I N F O R M A T I K Aufgaben, Datenbank: erra 1 t 38 Frankreich? ? Problem: Europa wird unterschiedlich geschrieben! Lösung: Auslagerung in eine eigene Tabelle
• 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üsselin Land gespeichert wird. LNR Name Einwohner Hauptstadt Kontinent DK D IND RWA Dänemark Deutschland Indien Rwanda 5. 16 81. 34 761. 00 6. 30 Kopenhagen Berlin Delhi Kigali Europa Asien Afrika F O R M A T I K Relationale Datenbanken – Beziehungen I N Land 39 Kontinent LNR Name … KNR Name DK D IND RWA Dänemark Deutschland Indien Rwanda … … EU EU AS AF Europa Asien Afrika Schlüsselattribut aus Kontinent
• Zwischen den Tabellen bestehen Beziehungen (Relationen) Master PKey Detail Data FKey PKey Data I N F O R M A I § z. B. Kontinent eines Landes T K 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. 40
§ 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. I N F O R M T • Müssen in SQL Daten aus mehreren Tabellen entnommen werden, so werden sog. „Joins“ gebildet. A I K SQL – einfache. Joins 41 Land Kontinent LNR Name Einwohner KNR Name DK D IND RWA Dänemark Deutschland Indien Rwanda 5. 16 81. 34 761. 00 6. 30 EU EU AS AF Europa Asien Afrika
1. Cross-Join („jede Zeile mit jeder“) Land SELECT * FROM Land, Kontinent LNR Name Einwohner KNR Name DK D IND RWA Dänemark Deutschland Indien Rwanda 5. 16 81. 34 761. 00 6. 30 EU EU AS AF Europa Asien Afrika I N F O R M A T I § 42 LNR Name Einwohner KNR Name DK DK DK D D D IND IND … 5. 16 81. 34 761. 00 … EU EU EU AS AS AS … EU AS AF … Europa Asien Afrika Dänemark Deutschland Indien … Kontinent K SQL – einfache. Joins
I § § Es dürfen nur die Zeilen genommen werden, für die „Land“ und die „Kontinent“ Tabelle Daten des gleichen Kontinents enthalten. Dies wird durch die sog. „Join-Bedingung“ erreicht. SELECT * FROM Land, Kontinent WHERE Land. KNR= Kontinent. KNR I N F O R M § T 2. Einschränken auf „passende“ Datensätze. A K SQL – einfache. Joins 43 LNR Name Einwohner KNR Name DK DK DK D D D IND IND … 5. 16 81. 34 761. 00 … EU EU EU AS AS AS … EU AS AF … Europa Asien Afrika Dänemark Deutschland Indien …
2. Einschränken auf „passende“ Datensätze (2). § § T I K SQL – einfache. Joins I N F O R M A § Es sollen nur Länder mit > 10 Mio. Einwohner gezeigt werden. Momentan würde auch „Dänemark“ ausgegeben werden. Also muss eine weitere Bedingung erfüllt sein: SELECT * FROM Land, Kontinent WHERE Land. KNR = Kontinent. KNR AND Land. Einwohner > 10 44 LNR Name Einwohner KNR Name DK DK DK D D D IND IND … 5. 16 81. 34 761. 00 … EU EU EU AS AS AS … EU AS AF … Europa Asien Afrika Dänemark Deutschland Indien …
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 LNR Name Einwohner KNR Name D Deutschland IND Indien … … 81. 34 761. 00 … EU AS … Europa Asien Name Einwohner Name Deutschland Indien … 81. 34 761. 00 … Europa Asien … I N F O R M A T I K SQL – einfache. Joins 45 In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren.
1. Geben Sie alle Kontinente mit ihren Ländern aus: § § Name der Kontinente und Länder Sortierung nach Kontinent absteigend SELECT Kontinent. Name, Land. Name FROM Kontinent, Land WHERE Kontinent. KNR = Land. KNR ORDER BY Kontinent. Name DESC 2. In welchen Kontinenten gibt es Länder mit mehr als 100 Mio. Einwohner? SELECT DISTINCT Kontinent. Name SELECT Kontinent. Name FROM Land, Kontinent WHERE Land. KNR = Kontinent. KNR AND Land. Einwohner > 100 I N F O R M A T I K Aufgaben, Datenbank: terra 2 Problem: Es werden Duplikate angezeigt Lösung: DISTINCT-Anweisung 46
• 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“. Ort Land ONR Name … LNR Name … KNR BANGAL GOETTI KARLSR KOPENH Bangalore Göttingen Karlsruhe Kopenhagen … … IND D D DK DK D IND RWA Dänemark Deutschland Indien Rwanda … … EU EU AS AF I N F O R M A T I K Erweiterung der Datenbank Schlüsselattribut aus Land 47
• Ein erstes „E/R-Modell“ § eigentlich intuitiv zu lesen!? T I K Bisheriges „Schema“ der Datenbank M A Teil von Land Ort Teil von I N F O R Hauptstadt 48 Kontinent Finden Sie die Stelle in der Datenbank terra 3, an der die „Hauptstadt“ abgespeichert ist?
1. Geben Sie alle Orte mit ihren Ländern aus: § § T I K Aufgaben, Datenbank: terra 3 Name der Orte und Länder Sortierung nach Einwohnerzahl absteigend R M A SELECT Ort. Name, Ort. Einwohner, Land. Name AS Land FROM Ort, Land WHERE Ort. LNR = Land. LNR ORDER BY Ort. Einwohner DESC 2. Geben Sie alle Länder mit ihrer Hauptstadt aus! Sortierung nach Kontinent und Land. I N F O § 49 SELECT Kontinent. Name AS Kontinent, Land. Name, Ort. Name AS Hauptstadt FROM Ort, Land, Kontinent WHERE Ort. ONR = Land. Haupt. ONR AND Land. KNR = Kontinent. KNR ORDER BY Kontinent. Name, Land. Name
• 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: Ort Teil von Land Hauptstadt Ort I N F O R M A T I K SQL – Tabellen-Alias 50 § SELECT FROM WHERE AND o. Name AS Stadt, l. Name AS Land, hs. Name Ort o, Land l, Ort hs o. LNR = l. LNR Der Alias-Name für l. Haupt. ONR = hs. ONR Land ist nicht o. Einwohner>10000000 notwendig (verkürzt die Abfrage)
• Es sollen Flüsse gespeichert werden. § Flüsse fließen durch Orte. § Manche Orte werden von mehreren Flüssen durchflossen (z. B. Koblenz) • Wie sieht die Tabelle für die Flüsse aus? Fluss Ort FNR Name Laenge ONR Name ELB MEK MOS RHE Elbe Mekong Mosel Rhein 1144 4500 544 1320 GOETTI KARLSR KOBLEN KOPENH Göttingen Karlsruhe Koblenz Kopenhagen HAMBUR PHNOMP KOBLEN I N F O R M A T I K Erweiterung der Datenbank Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden. 51
• Es sollen Flüsse gespeichert werden. § Flüsse fließen durch Orte. § Manche Orte werden von mehreren Flüssen durchflossen (z. B. Koblenz) • Wie sieht die Tabelle für die Flüsse aus? Fluss Ort FNR Name Laenge ONR Name FNR ELB MEK MOS RHE Elbe Mekong Mosel Rhein 1144 4500 544 1320 GOETTI KARLSR KOBLEN KOPENH Göttingen Karlsruhe Koblenz Kopenhagen LEI RHE I N F O R M A T I K Erweiterung der Datenbank Problem: Für Orte müssen mehrere Flüsse eingetragen werden. 52 Lösung: Auslagerung der Zuordnung in eine eigene Tabelle
F O R M A T I K 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. Fluss Ort FNR Name Laenge ONR Name ELB MEK MOS RHE Elbe Mekong Mosel Rhein 1144 4500 544 1320 GOETTI KARLSR KOBLEN KOPENH Göttingen Karlsruhe Koblenz Kopenhagen FNR ONR ELB RHE MOS HAMBUR KOBLEN KARLSR KOBLEN I N Stadtfluss 53
I K Struktur der Datenbank terra 4 T 1 Teil von n Ort n Teil von N I 54 1 Hauptstadt 1 n durchfließt 1 m F O R M A Land Kontinent Fluss
1. Welche Orte liegen an der Donau? SELECT o. Name FROM Ort o, Stadtfluss sf, Fluss f WHERE o. ONR = sf. ONR AND sf. FNR = f. FNR AND f. Name = 'Donau' I N F O R M A T I K Aufgaben, Datenbank: terra 4 55 2. Welche Länder durchfließt die 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' 3. Welche Flüsse fließen durch Deutschland? SELECT DISTINCT f. Name, f. Laenge FROM Fluss f, Stadt. Fluss sf, Ort o, Land l WHERE f. FNR = sf. FNR AND sf. ONR = o. ONR AND o. LNR = l. LNR AND l. Name = 'Deutschland'
• 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 I N F O R M A T I K Gruppieren von Ergebnissen 56 ONR Name AALBOR KOPENH BERLIN DUESSE MAINZ TALLIN Dänemark Deutschland Estland Selbst zählen? ? ? NEIN!
• 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 I N F O R M A T I K Gruppieren von Ergebnissen 57 ONR Name AALBOR KOPENH BERLIN DUESSE MAINZ TALLIN Dänemark Deutschland Estland 2 3 1 Name Anzahl Dänemark Deutschland Estland 2 3 1
1. Wie viele Staaten haben Megacities Hauptstadt? SELECT COUNT(*) (> 5 Mio. Einwohner) FROM Land L, Ort O WHERE O. ONR = L. Haupt. ONR AND O. Einwohner > 5000000 ORDER BY O. Einwohner DESC I N F O R M A T I K Aufgaben, Datenbank: terra 4 58 als GROUP BY entfällt, wenn „nur“ gezählt wird. 2. Zählen Sie die Staaten pro Kontinent! § Geben Sie die Kontinente nach der Anzahl absteigend aus. SELECT K. Name, COUNT(*) AS Anzahl FROM Ort O, Land L, Kontinent K WHERE O. ONR = L. Haupt. ONR AND L. KNR = K. KNR AND O. Einwohner > 5000000 GROUP BY K. Name ORDER BY Anzahl DESC
3. Wie viele Einwohner haben die Länder pro Kontinent im Schnitt? SELECT k. Name AS Kontinent, AVG(l. Einwohner) AS Schnitt FROM Kontinent k, Land l WHERE k. KNR = l. KNR GROUP BY k. Name Weitere Built. In ORDER BY k. Name Funktionen: MAX, MIN, SUM, … 4. Welche Städte liegen an mehr als einem Fluss? I N F O R M A T I K Aufgaben, Datenbank: terra 4 59 SELECT o. Name, COUNT(*) AS Anzahl FROM Ort o, Stadt. Fluss sf WHERE o. ONR = sf. ONR GROUP BY o. Name HAVING COUNT(*)>1 ORDER BY o. Name
K Struktur der kompletten Datenbank miniterra „ “ I Sprache T n benachbart m m 1 Teil von n Land n Ort 1 Hauptstadt 1 n F R n O M A gesprochen durchfließt m 1 I N Teil von Kontinent 60 Fluss n 1 mündet
• Welche Städte liegen an mehr als einem Fluss? § Welche Flüsse sind es jeweils? SELECT o. Name, f. Name FROM Ort o, Stadt. Fluss sf 1, Fluss f WHERE o. ONR = sf 1. ONR AND f. FNR = sf 1. FNR AND EXISTS (SELECT NULL FROM Stadt. Fluss sf 2 WHERE sf 1. FNR<>sf 2. FNR AND sf 2. ONR=o. ONR) ORDER BY o. Name R M A T I K Für Experten… I N F O • Welche Länder grenzen an Deutschland? 61 SELECT l 1. Name, l 2. Name FROM Nachbarland n, Land l 1, Land l 2 WHERE (n. LNR 1='D' OR n. LNR 2='D') AND l 1. LNR = n. LNR 1 AND l 2. LNR = n. LNR 2
K § Geben Sie nur die Nachbarländer aus! SELECT IF(l 1. LNR='D', l 2. Name, l 1. Name) AS "Direkte Nachbarn" FROM Nachbarland n, Land l 1, Land l 2 WHERE (n. LNR 1='D' OR n. LNR 2='D') AND l 1. LNR = n. LNR 1 AND l 2. LNR = n. LNR 2 ACHTUNG: ORDER BY "Direkte Nachbarn" Nicht genormt! R M A T • Welche Länder grenzen an Deutschland? I Für Experten… SELECT fc. Name FROM Fluss fp, Fluss fc WHERE fp. FNR = fc. Ziel. FNR AND fp. Name = 'Rhein' I N F O • Welche Flüsse münden in den Rhein? Selbstreferenz der Tabelle Fluss 62
I N F O R M A T I K u. v. m. 63 • 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) § …
Datenbanken – Wozu? Abfragesprache SQL Verwaltung My. SQL Datenbankmodellierung I N F O R M A T I K Agenda 64 Zugriff auf Datenbanken (PHP & Co. ) Ausblick
• In einem Datenbanksystem müssen Rechte für verschiedene Benutzer verwaltet werden: • Jeder kann auf alle Datenbanken zugreifen und diese verändern § Mehrere Schüler sollen sich einen Datenbankserver „teilen“, dabei sich aber nichts gegenseitig „kaputtmachen“ I N F O R M T § My. SQL arbeitet nach der Installation ohne Schutz des Administrators A I K Verwaltung des Datenbanksystems 65 • 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
I N F O R M A T I K My. SQL– Passwort für Administrator vergeben 66 • Anmeldetyp für php. My. Admin ändern § Ins Verzeichnis xamppphpmyadmin wechseln. § Datei config. inc. php mit Notepad öffnen § Zeile $cfg['Servers'][$i]['auth_type'] = ‘config'; ändern auf $cfg['Servers'][$i]['auth_type'] = 'http';
• php. My. Admin in Browser starten § Menüpunkt „Rechte“ § Benutzer „root“ auswählen und bearbeiten I N F O R M A T I K My. SQL– Passwort für Administrator vergeben 67 § Passwort eingeben und speichern è Beim nächsten Aufruf von php. My. Admin ist die Eingabe des Passworts notwendig
I N F O R M A T I K Benutzer / Rechte vergeben 68 • Ü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
I N F O R M A T I K Benutzer / Rechte vergeben 69 • 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
1. Schützen Sie den Administrator-Zugang für ihren my. SQL-Server wie zuvor beschrieben. 2. Legen Sie einen Benutzer „ifb“ und Passwort „Speyer“ an. Dieser soll die Leserechte (SELECT) auf der Datenbank „miniterra“ erhalten. I N F O R M A T I K Benutzer anlegen 70 3. Versuchen Sie, mit diesem Benutzer auf die Datenbank des Nachbarn / der Nachbarin zuzugreifen.
Datenbanken – Wozu? Abfragesprache SQL Verwaltung My. SQL Datenbankmodellierung I N F O R M A T I K Agenda 71 Zugriff auf Datenbanken (PHP & Co. ) Ausblick
Schulverwaltung • A T I K Ein neues Informationssystem… Anforderungskatalo • • • N F O R M • I • 72 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. St. D L. Lämpel übernimmt dieses Jahr die 7 a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren. Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach. St. R A. Kribich hat sich fortgebildet und darf ab diesem Jahr neben Mathematik und ev. Religion auch Informatik unterrichten. Die Fachschaftsliste muss aktualisiert werden. Nachdem Li. A Sch. Merz in Rente gegangen ist, geht die Fachbereichsleitung in Sport an OSt. R‘ G. Lenk.
• Um ein Informationssystem zu erstellen, muss ein Ausschnitt der realen Welt („Miniwelt“) im Computersystem erfasst werden. I K Modellbildung • … F N • St. D L. Lämpel übernimmt dieses Jahr die 7 a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren. • Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach. 73 Datenmodell • Die Benutzer können eine Liste aller Lehrer mit ihrem Dienstkürzel abrufen. I O R M A T Miniwelt Unstrukturierte Informationen über die Miniwelt ? Repräsentation der Informationen als strukturierte Daten
• 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 I N F O R M A T I K Modellbildung 74 Externe Sicht Konzeptionelle Sicht Internes Modell (z. B. relationales Datenmodell)
• 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 I N F O R M A T I K Konzeptionelles Modell – E/R-Diagramme Lehrer 75
• 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) Kürzel: Name: Vorname: Titel: Lä Lämpel Ludwig St. D Kürzel: Name: Vorname: Titel: Kr Kribich Alfred St. R Kürzel: Name: Vorname: Titel: Le Lenk Gertrud OSt. R' I N F O R M A T I K E/R-Diagramme - Entitätstyp 76 Entitätstyp „Lehrer“ 3 Entitäten
• Gleichartige Beziehungen zwischen Entitäten werden als ein Beziehungstyp zwischen den Entitätstypen definiert. § Symbol: Raute • Beispiel: § Ein Lehrer führt Klassenfahrten durch. Kuerzel: Name: Lä Lämpel Stufe: Teil: 8 a Kuerzel: Name: Kr Kribich Stufe: Teil: 11 M 1 Kuerzel: Name: Me Merz Stufe: Teil: 12 m 3 Beziehungen I N F O R M A T I K E/R-Diagramme - Beziehungstyp 77 Lehrer Klassenfahrt Klasse Entitätstyp Beziehungstyp Entitätstyp
• 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. Lehrer Klasse I N F O R M A T I K Modellierung oft nicht eindeutig 78 führt durch Klassenfahrt nimmt teil
• Die Eigenschaften aller Entitäten und Beziehungen eines Entitätstyps bzw. eines Beziehungstyps werden mit Hilfe von Attributen erfasst. § Symbol: Ellipse • Beispiel: R M A T I K E/R-Diagramme - Attribute Lehrer Klasse Name I N F O Klassenfahrt Stufe Teil identifizierend Vorname beschreibend 79 Datum Kürzel Ziel Anzahl
• Ein Beziehungstyp wird durch die Kardinalität genauer bezeichnet: T 9 a Name: Müller Vorname: Yvonne Name: 9 b Name: Meier Vorname: Jan Name: 10 d Name: Dietz Vorname: Nicole Name: Seiler Vorname: Manfred O R Name: A § 1: n- Beziehung am Beispiel: Klassenzuordnung der Schüler M I K E/R-Diagramme Kardinalität – Schüler I N F Klasse 80 1 Klasse n angehören Schüler Ein Schüler gehört einer Klasse an. Einer Klasse gehören mehrere Schüler an.
• n: m – Beziehung am Beispiel: Kurszuordnung von Schülern in der MSS T LK: ja Name: Müller Vorname: Yvonne A Fach: Deutsch LK: ja Name: Meier Vorname: Jan Fach: Englisch LK: ja Name: Dietz Vorname: Nicole R Fach: Mathe M I K E/R-Diagramme Kardinalität – Name: Seiler Vorname: Manfred Schüler Kurs n besucht m Schüler I N F O Kurs Ein Kurs hat mehrere Schüler. Ein Schüler nimmt an mehreren Kursen teil. 81
• Die Kardinalitäten (1: 1, 1: n, n: m) geben nur an, wie viele Entitäten maximal miteinander verbunden sind. Klasse 1 angehören n Schüler § 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. N F O R M A T I K E/R-Diagramme Kardinalität – I Klasse 1 [1, 1] angehören n Schüler [8, 30] § Bsp. : Eine Klasse hat minimal 8 und maximal 30 Schüler. 82
• Beziehungen können auch auf dem gleichen Entitätstyp gelten, Selbstbeziehung oder Reflexive Beziehung. § Bsp. : Heirat Vorname: Klaus Name: Bach Vorname: Stefan Name: Meier Vorname: Sabine Name: Bach-Meier Vorname: Petra Name: Hurtig Vorname: Hans Personen N F R Name: Meier O M A T I K E/R-Diagramme – Reflexive Beziehungstype I Personen oder n: m ? 83 1 1 Heirat
• 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. I N F O R M A T I K Normalisierung von relationalen Schemata § Weitergehendes mit Beispielen in: http: //de. wikipedia. org/wiki/Normalisierung 85
K è Für jeden Entitätstyp eine Tabelle T • Transformation von Entitätstypen I Transformation E/R-Modell in relationales Schem E/R-Modell Name SNR R M A Schüler Schueler I SNR 86 Name Vorname Relationales Schema N F O Vorname
• 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). n angehören Schüler KNR Name SNR Stufe O R M Klasse 1 E/R-Modell A T I K Transformation E/R-Modell in relationales Schem Klasse I KNR 87 Schueler Stufe SNR Name Vorname KNR Relationales Schema N F Vorname
• Transformation von n: m-Beziehungstypen è Einfügen eines Fremdschlüssels nicht möglich è Separate Tabelle mit zwei Fremdschlüsseln besucht m Schüler Name KNR Stufe SNR Fehlstunden O R M Kurs n E/R-Modell A T I K Transformation E/R-Modell in relationales Schem Kurs I KNR 88 Besucht Stufe KNR Schueler Fehlst. SNR Name Vorname Relationales Schema N F Vorname
• 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. Zusatzdaten 1 Schüler. Privat Vorname SNR Konfession SNR Name O R M Schüler 1 E/R-Modell A T I K Transformation E/R-Modell in relationales Schem Schueler I SNR 89 Name Schueler. Privat Vorname SNR Konfession Herkunft Relationales Schema N F Herkunft
• DBDesigner 4 http: //fabforce. net/dbdesigner 4/ • Ungetestet: § Mogwai ER-Designer (http: //sourceforge. net/projects/mogwai/) § TOAD Data Modeler § TOAD für My. SQL (Beta) http: //www. toadsoft. com/toadmysql/Overview. htm I N F O R M A T I K Tools für E/R-Diagramme 91 • Oder doch einfach mit Office-Programmen…
I • Es werden alle Lehrer. Innen mit ihren Namen, Vornamen, Kürzeln und Dienstgrad erfasst. • Die Benutzer können im Internet eine Liste der Klassen mit ihren Klassenleiter. Innen einsehen. • Es ist eine Suche nach den Fachschaften der Schule möglich. Dabei werden auch alle Lehrer. Innen angezeigt, die der Fachschaft angehören. I N F O R M „Schule“ T • Erstellen Sie ein E/R-Modell und dann das relationale Schema. A K Aufgaben 92
I T • In der Bibliothek müssen Bücher erfasst werden. Eine Suche ist möglich über Sachgebiet, Autor, Titel, Erscheinungsort und –jahr, Verlag. M • 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. I N F A „Bibliothek“ R • Erstellen Sie ein E/R-Modell und dann das relationale Schema. O K Bibliothek … Anforderungskatalog 93
• Eine Datenbank für das Schema kann fertig importiert werden! (Bibliotheks-DB_latin. sql) O R M A T I K Anfragen an die Bibliothek-Datenbank 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! I N F (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? ) 94
I • 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. I N F O R M A „Arztpraxis“ T K Arztpraxis … Anforderungskatalog 95
Datenbanken – Wozu? Abfragesprache SQL Verwaltung My. SQL Datenbankmodellierung I N F O R M A T I K Agenda 96 Zugriff auf Datenbanken (PHP & Co. ) Ausblick
• Problem: „Verfolgen eines Flusslaufes“ § von der Quelle zum Meer z. B. Spree Nordsee T I K Vernetzung des Themas - Grenzen von SQL • Hier werden iterative Strukturen benötigt, die SQL (als mengenorientierte Sprache) im Standard nicht bietet. Weser Rhein Fulda Mosel Neckar Donau Inn F I N Werra Main è Anknüpfung an Programmierung § PHP, Delphi, Java Havel Aller O R M A Elbe Isar 97 Spree
• Problem: „Verfolgen eines Flusslaufes“ § vom Meer zu den Zuflüssen z. B. Nordsee T I K Vernetzung des Themas - Grenzen von SQL R M A Elbe Havel Aller è Beispiel für eine (elegante? ) rekursive Programmierung Weser Rhein O Fulda Werra F Main Neckar Donau Inn I N Mosel Isar 98 Spree
• Grundlegende Schritte jedes Datenbankzugriffs in PHP: 1. Verbindung mit dem Datenbanksystem aufbauen $link = mysql_connect($Host, $Benutzer, $Passwort) or die("DB-Verbindung unmöglich: ". mysql_error()); M A T I K Zugriff auf. My. SQLüber PHP § 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. I N F O R § 99 2. Datenbank auswählen mysql_select_db($Datenbank) or die("Auswahl Datenbank unmöglich: ". mysql_error());
Abfrage ausführen $result = mysql_query($SQLText) or die("Anfrage fehlgeschlagen: ". mysql_error()); § 4. Grundlegendes Problem F O • 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 N i. Array ii. Assoziatives Array iii. Objektorientiert 5. 100 Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann. Ergebnisse ausgeben § R M A I 3. T K Zugriff auf. My. SQLüber PHP Freigabe der Handles (kann entfallen) mysql_free_result($result); mysql_close($link);
§ mysql_fetch_array liefert eine komplette Zeile des Ergebnisses als Array (Alternative: mysql_fetch_row) § Nach der letzten Zeile wird FALSE zurückgegeben A I • Ausgabe der Ergebnisse als Array T K Zugriff auf. My. SQLüber PHP Schleife über alle Zeilen des Ergebnisses while ($arr. Row = mysql_fetch_array($result)) { echo "$arr. Row[0] : $arr. Row[1]"; } I N F O R M Auslesen und Speichern einer Ergebniszeile als Array Zugriff auf eine Spalte der Ergebniszeile 101
• 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 A T I K Zugriff auf. My. SQLüber PHP Schleife über alle Zeilen des Ergebnisses while ($arr. Row = mysql_fetch_array($result)) { echo "$arr. Row[Land] : $arr. Row[Sprache]"; } I N F O R M Auslesen und Speichern einer Ergebniszeile als Array Zugriff auf eine Spalte der Ergebniszeile 102
• Ausgabe der Ergebnisse als Objekt § mysql_fetch_object liefert eine komplette Zeile des Ergebnisses als Objekt § Nach der letzten Zeile wird FALSE zurückgegeben A T I K Zugriff auf. My. SQLüber PHP Schleife über alle Zeilen des Ergebnisses while ($o. Row = mysql_fetch_object($result)) { echo "$o. Row->Land : $o. Row->Sprache"; } I N F O R M Auslesen und Speichern einer Ergebniszeile als objekt Zugriff auf eine Spalte der Ergebniszeile 103
I • Weitere interessante Funktionen: § mysql_num_rows($result) T K Zugriff auf. My. SQLüber PHP § mysql_num_fields($result) • Gibt die Anzahl der Zeilen (Datensätze) im Ergebnis aus. M A • Gibt die Anzahl der Spalten im Ergebnis aus. § mysql_field_name($result, 0) • Name eines Feldes im Ergebnis. I N F O R § mysql_affected_rows() 104 • Liefert die Anzahl betroffener Datensätze einer vorhergehenden My. SQL 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";
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 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. I N F O R M A T I K PHP und Datenbanken – Aufgaben 105 4. Geben Sie den Verlauf eines Flusses bis zur Mündung aus. (Achtung: Rekursion!)
• In Delphi kann der Zugriff auf Datenbanken mittels Borland Database Engine (BDE) bzw. db. Express 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 • Units, die einen einfachen Datenbankzugriff erlauben § Einsteiger-Tutorial dazu: http: //www. dsdt. info/tutorials/ I N O § My. SQLDirect (http: //www. sourceforge. net/projects/directsql) F R M A T I K My. SQLin Delphi 106
• ODBC (Open Data. Base 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 My. SQL separat installiert werden (http: //mysql. org/downloads/connector/) F ODBC ung l l e t s Dar “ ik „Log ctor e n Con Client I Anwendungsprogramm N O R M A T I K My. SQLmit ODBC „anzapfen“ (Datenbank)Server 107 sis D ba aten Server
I N F O R M A T I K My. SQLmit ODBC „anzapfen“ 108
• 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. I N F O R M A T I K ODBC-Zugriff am Beispiel Excel 2003 109 § Diese Datei kann für eigene Zwecke leicht mit einem Editor angepasst werden.
Datenbanken – Wozu? Abfragesprache SQL Verwaltung My. SQL Datenbankmodellierung I N F O R M A T I K Agenda 110 Zugriff auf Datenbanken (PHP & Co. ) Ausblick
• Weitere Möglichkeiten von SQL § Outer Joins § Sub-Selects § Zugriffsbeschleunigung über Indizes § Verwaltung der physischen Speicherung • storage engine Inno. DB für My. SQL • Sicherung der Datenbank • Verändern der Datenbankinhalte mit SQL § INSERT / DELETE / UPDATE I N F O M • Datenbank-Management R A T I K Ausblick - Was hätte man noch alles behandeln können • Verändern der Datenbankstruktur über Anweisungen § Data Definition Language (DDL) • u. v. m. 111
• XAMPP § http: //www. apachefriends. org/de/xampp. html • Deutsche My. SQL Seite § http: //www. mysql. de/ (englisch: http: //mysql. com/) • My. SQL Gui Tools § http: //www. mysql. de/downloads/gui-tools/ • PHP-Dokumentation (mit My. SQL Funktionen) § http: //www. php. net/download-docs. php N F O R M A T I K Software / Links I • Connectors (ODBC, JDBC, …) für My. SQL 112 § http: //www. mysql. de/downloads/connector/
• Material zur My. SQL-Verwendung von Klaus Merkert § http: //www. hsgkl. de/faecher/inf/material/datenbanken/mysql/index. php I N F O R M A T I K Software / Links 113 • Material zu DB allgemein von OSZ Handel, Berlin § http: //oszhdl. be. schule. de/gymnasium/faecher/informatik/datenbank en/index. htm • u. v. m.
• Schema zur Beispieldatenbank „schulverwaltung. sql“ LNR Name A T I K Schemata der Beispieldatenbanken Vorname n M Lehrer FNR Klassenleiter F O R n N m I Klassen KStufe 114 KBuchstabe Saal unterrichtet m Fach Faecher
• Schema zur Beispieldatenbank „bibliothek. sql“ Buch. Nr Autor … zurueck n A T I K Schemata der Beispieldatenbanken Ausleihe Leser. Nr m Nachname … Leser M Buecher … 1 R n F Verlag Ist Teil von 1 Leserprivat I 1 N O gibt heraus VNR 115 Name Ort Leser. Nr Geschlecht …
• Schema zur Beispieldatenbank „wm 2006. sql“ I K Schemata der Beispieldatenbanken Ort T 1 A n Team 1 Begegnung Datum Team 2 1 n Ergebnis 1 1 Team Schiedsrichter N F O R M n n I 1 1 116 Land 1
• WM-Datenbank als UML-Diagramm I K Schemata der Beispieldatenbanken Ort T ONR A TNR 1 M TNR 2 Name Sitze Begegnung SNR Datum TNR Team 117 Schiedsrichter Trainer LNR TNR LNR I N F O R Ergebnis TNR in Team ist Primär- und Fremdschlüssel Land LNR Name Einwohner Kontinent Name Vorname
- Slides: 113