MySQL Tutorial

MySQL Logo
MySQL Logo

Dieses Tutorial beruht auf den Dokumentationen der gerade aktuellen MySQL Distribution 5.x- Insbesondere wurde viel Wert auf die genaue Übersetzung der MySQL – Sprachreferenz gelegt, die wichtige Details der Befehlsyntax von MySQL enthält. Darüber hinaus werden aber auch alle Probleme angesprochen, die insbesondere Einsteigern große Schwierigkeiten bereiten.

Tutorials sollen auch Einsteiger in die Lage versetzen, MySQL auf Ihrer Arbeitsstation zu installieren und Anwendungsprogramme, wie z.B. Microsoft Excel, Access, Foxpro, DBase und Winword an MySQL anzubinden. Darüberhinaus werden solide Grundkenntnisse in der sehr einfachen Programmiersprache PHP, SQL und auch PERL vermittelt.

Viele Beispiele in diesem Tutorial sind natürlich auf unseren Datenbankserver im Internet abgestimmt, der so installiert wurde, daß die hier genannten Beispiele ohne große Probleme funktionieren. Sie werden beim Einsatz von MySQL feststellen, daß diese Datenbank, obwohl sie der GPL (GNU PUBLIC LICENSE) unterliegt, also ohne Lizenzgebühren genutzt werden darf, keine minderwertige Software ist, sondern diese einige Features besitzt, die Sie verzweifelt bei anderen Datenbanken vermissen werden, wie z.B. das Privilegien-System. Außerdem wird diese ständig weiterentwickelt. Support von den Programmierern direkt ist ebenfalls erhältlich.

Was ist MySQL?

MySQL ist eine echte Multi-User, Multi-Treaded SQL Datenbank und wird von allen großen Providern oder auch Suchmaschinenbetreibern eingesetzt.

MySQL ist eine CLient/Server Implentierung, die aus einem Server-Dämon mysqld und vielen Client Programmen, sowie Bibliotheken für PERL, PHP/3, PHP/4 sowie ASP besteht. SQL ist eine standardisierte Datenbanksprache, die das Speichern, Updaten und den Zugriff auf Informationen erleichtert. Beispielsweise kann man Produktinformationen eines Kunden auf einem WWW-Server speichern und abrufen. MySQL ist äußerst schnell und flexibel genug, um sogar Bilder und Log-Dateien darin abzulegen.

In der Praxis ist MySQL sehr viel schneller, als z.B. ORACLE oder INFORMIX. Die wichtigsten Eigenschaften von MySQL sind Geschwindigkeit, Stabilität und einfache Bedienbarkeit. MySQL wurde ursprünglich entwickelt, weil auf TCX (dem Server der Entwickler) ein SQL Server benötigt wurde, der sehr große Datenbanken handeln konnte, und zwar um eine Größenordnung schneller, als die Datenbankhersteller damals liefern konnten. MySQL ist nun nun seit 1996 auf vielen Tausend Sites im Internet und Intranet im Einsatz und erfreut sich hier wachsender Beliebtkeit.

MySQL ist bei vielen tausend Unternehmen im täglichen Einsatz, von denen über 500 mehr als 7 Millionen Einträge bzw mehr als 100 Gigabyte an Daten mangagen. MySQL ist geradezu prädestiniert zur Beschleunigung bestehender ACCESS Datenbanken. Diese Kombination ermöglicht es, mit nur kleinen Änderungen in ACCESS die Datenbankabfragen um Faktor 3-100 zu beschleunigen. Der Grundstock, um den MySQL herum gebaut worden ist, ist eine Liste von Routinen, die sich im täglichen Einsatz seit Jahren bewährt haben.

Obwohl MySQL dauernd weiter entwickelt wird, hat es zu jedem Zeitpunkt der Entwicklung stets zuverlässig und stabil gearbeitet.

Datenbankstruktur

Im folgenden wird anhand eines prakischen Beispiels die Umsetzung von der Idee bis zur fertigen Datenbank beschrieben. Typische Fehler bei der Planung und Umsetzung der Implementierung einer relationalen Datenbank unter MySQL werden dargestellt und aufgekärt. Wer sich unnötig mit theoretischem Ballast zunebeln möchte, dem sei das Standardwerk von Gottfried Vossen: Datenbankmodelle, Datenbanksprachen und Datenbank-Management-Systeme empfohlen.

Zum Verständnis der in der Datenbanktechnik gebräuchlichen Sprache sei das Lexikon am Ende den Handbuches emfohlen. Zu einer Datenbank gehört immer Paperware als Dokumentation dazu. Man kann zwar spontan Datenbanken implementieren, jedoch passieren auch Profis Fehler bei der Planung der Struktur, die dann eventuell langwierige Änderungen im Quellcode der WWW-Interfaces oder der Datenbankstruktur nach sich ziehen. Besonders unangenehm wird es, wenn bereits die Datenbank genutzt wird, und dann aber dringende Änderungen der Struktur notwendig sind. Es müssen dann ja auch alle Frontends gleichzeitig ausgetauscht werden, was dann sicher zum Stillstand des Unternehmens führen würde.

Wer ACCESS als Frontend einsetzt, der wird bei vielen Clients dann sicher große Probleme haben. Diese dürften Datenintegrität, Funktionalität und die Konvertierung der unterschiedlichen Datenbankstrukturen ineinander betreffen. Es lohn sich also stets, schon vorher mögliche Änderungen der Struktur mit einzuplanen. Das ERM bzw. das ERD (Diagramm) gehört zu den wichtigsten Modellen, mit denen Datenbankstrukturen entworfen werden.


Aus den Entity – Relationship Modellen können nicht nur die Strukturen von SQL Datenbanken, sondern auch die Strukturen von allen anderen Datenbanken erstellt werden. Hierzu geht man nach einem Frage – Antwortschema vor. Bevor wir nun diese Strukturen erstellen, müssen unbedingt noch die Fachtermini geklärt werden:

  1. Eine Entity ist immer ein existierendes Objekt, eine Beobachtung, eine Transaktion oder Person, über welches Informationen in einer Datenbank abgelegt werden.
  2. Eine Entitätsmenge (Entity – Set) ist die Zusammenfassung einzelner Entities, die ähnliche oder vergleichbare Eigenschaften haben. Beispiel: Alle Bücher in einer Bibliothek, die Einwohner einer Stadt oder alle Raucher.
  3. Attribute sind Eigenschaften oder Merkmale einer Entität. Sie sind die typischen Eigenschaften einer Entität und charakterisieren diese Entität. Beispielsweise sind die Kunden einer Firma eine Entitätsmenge, also eine Ansammlung von einzelnen Entitäten. Sowohl eine Entity als auch eine Entitätsmenge werden durch Attribute charakterisiert. Als Attribute werden z.B. Kundennummer, Name, Vorname, Wohnort oder Straße bezeichnet. Es gibt sowohl einwertige Attribute zusammengesetzte Attribute. Ein Buch (also eine Entity) kann mahrere Autoren haben, ist also eine Entity mit mehrwertigem Attribut.
  4. Ein Entitätstyp beschreibt eine Menge von Entitäten mit gleichen Attributen. Ein Entitätstyp könnte ein Buch sein, welches mit den Attributen: Titel, Autor, Verlag, ISBN-Nummer in der Datenbank definiert wurde. Der Entitätstyp darf nicht mit Entitätsmenge verwechselt werden ! Eine Entitätsmenge ist eine Sammlung von vielen Büchern mit bestimmten Gemeinsamkeiten (alle eines Autors), ein Entitätstyp ist mehr als nur die Bücher eines Autors, es sind alle Bücher, die einen Autor, einen Verlag, eine ISBN-Nummer haben. Damit lassen sich alle im Buchhandel käuflichen Bücher beschreiben, aber nicht die privat gedruckten (wie z.B. dieses Handbuch für MySQL hier). Der Grund liegt darin, daß dieses Handbuch keine ISBN-Nummer besitzt.
  5. Schlüssel (key) oder Schlüsselkandidaten (candidate key) ist die minimale Kombination von Attributen, die eine Entität aus einer Entitätsmenge eindeutig identifiziert. Minimal bedeutet hier, daß man nicht alle Attribute angeben muß, damit man eine Person oder ein Buch eindeutig identifizieren kann. Die Zahl der notwendigen oder auch hinreichenden Attribute hängt natürlich stark von den Inhalten ab. Möchte man z.B. eine Person eindeutig identifizieren, so muß man sich die Attribute einer Person (also Entity) anschauen: · PERSON, beschrieben durch PersNr, Name, Vorname, Adresse, Geburtsdatum, Beruf
  6. Primärschlüssel (primary key) ist häufig identisch mit einem Schlüssel, z.B: ·PERSON (PersNr, Name, Vorname, Adresse, Geburtsdatum, Beruf). Wenn man sich zwischen mehreren eindeutigen Schlüsseln oder auch zusammengesetzen Schlüsseln entscheiden kann, nimmt man immer den einfachsten Schlüssel, der eine Entität (PERSON) eindeutig beschreibt. Dies ist heir die PersNr, also die Personalnummer. Es häfig eine laufende Nummer (Siehe hier Kapitel CREATE unter “autoincrement”).

So, nun sind vorläufig alle wichtigen Begriffe der Datenbanktechnik erklärt worden. Man muß sich also viele Gedanken darüber machen, welche Attribute zu welcher Entität gehören, welche veränderlich sind, welche von anderen abhängig sind (Adresse und Postleitzahl), und wie man diese am besten so ordnet, daß z.B. Redundanzen vermieden werden. Wir möchten ja nicht unsere Datenbank unnötig aufblähen.

Auswahl von Hardware für MySQL

Eine häufig gestellte Frage ist diejenige nach der ausreichenden Hardware. In der Praxis hat sich herausgestellt, daß RAM durch nichts zu ersetzen ist, außer durch noch mehr RAM.

Die Abstände der Performance sind aber nur bei hoher Last zu bemerken. Viel wichtiger für die Performance als WWW-Server ist z.B. die Konfiguration des Apache Webservers, der sich durch den Einsatz von MOD_PERL oder MOD_PHP dramatisch beschleunigen läßt. Damit wird auch die Ansteuerung von MySQL viel schneller, so etwa um Faktor 20-40.

Zugriffsberechtigungen

Direkt nach der Installation sollte man die Zugriffsrechte auf die MySQL Datenbank einschränken. Hierzu sollte das Einsteigertutorial MySQL für LINUX allen Einsteigern eine solides Verständnis der Materie vermitteln. Wer nun tiefer in die Vergabe der Rechte einsteigen möchte, für den sind die folgenden Kapitel von Interesse:

MySQL verwendet ein leistungsstarkes, nicht standardisiertes Sicherheits/Zugriffs-System, welches im Folgenden näher dargestellt werden soll.

Vorab sei erwähnt, daß nach jeder Änderung der Zugriffsrechte ein Reload des DB-Servers durchgeführt werden muß, damit die Änderungen wirksam werden. Dies wird mittels: mysqladmin reload erledigt.

Die grundlegende Funktion besteht darin, einem Benutzer auf einem Host Berechtigungen zur Ausführung von SELECT, INSERT, UPDATE und DELETE Befehlen zu erteilen (oder auch nicht). Ferner kann die Verwendung eines Anonymen Benutzer sowie MySQL-Funktionen wie LOAD DATA INFILE geregelt werden. Weiterhin werden mittels des Berechtigungssystems administrative Rechte an dem DB-Server selbst, wie z.B. Reload, vergeben.

Anmerkung: Man sollte im Folgenden beachten, daß die MySQL Usernamen und Passwörter nichts mit den UNIX-Usernames und Passwörtern zu tun haben!

MySQL unterscheidet nicht zwischen einzelnen Benutzern sondern zwischen der Kombination aus Benutzer und Host. Diese Kombination ergibt eine eindeutige ID. Das Sicherheitssystem regelt hierbei genauestens welcher Benutzer von welchem Host welche Rechte auf welcher Datenbank besitzt.

Diese Einstellungen werden in drei Tabellen abgelegt:

 user 
 host 
 db 

Die jeweiligen Tabellen sind wie folgt aufgebaut:

Beinhaltet alle Host/User Kombinationen, welche den MySQL-Server connecten dürfen. Alle Berechtigungen die ein Benutzer in dieser Tabelle enthält gelten für alle Datenbanken, sofern keine erweiterten Berechtigungen für den jeweiligen Benutzer in der Tabelle db definiert wurden. Man kann diese Berechtigungen auch als grundlegende Einstellungen ansehen und ein datenbankabhängiges Fein-Tunig in der Tabelle db festlegen.

Be the first to comment

Leave a Reply

Your email address will not be published.


*