Facharbeit Informatik: Entwicklung einer MySQL - Datenbank Fachoberschule am Beruflichen Schulzentrum e.o. Plauen Facharbeit in der Fachrichtung Technik im Fach Informatik Entwicklung einer MySQL – Datenbank von Max Epperlein FOSTLA04 Betreuer: Herr Taschik Ort, Datum: 03. März 2005 Seite 1 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank Inhaltsverzeichnis 1 Erläuterung ...................................................................................... 3 1.1 Facharbeitsbeschreibung............................................................. 3 1.2 Facharbeitsziel .............................................................................. 3 2 Einführung in Relationale Datenbanken .................................... 3 2.1 Datenbanken.................................................................................. 3 2.2 Relationale Datenbank-Modelle ................................................... 4 2.3 Datenbank – Management – Systeme (DBMS) .......................... 5 2.4 SQL (Structured Query Language) .............................................. 6 3 Normalisierung des Datenbank-Modells ................................... 7 3.1 Ziel der Normalisierung ................................................................ 7 3.2 Erste Normalform (1. NF).............................................................. 7 3.3 Zweite Normalform (2. NF)............................................................ 8 3.4 Dritte Normalform (3. NF) ............................................................. 9 4 Implementierungsprozess .......................................................... 10 4.1 MySQL als Datenbank-Management-System ........................... 10 4.2 Implementierungsphase ............................................................. 10 4.2.1 PHP (Hypertext Preprocessor)............................................. 10 4.2.3 Anlegen der Datenbasis ....................................................... 11 4.2.4 Einfügen, Bearbeiten und Suchen der Daten ..................... 11 5 Zusammenfassung ...................................................................... 12 6 Anhang ........................................................................................... 13 6.1 Logisches Datenbankmodell...................................................... 13 6.2 Literaturverzeichnis .................................................................... 14 6.3 Selbstständigkeitserklärung ...................................................... 14 Seite 2 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 1 Erläuterung 1.1 Facharbeitsbeschreibung Eine Vorüberlegung vor Begin der Facharbeit war es, etwas zu schaffen, was auch im weiteren Schulalltag Verwendung finden könnte. Durch die vorher absolvierte Berufsausbildung und die Absicht, auch in Zukunft im Informatikbereich tätig zu sein, entschloss ich mich, die Facharbeit im Fach Informatik zu schreiben. 1.2 Facharbeitsziel Das Ziel der Facharbeit ist die Entwicklung einer MySQL – Datenbank zur Archivierung des Facharbeitenbestandes unserer Schule. Um die Nutzung, Administration und Pflege der Datenbank zur erleichtern, wird zusätzlich eine Anwendung mit Benutzeroberfläche entworfen. Somit können die Facharbeiten und die dazugehörigen Schülerdaten einfach verwaltet und schnell abgerufen werden. 2 Einführung in Relationale Datenbanken 2.1 Datenbanken Der Begriff Datenbank wird in der Literatur als eine zweckgerichtete, strukturierte Sammlung von Daten, die einen Realitätsausschnitt abbilden und logisch miteinander in Beziehung stehen, bezeichnet. Ein Beispiel für eine nichtelektronische Datenbank ist eine Bibliothek. In dieser werden Bücher, Zeitschriften, Dokumente gesammelt und dem Nutzer strukturiert zur Verfügung gestellt. Der hat dann mittels Karteikarten oder dem ZeitschriftenIndex die Möglichkeit, den Bibliothekbestand nach beliebigen Datensätzen anhand unterschiedlicher Suchkriterien zu durchforsten. Voraussetzung dafür ist jedoch eine exakte Pflege des Datenbestandes, die bei Bibliotheken eine schwierige Aufgabe darstellt. Ein weiterer Nachteil gegenüber der Seite 3 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank elektronischen Speicherung einer Datenbank ist der nicht unerhebliche Zeitaufwand für die Suche von Informationen und der enorme Raumbedarf von Bibliotheken. 2.2 Relationale Datenbank-Modelle Eine relationale Datenbank organisiert den elektronischen Datenbestand in Form von Tabellen, die sich wiederum aus Zeilen und Spalten zusammensetzten. Aus Benutzersicht besteht jede relationale Datenbank also nur aus zweidimensionalen Tabellen. In der folgenden Abbildung sind die Tabellenbestandteile und deren Bezeichnungen dargestellt. Informationstheoret. Tabellenorientierte Begriffe Bezeichnungen Datenorientierte Bezeichnungen Relation Tabelle Tabelle Entität Tabellen – Kopf Objekt – Bezeichner Tupel Tabellen – Zeile Datensatz Attribut Tabellen – Spalte Attributwert Tabellen – Feld Attribut, Merkmal, Eigenschaft Attributwert, Ausprägung eines Merkmals Abbildung 1-1: Bestandteile einer Datenbanktabelle Zur Begrenzung von Redundanzen müssen die Daten auf mehrere Tabellen, die miteinander in Beziehung stehen, verteilt werden (siehe: 3 Normalisierung des Datenbankmodells). Dadurch lassen sich Daten leicht ändern, hinzufügen und löschen, was wiederum eine hohe Flexibilität gewährleistet. Außerdem ist die Anwendungsentwicklung bei vollständiger Implementierung des SQL Standards (siehe: 2.4 SQL) im DBMS einfach und schnell realisierbar. Der Nachteil dieses Modells besteht jedoch darin, dass große relationale Datenbanken eine hohe Rechnerleistung erfordern und bei Datenzugriffen auf eine Vielzahl von Tabellen das Laufzeitverhalten verschlechtern können. Dennoch überwiegen die Vorteile der relationalen Datenbank – Architektur. Deshalb wird diese von nahezu allen neueren Datenbank - Management Systemen verwendet. Seite 4 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 2.3 Datenbank – Management – Systeme (DBMS) Für das Anlegen, Verwalten und Pflegen elektronischer Datenbanken wird neben der eigentlichen Datenbank zunächst eine Software benötigt, die dem Benutzer diese Funktionen zur Verfügung stellt. Diese Software und die damit verbundene Daten Zugriffsverwaltung bezeichnet man als Datenbank Management - System. Organisationsprinzip eines modernen Datenbanksystems Datenbank-Applikationen Anwendung n Benutzeroberfläche (Menüs, Formulare) Anwender-Operationen (Datenpflege, Abfragen, …) Anwendung 2 Anwendung 1 Datenbankverwaltungssystem (z.B. DB2, Informix, MySQL, Oracle) DBMS (Datenbank-Management-Sytem) (logische Daten-Zugriffsverwaltung) Datenbasis Datenbank (physisch gespeicherte Daten) Abbildung 1-2: Überblick; Organisationsprinzip moderner Datenbanksysteme. Nahezu alle modernen Datenbanksysteme basieren auf der ISAM – Architektur (Index Sequential Access Method). Dieses indexsequentielle Zugriffsverfahren stellt eine Weiterentwicklung der B-Baum-Architekturen dar und gewährleistet sehr hohe Funktionssicherheit und kurze Datenzugriffszeiten auch bei sehr großen Datenmengen durch binäre Indexblocksuche und sequentielle Datenblocksuche. Mit anderen Worten Seite 5 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank werden die Daten anhand des Schlüsselwertes binär und die dazugehörigen Datenblöcke sequentiell nach Übereinstimmung mit der Suchanfrage durchforstet. 2.4 SQL (Structured Query Language) SQL wurde in Verbindung mit der Entwicklung des relationalen Datenbankmodells geschaffen und ist eine beschreibende, mengen orientierte DBMS – Zugriffssprache. Diese stellt die Kommunikation zwischen Anwendung und Datenverwaltungssystem sicher. Da die Datenbankanwendung fast ausschließlich von mehreren Benutzern zu unterschiedlichen Zwecken, wie zum Beispiel zur Administration, Pflege oder zum Informationsgewinn genutzt werden, stellt SQL fünf Kommandoklassen bereit. Es kann so sichergestellt werden, dass jede Benutzerebene zwar über das DBMS mit der Datenbasis kommunizieren kann, jedoch nur die für die explizite Nutzung vorgesehenen Maßnahmen zur Verfügung stehen. SQL – Kommandoklassen DAL DDL DQL DML TCL Database Administration Language Database Definition Language Data Query Language Data Manipulation Langueage Transaction Control Language Create Database Install Database Check Database Alter Database Alter Password Grant Revoke Deinstall Database Drop Database Create Table Create Index Create View Alter Table Drop View Drop Index Drop Table Select Update Insert Into Delete...From Connect To Disconnect Select... into Commit Rollback Abbildung 1-3: Übersicht; SQL-Kommandoklassen SQL ist somit das grundlegende Werkzeug für die Interaktion mit dem Datenbankverwaltungssystem und ist als weltweiter Standard anerkannt. Seite 6 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 3 Normalisierung des Datenbank-Modells 3.1 Ziel der Normalisierung Die Normalisierung des Datenbankmodells dient der Entfernung unerwünschter Datenredundanzen und dadurch der Vermeidung von Update - Anomalien. Update - Anomalien sind Schwierigkeiten mit den Insert -, Update- und Delete – Operationen einer Datenbank, die auf die Datenstruktur zurückzuführen sind. Die Normalisierung ist Teil der Datenmodellierung und liefert als Ergebnis ein logisches Datenbankmodell mit Tabellen und deren Assoziationen. Im Vorfeld der Normalisierung muss zunächst jedoch die gesamte zu erfassende Informationsstruktur ermittelt und deren logische Beziehungen analysiert werden. Die einzelnen Normalformen sind Richtlinien für die Entwicklung redundanzarmer Datenbankmodelle und helfen zum Teil Integritäts- und Inkonsistenz- Fehlerquellen zu vermeiden. Im folgenden Abschnitt werden die einzelnen Normalisierungsformen im direkten Zusammenhang mit der Facharbeiten Datenbank erläutert, wobei jedoch aus Platzgründen nur auf einen geringen Teil der vorhandenen Entitäten eingegangen werden kann. 3.2 Erste Normalform (1. NF) Eine Entität befindet sich in der ersten Normalform, wenn alle ihre Attribute nur einen einzigen Wert besitzen. Der Wert jedes Attributes muss elementar und atomar sein. Schüler(1) Schüler(2) Id Schülername Id Name Vorname 25 Mustermann, Hans 25 Mustermann Hans … … … … … Abbildung 2-1: Auszug; Entität Schüler(2) entspricht der ersten NF. Seite 7 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank In der Entität Schüler(1) der Abbildung 2-1 setzt sich das Attribut Schülername aus dem Nach- und Vornamen zusammen und besitzt somit zwei Werte. Wie in Schüler(2) dargestellt wird Schüler nun in die Attribute Name und Vorname zerlegt. Das Ergebnis Schüler(2) entspricht nun der ersten Normalform. 3.3 Zweite Normalform (2. NF) Eine Entität befindet sich in der zweiten Normalform, wenn sie bereits in der ersten Normalform vorliegt und alle nicht identifizierenden Attribute von der eindeutigen ID der Entität abhängen. Mit anderen Worten muss jede Spalte, außer Id, da sie den Primärschlüssel einer Zeile bildet, von der Tabelle Schüler selbst funktional abhängig sein. Schüler Id SchName SchVname Anschrift Ort Plz 25 Mustermann Hans Mühlweg 4 Bad Elster 08645 … … … … Abbildung 2-2: Auszug; Entität Schüler, entsprechend der ersten NF Durch das Prüfen der in Abbildung 2-2 dargestellten Attribute fällt auf, dass die Attribute Anschrift, Ort, Plz keine unmittelbare funktionale Abhängigkeit zu der Entität Schüler aufweisen, da für mehrere Schüler die gleiche Adresse vorhanden sein kann. Deshalb wird Adresse als neue Entität mit den Attributen Anschrift, Ort, Plz in die Datenbank aufgenommen. Nun werden die Attribute der beiden Entitäten über Primär- und Sekundärschlüssel miteinander verknüpft. Die daraus entstandenen Änderungen der Tabellen und deren Merkmale, die jetzt der zweiten Normalform entsprechen, sind in der Abbildung 2-3 aufgeführt. Seite 8 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank Schüler Id SchName Adresse SchVname AdressId Id Anschrift … 25 Mustermann Hans 1 1 Mühlweg 4 … … … … … … … … Abbildung 2-3: Auszug; Entitäten Schüler und Adresse, der zweiten NF entsprechend 3.4 Dritte Normalform (3. NF) Eine Entität befindet sich in der dritten Normalform, wenn sie bereits in der zweiten Normalform vorliegt und keine funktionalen Abhängigkeiten zwischen Nichtschlüsselattributen bestehen. Die Tabellen der Facharbeiten Datenbank erfüllen durch die Realisierung der zweiten Normalform bereits die Kriterien der dritten Normalform (siehe: 6.1 Logisches Datenbankmodell). Eine Verletzung der dritten NF läge nur dann vor, wenn der Entität Adresse zusätzlich die Attribute Land-Code und LandName, die Nichtschlüsselattribute darstellen jedoch eine funktionale Abhängigkeit zueinander aufweisen, beigefügt werden müssten. Da jedoch davon ausgegangen werden kann dass sich die Adresse eines Schülers innerhalb Deutschlands befindet, können diese Attribute vernachlässigt werden. Es existieren noch weitere Normalformen, die jedoch nicht für die Entwicklung effizienter Datenbankstrukturen relevant sind und somit vernachlässigt werden können. Bevor mit dem nächsten Schritt, der Implementierungsphase, begonnen werden kann, müssen zunächst die Datentypen aller Attribute festgelegt werden (siehe: 6.1 Logisches Datenbankmodell), um die Entstehung von nicht erwünschten Speicherbeanspruchungen zu vermeiden. Seite 9 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 4 Implementierungsprozess 4.1 MySQL als Datenbank-Management-System MySQL ist eines der am häufigsten eingesetzten Open – Source – Datenbankverwaltungssysteme und wurde unter der GPL (General Public License) veröffentlicht. Es stellt eine preisgünstige, oft sogar kostenlose und kompakte Alternative zu anderen großen Datenbank – Engines dar. Leider ist in dieser Software SQL nicht in vollem Umfang implementiert. Es fehlen außerdem einige Funktionen, die für komplexere Anwendung notwendig sein können. Zum Beispiel lassen sich zwar bestimmte Attribute als Primärbeziehungsweise Sekundärschlüssel kennzeichnen, werden jedoch nicht von MySQL geprüft. Dadurch wird die Anwendungsentwicklung erschwert. Dennoch liefert MySQL als DBMS auf Webservern besonders gute Performance Ergebnisse und findet in diesem Bereich die häufigste Anwendung. Da MySQL bereits auf dem Webserver der Schule integriert ist, müssen keine Installations- und Konfigurationsmaßnahmen des Datenbankverwaltungssystems durchgeführt werden. 4.2 Implementierungsphase 4.2.1 PHP (Hypertext Preprocessor) Da auf dem Server bereits die Scriptsprache PHP verfügbar ist, wurde die Anwendung in Form von mehreren Scripten entworfen. PHP stellt einen riesigen, speziell für die Webprogrammierung konzipierten Funktionsumfang bereit. Unter anderem wird auch das Einbinden von MySQL-Datenbanken gewährleistet. Da die direkte Interaktion zwischen Anwendung und MySQL nur mit SQL realisierbar ist, muss das PHP Script SQL-Befehle generieren und diese an die MySQL-Datenbank senden. Der Befehl wird vom Datenverwaltungssystem verarbeitet und eine Rückmeldung an das Script Seite 10 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank übergeben. Aus der Rückmeldung erzeugt das Script auf dem Server eventuelle Benutzerausgaben oder Fehlermeldungen und übermittelt diese in Form eines HTML-Dokumentes (Hyper Text Markup Language) an den ClientRechner. 4.2.3 Anlegen der Datenbasis Um sicherzustellen dass auf dem Schul-Webserver die Datenbasis entsprechend des Datenmodells angelegt wird, existiert eine Anwendung, die diese Aufgabe erfüllt. Es steht nun die Grundlage zum Anlegen des logischen Datenmodells mit allen Beziehungen der Entitäten bereit und es ist ebenfalls die Interaktion zwischen Anwendung und DBMS gesichert. Das Installationsscript („install/install.php“) legt alle Tabellen und deren Attribute in der Datenbank „facharbeiten“ an. Vorher muss diese jedoch von einem Administrator eingerichtet und in der Datei „config.php“ die Adresse des Webservers und die Login –Daten des Datenbank – Benutzers aktualisiert werden. Nachdem das Installationsscript erfolgreich ausgeführt wurde, existiert das Datenbankmodell in Form von Tabellen und Spalten in der Datenbank. Nur enthalten die einzelnen Attribute noch keine Werte. 4.2.4 Einfügen, Bearbeiten und Suchen der Daten Der folgende SQL-Befehl verdeutlicht, dass Eingaben über die Benutzeroberfläche des Datenverwaltungssystems einen aufwendigen und zeitintensiven Prozess darstellen. INSERT INTO tb_schueler (SchName, SchVname, AdressId) VALUES (‘Musterman’, ‘Hans’, ‘1’); Abbildung 4-1: Beipiel eines SQL-Befehls Da dieser Befehl allein dazu dient, einen einzigen Schüler in die Datenbank aufzunehmen, müssten bei großen Datenmengen unzählige Kommandos per Seite 11 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank Hand eingegeben werden. Um den Nutzern diesen Aufwand zu ersparen, wurde ebenfalls bereits eine Anwendung entwickelt. Aufgrund der Tatsache, dass die Schlüsselüberprüfung bei MySQL nicht vollständig funktionsfähig ist, ist der Entwicklungsaufwand des Administrationsscripts enorm gestiegen. Deshalb konnten noch nicht alle vorgesehenen Funktionen in das Script implementiert werden. Jedoch ist es bereits möglich, Datensätze in die Datenbank aufzunehmen und diese teilweise auch zu bearbeiten. Allerdings konnte der Quellcode der Administrationsdatei „managedb.php“ noch nicht überarbeitet und optimiert werden. Da der Datenbestand auch den Besuchern der Schul-Website zugänglich gemacht werden soll, musste eine Anwendung für die Suche mit bestimmten Kriterien und einer Ausgabe der gefundenen Datensätze ermöglicht werden. Diese ist bereits mit dem Script „searchdb.php“ realisiert worden. Es besteht dadurch die Möglichkeit sich alle Facharbeiten eines Fachbereiches anzeigen zu lassen oder nach einem expliziten Datensatz zu suchen. 5 Zusammenfassung Mit dem Datenbank-Modell, das von der Installationsanwendung umgesetzt wird, steht der Schule nun die Möglichkeit zur Verfügung, die Datenbank einfach und schnell anzulegen. Durch das Administrationsscript lassen sich die Datenbestände in die Datenbank eingeben und können durch die Suchfunktion gezielt wieder gefunden werden. Die Funktionen zum Einfügen und Pflegen der Daten arbeiten redundanzarm und vermeiden so größtenteils das Auftreten von Konsistenzfehlern durch die Anwendung. Lediglich die Funktionen zum Bearbeiten und Löschen der Datensätze müssen im Nachhinein noch vervollständigt werden. Seite 12 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 6 Anhang 6.1 Logisches Datenbankmodell Die folgende Abbildung veranschaulicht das Datenbankmodell, welches allen 3 Normalformen entspricht. Abbildung 6-1: Darstellung des finalen Datenbank-Modells der Facharbeiten Datenbank Seite 13 von 14 Facharbeit Informatik: Entwicklung einer MySQL - Datenbank 6.2 Literaturverzeichnis [1] Randy Jay Yarger; George Reese; Tim King: MySQL & mSQL. Köln: O Reilly Verlag 2000 [2] FAQ der Newsgruppen de.comp.lang.php. http://www.dclp-faq.de/ [3] MySQL-Referenzhandbuch. http://www.mysql.com/doc/de/ [4] Christoph und Hatlak; Jens: Datenbank, MySQL und PHP. http://ffm.junetz.de/members/reeg/DSP/ [5] Seidler, Kai: Apachefriends. http://ffm.junetz.de/members/reeg/DSP/ [6] Kelz, Andreas: Relationale Datenbanken – Eine Einführung. http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/ [7] Stepken, Guido: MySQL Datenbankhandbuch. http://www.rent-a-database.de/mysql/ [8] Morcinek, Peter: SQL Tutorium. http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/ 6.3 Selbstständigkeitserklärung Hiermit erkläre ich, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst und keine anderen Hilfsmittel als angegeben verwendet habe. Insbesondere versichere ich, dass ich alle wörtlichen und sinngemäßen Übernahmen aus anderen Werken als solche kenntlich gemacht habe. Seite 14 von 14