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