20160715 UNI KÖLN Datenbanken und unsere Buchbeispiele

Werbung
Datenbanken und unsere Buchbeispiele
Freitag, 15. Juli 2016
19:46
Wer in der letzten stattgefundenen Sitzung anwesend war, hat gesehen, wie wir für unsere
Schnittstelle von PHP zu Javascript einzelne Bücher jeweils in gleichstrukturierte Arrays gepackt
haben, um danach alle diese Bücher-Arrays wieder in ein Gesamt-Array zu packen. Das Ergebnis ist
ein Array, das als Werte mehrere Arrays mit immer der gleichen Struktur hat, von denen jedes ein
Buch repräsentiert. Dieses Array, nennen wir es $buecher, können wir eins zu eins ausgeben:
print json_encode( $buecher );
Es ist naheliegend, dass diese von uns gewählte Struktur in der Praxis nichts ist, das wirklich
innerhalb von PHP von Hand gefüllt werden wird. Vermutlich wird es eine Datenbank geben, aus der
die Daten ausgelesen werden. Diese Daten werden dann in einer Struktur organisiert, json-kodiert
und schließlich ausgegeben.
Ein einzelnes Wort wollen wir dabei etwas näher beleuchten, wenn auch nur in den gröbsten
Grundzügen: Datenbank. Dieser Begriff ist häufig eine ziemlich große "Black Box" ohne wirklichen
Inhalt, es wird einfach akzeptiert, dass eine Datenbank existiert, die irgendwie Daten speichert und
irgendwie auch wieder ausgibt. Und ich muss enttäuschen, daran wird sich auch nicht wirklich
tiefgründig etwas durch die Lektüre dieses PDFs ändern. Es ist dennoch wichtig, vor allem im Hinblick
auf weiterführende Kurse aus dem IT-Zertifikat, wenigstens einige Begriffe richtig einschätzen und
einsetzen zu können. Vielleicht ist die Black Box danach ein bisschen aufgehellt.
Die mit Abstand häufigste eingesetzte Datenbank im Bereich der Webentwicklung ist eine MySQLDatenbank. Besonders das Zusammenspiel zwischen MySQL und PHP funktioniert so reibungslos,
dass es, abgesehen von PostGreSQL, wenige Alternativen gibt. Seit einiger Zeit taucht immer
häufiger MariaDB auf, das aber quellcodegleich mit MySQL ist, die beiden können eins zu eins
gegeneinander ausgetauscht werden. Lediglich die Lizenzpolitik ist grundlegend verschieden. Wir
bleiben bei der Betrachtung bei MySQL und tauchen in das System ein, indem wir erst das große
Ganze betrachten und dann immer kleingliedriger werden.
MYSQL ist ein Datenbank-Managementsystem (DBMS)
Häufig wird MySQL als "Die Datenbank" betrachtet. Streng genommen ist das falsch. Wenn Sie
MySQL auf Ihrem Rechner installieren, dann haben Sie noch keine Datenbank installiert. (Einige
Systeme bringen bei der Installation von MySQL bereits Test-Datenbanken mit, aber Sie haben noch
keine eigene Datenbank installiert.) Sie haben lediglich ein System installiert, mit dem sich
Datenbanken verwalten lassen.
Ihre MySQL-Installation ist in der Lage, deutlich mehr als eine Datenbank zu verwalten. Sie müssen
eine Datenbank erst einmal erzeugen, wir spielen dies mit einer Datenbank "bibliothek" durch. Sie
werden gleich verstehen, warum wir sie nicht direkt "buecher" oder ähnlich nennen.
Die eigentliche Datenbank
Haben wir eine Datenbank angelegt, in unserem Beispiel "bibliothek", können wir noch keine Daten
darin speichern. Eine Datenbank selbst ist erst einmal leer, bevor wir jetzt unsere Bücher in der
Datenbank speichern können, müssen wir eine Tabelle anlegen, in der die Daten strukturiert
abgelegt werden können.
Die Tabelle in der Datenbank
Die Tabelle müssen wir genau vorstrukturieren. Die Tabelle lässt sich wirklich wie eine Excel-Tabelle
verstehen, nur dürfen wir nicht einfach wild Daten in jeder Zelle speichern, wie es uns beliebt. Wir
Pages 1-100 Seite 1
verstehen, nur dürfen wir nicht einfach wild Daten in jeder Zelle speichern, wie es uns beliebt. Wir
müssen, bevor wir das erste Buch speichern, genau definieren, welcher Wert in welcher Spalte der
Tabelle stehen wird. Eine leere Tabelle "buecher" könnte dann so überschrieben sein:
buchtitel autor
isbn
preis
kurzbeschreibung regalplatz
Außerdem wird genau festgelegt, ob eine Spalte freien Text enthält, oder vielleicht eine Zahl, wobei
auch zwischen Komma-Zahlen und Ganzzahlen unterschieden wird. Wir müssen sogar definieren,
wie viele Stellen unsere Zahlen maximal haben dürfen bzw. wie lang der Text maximal sein darf.
Haben wir das gemacht, dürfen wir nun endlich unsere Bücher in der Tabelle speichern.
Der Datensatz in der Tabelle
Jede Zeile in der Tabelle "buecher" repräsentiert also ein Buch. Wir sprechen hier von Datensätzen.
Jede Zeile ist ein Datensatz der jeweiligen Tabelle. Diese könnte dann so aussehen, wobei die
Überschrift keine eigene Zeile, sondern eine "echte" Überschrift ist:
buchtitel
autor
isbn
preis
kurzbeschreibung
Harry Potter Rowling 12345678 23.95
IMärchenbu Grimm 98765432 10.32
ch
Harry Potter Rowling 1
24680864 26.96
II
2
regalplat
z11.4
Harry Potter ist eines der meistverkauften
Bücher
Grimmsweltweit
Märchen gehören zu den brutalsten 52.94
Erzählungen.
Fortsetzung der Harry Potter Reihe
12.1
In diesem Fall haben wir nun drei Datensätze in unserer Tabelle. Um diese Daten aus der Datenbank
bzw. der Tabelle wieder auszulesen, müssen wir eine spezielle Sprache nutzen.
SQL dient der "Bedienung" der Datenbank
Das Datenbank-Management-System selbst hat keine grafische Oberfläche, sondern lässt sich nur
über Texteingabe bedienen. Es gibt Tools, die eine grafische Oberfläche zur Verfügung stellen. Bei
MySQL ist das allen voran PhpMyAdmin. Dennoch wandelt dieses Tool Ihre grafischen Befehle auch
nur in Text-Befehle um. Wenn Sie von PHP aus die Datenbank abfragen wollen, müssen sie diese
SQL-Befehle, die auch SQL-Statements genannt werden, von Hand schreiben (lernen).
Wenn Sie PHP mit Ihrem MySQL-DBMS verbinden, geben Sie bereits die Datenbank an (hier
"bibliothek"), die verwendet werden soll. Das geht über spezielle PHP-Befehle, die noch nichts direkt
mit SQL zu tun haben. Ihre SQL-Befehle landen also direkt in Ihrer Datenbank "bibliothek". Hier
könnten Sie jetzt abfragen:
SELECT buchtitel, autor FROM buecher
Das Ergebnis dieser Abfrage sieht so aus:
buchtitel
autor
Harry Potter I Rowling
Märchenbuch Grimm
Harry Potter II Rowling
Sie bekommen alle Datensätze aus der Tabelle "buecher", allerdings haben Sie nur nach buchtitel
und autor gefragt und bekommen auch nur diese zurückgeschickt.
Und jetzt kommt das zum Tragen, was wir in der letzten Veranstaltung gelernt haben (, auch wenn
das haarscharf an der Wahrheit vorbei geht): Sie bekommen von der MySQL-Datenbank ein Array
mit allen Datensätzen zurück, jeder Datensatz entspricht wiederum einem Array, die Indizes dieser
"inneren" Arrays sind dann "buchtitel" und "autor"!
Pages 1-100 Seite 2
"inneren" Arrays sind dann "buchtitel" und "autor"!
Es gibt beinahe unzählige Möglichkeiten, Ihre MySQL-Statements zu erweitern. So könnten Sie
angeben:
SELECT buchtitel, isbn FROM buecher WHERE autor = 'Rowling'
Das Ergebnis:
buchtitel
isbn
Harry Potter I 12345678
Harry Potter II 246808642
Und natürlich können Sie mit "INSERT" Datensätze einfügen, mit "DELETE" löschen und mit
"UPDATE" ändern. Es gibt zahlreiche weitere Statements.
Warum sollte man diese Datenbanken nutzen? Sie sind unglaublich schnell! Wenn man mit PHP
Daten in einem Array sortiert, stößt man relativ schnell an die Grenzen des für den Rechner
machbaren. Unsere MySQL-Tabelle wird ohne größere Probleme selbst auf einem Notebook eine
echte Bibliothek verwalten können, und gleich auch noch in einer zweiten Tabelle alle "studenten"
und "ausleihen" dazu.
Tiefer werden wir an dieser Stelle nicht gehen. Es empfiehlt sich aber, für den Kurs von Frau Kurz zu
wissen: Ein Datenbank-Managementsystem ist das, was normalerweise installiert wird, zum Beispiel
"MySQL". Innerhalb dieses DBMS werden dann Datenbanken angelegt, innerhalb der Datenbanken
Tabellen, und erst in diesen Tabellen finden unsere Datensätze Platz. Die Daten werden mit der
Sprache SQL bearbeitet.
Alle diese Aussagen beziehen sich auf MySQL, dieses System ist eine "relationale" Datenbank. Jede
relationale Datenbank bzw. jedes relationale DBMS ist ähnlich aufgebaut.
Pages 1-100 Seite 3
Herunterladen