Grundlagen zu Datenbanken zu Beginn der Jgst. 13 Bereits bei der Planung einer Datenbank muss der Datenbankentwickler darauf achten, Nachteile für das spätere System zu vermeiden. Die Strukturen müssen so aufgebaut werden dass es zu keiner Zeit zu Datenredundanzen kommen kann. Der Begriff Redundanz (lat. redundare) bedeutet "im Überfluss vorhanden sein". Im Zusammenhang mit Datenbanken ist hiermit das Vielfache Vorkommen der gleichen Information an unterschiedlicher Stelle gemeint. Dies muss im Zusammenhang mit Datenbanken unbedingt vermieden werden. Redundanzen können nicht nur verteilt über mehrere Datenbanken vorkommen, sondern bereits in ein und derselben Datenbank. Da sich diese mehrfach vorkommenden gleichen Daten schwer pflegen lassen ist es ein Hauptziel der Datenbankentwicklung, diese Redundanzen zu vermeiden. Ein weiteres Qualitätsmerkmal einer Datenbank ist es, wenn die Daten möglichst eng an den tatsächlichen Gegebenheiten modelliert werden, Arbeitsabläufe z.B. zwischen Abteilungen genau modelliert werden und alle Abteilungen genau auf den gleichen Datenbestand zugreifen und Änderungen an den Daten sofort allen Abteilungen zur Verfügung stehen. Pflegt z.B. jede Abteilung ihren eigenen Datenbestand und sind daher mehrere Datenbanken vorhanden, kann es zu Inkonsistenzen kommen, wenn eine Abteilung (z.B. Auftragsannahme) eine Kundenadresse ändert, der Versand aber nicht. Anwender greifen über verschiedene Anwendungen auf die Informationen in einem Datenbanksystem zu. Der Zugriff wird über das Datenbankmanagementsystem kontrolliert. Jeder Anwender erhält die Auswahl an Informationen, die für die Ausführung der Aufgaben von Bedeutung sind. Die Darstellung dieser Auswahl auch Sicht oder view genannt und ist ein fester Begriff in der Terminologie der Datenbanken. In dieser Sicht kann auch die Art der Darstellung beeinflusst werden. Die Daten werden hier formatiert ausgegeben. Weil die Daten zentral abgelegt werden, können Datenbanksysteme diese Aufgaben auch zentral und für alle verbindlich lösen. Ein Datenbanksystem stellt die folgenden Mechanismen zur Verfügung: Daten sind für verschiedene Anwendungen verfügbar. Verschiedene Sichten auf die gleichen Daten werden ermöglicht. Ein kontrollierter gleichzeitiger Zugriff verschiedener Anwendungen auf die gleichen Daten wird zugelassen. Die Sicherheit und Konsistenz der Daten wird gewährleistet. 1 Das Schichtenmodell Um einen Zugang zu dem notwendigen Aufbau eines Datenbanksystems zu bekommen, wurden von Institutionen Modelle entwickelt. Eines dieser Modelle ist unter dem Namen Schichtenmodell bekannt geworden. Es wurde 1975 von dem Normausschuss ANSI-SPARC in den USA vorgestellt. Die Kürzel stehen für American National Standards Institute und Standards Planning and Requirements Commitee. In diesem Modell wurden Ebenen mit bestimmten Aufgaben für ein Datenbanksystem festgelegt. Dieses Modell hat bis heute Gültigkeit. Es wird unterschieden in eine: Externe Schicht, in welcher der Benutzer mithilfe maßgeschneiderter Sichten Zugriff auf Daten erhält. Konzeptionelle Schicht, in welcher die Datenbankobjekte und ihre Beziehungen zueinander beschrieben werden. Interne Schicht, in der die Art und Weise der Speicherung der Daten festgeschrieben wird. Arten von Datenbanken Die Datenbanksysteme haben mit der Zeit eine Entwicklung durchgemacht. Dabei entstanden unterschiedliche Ausführungen. Die wichtigsten sind: die hierarchische Datenbank, die Datenbank, die über ein Netzwerk verteilt ist, die relationale Datenbank, in der Daten in Strukturen abgelegt werden, die miteinander in Beziehung stehen, und die objektorientierte Datenbank, die Daten und ihre Attribute als Objekte sieht. Die beiden ersten sind ältere Modelle. Diese Datenbanken können aber auch heute noch im Einsatz sein. In den letzten Jahren fand das relationale Modell starke Verbreitung. Und auch der MySQLServer arbeitet nach diesem Prinzip. Mittlerweile gibt es eine neue Generation von Datenbanken, die als objektorientiert bezeichnet werden. Diese sind noch in der Entwicklung und noch nicht weit verbreitet. Merkmale Relationaler Datenbanken Das Modell einer relationalen Datenbank wurde 1970 erstmals in den USA von dem Mathematiker Dr. Edgar Frank Todd vorgestellt. Mittlerweile hat sich dieses Modell allgemein durchgesetzt. In einer relationalen Datenbank werden die Daten in zweidimensionalen Tabellen, bestehend aus Zeilen und Spalten, abgelegt. Hierbei wird eine Tabelle als Relation, eine Zeile als Tupel und eine Spalte als Attribut bezeichnet. In den Tupeln werden die Daten gespeichert, die Attribute definieren die Bedeutung der Daten in den Tupeln. Über die Relationen stehen die Inhalte untereinander in Verbindung. Das besondere an diesem Modell ist, dass es in einem relationalen Datenbanksystem eine Vielzahl an Tabellen gibt, in denen die Daten verteilt sind, um Redundanzen zu vermeiden. Diese Tabellen wiederum sind untereinander verbunden. Eine Tabelle für sich allein ist wenig bedeutungsvoll und ergibt erst einen Sinn in der Verbindung mit anderen Tabellen. 2 Das Enitity-Relationship-Modell Das ER-Modell wurde von Peter Chen entwickelt, 1976 vorgestellt und seitdem verfeinert. Mit seiner Hilfe lassen sich Zusammenhänge besser verdeutlichen. Die Zeichnung selbst ist ein übersichtliches Mittel, um über die Realisierung der Datenbank zu reden und um sicherzustellen, dass alle Beteiligten auf dem gleichen Informationsstand sind. Im Zusammenhang mit dem ER-Modell spricht man von Entitätstypen statt von Objekten (oder Klassen) und von Entitäten statt von Instanzen. Jeder Entitätstyp ist gekennzeichnet durch Attribute, (Eigenschaften). Abbildung 1: Entitätstypen und Attribute Wie Sie in der Abbildung sehen können, gibt es bei jedem Entitätstyp ein Attribut, das unterstrichen ist. Hierbei handelt es sich um das wichtige Schlüsselattribut. Mit seiner Hilfe lässt sich jede Entität eindeutig identifizieren, denn der Inhalt eines Schlüsselattributs darf in der Tabelle nur einmal vorkommen. Die Schlüsselattribute werden bei der Überführung des Modells in eine Tabelle einer relationalen Datenbank häufig als Primärschlüssel verwendet. Was in der Grafik noch nicht zu sehen ist, sind die Beziehungen zwischen den Entitätstypen, also zwischen Filiale, Kunde und Versicherung. Ohne diese Informationen ist die Datenbank allerdings sinnlos. Die Beziehungen ergeben sich als der Situation in der Realität. Eine Filiale betreut viele Kunden und deren Versicherungen (Hausratversicherung, Unfallversicherung usw.) Statt Versicherungen könnte man hier auch besser Versicherungspolicen (also einzelne Versicherungen) sagen. Dargestellt werden die Beziehungen durch eine Verbindungslinie und einer Zahl bzw. einem Buchstaben auf der einen und auf der anderen Seite: 1 : 1 In einer 1:1-Beziehung besteth eine Beziehung von einer Entität auf der einen Seite zu exakt einer Entität auf der anderen Seite. Eine solche Beziehung kommt im Beispiel oben nicht vor, in der Realität ist die Zuordnung eines Autokennzeichens zu genau einem Auto ein Beispiel für eine solche Beziehung. 1 : N (N : 1) Auf der einen Seite der Beziehung befindet sich exakt eine Entität, auf der anderen Seite können eine oder mehrere Entitäten vorhanden sein. Diese 3 Variante kommt sehr häufig vor: ein Kunde kann viele Versicherungen abschließen, aber jede Versicherung (Versicherungspolice) gehört zu genau einem Kunden. N : M Auf beiden Seiten der Beziehung können beliebig viele Entitäten vorhanden sein. Ein Beispiel ist: Viele Schüler werden von vielen Lehrern unterrichtet. Die Schreibweise N:N deutet, das auf beiden Seiten immer gleich viele Entitäten vorhanden sein müssen. Mit Hilfe dieser ER-Modelle lassen sich somit schablonenartig Datenbanksysteme in einem Organigramm darstellen. Auch ein Fachmann, der später ein Modell anschaut, kann es verstehen, verändern oder in eine konkrete Programmierung einer Datenbank umsetzen. Die ER-Modelle dienen anschließend als Vorlage für die Erstellung von Tabellen. Entitätstypen werden zu Tabellen, Attribute zu Tabellenfeldern, Schlüsselattribute zu Primärschlüsseln. SQL Wenn man ein relationales Datenbanksystem entwickelt hat, wird dieses nach umfangreichen Tests den Anwendern zur Verfügung gestellt, damit diese damit arbeiten, Daten eingeben, verändern und abfragen können. Hierzu sind weitere Werkzeuge erforderlich. Eines dieser Werkzeuge ist die Datenbankabfragesprache SQL (structured query language). Diese Sprache ist der Standard bei der Bearbeitung und Abfrage umfangreicher Datenbestände. Einige Datenbankprogramme, wie der MySQL-Server führen dieses Kürzel im Namen. Je nach dem, welches Betriebssystem auf dem Datenbankserver installiert ist und welches Datenbankprogramm verwendet wird, unterscheiden sich die verwendeten Befehle jeweils ein bisschen – man spricht hier, wie in der natürlichen Sprache – von "Dialekten". In unserem Fall verwenden wir den XAMMP- Server als Datenbankserver und phpMyAdmin als Datenbankprogramm. Wie Sie später sehen werden, werden die verwendeten SQLBefehle auf der grafischen Oberfläche angezeigt. Einige SQL-Befehle haben Sie schon mehr oder minder intuitiv kennen gelernt: SELECT, um etwas aus einer Datenbank abzufragen, WHERE, um eine Einschränkung vorzunehmen, JOIN, um die Abfrage über mehrere Tabellen auszuweiten, UPDATE, um Datensätze zu aktualisieren, SELECT COUNT, um die Datensätze in einer Tabelle zu zählen. Die Befehle, und noch einige wenige mehr, können miteinander verknüpft werden, um auch komplizierte Abfragen aus der Datenbank zu realisieren. 4 Normalisierung Unter Normalisierung versteht man das Aufteilen aller relevanten Daten in Relationen in der Art und Weise, dass sie am Ende den Normalisierungsregeln entsprechen. Hauptgründe für die Normalisierung sind: die Vermeidung unerwünschter Anomalien beim Einfügen, Löschen und Verändern, die zu einer Inkonsistenz der Daten führen, die Vermeidung von überflüssiger Information (Redundanz,) der Zwang zum systematischen Entwurf der Datenbank, die bessere Übersichtlichkeit für Benutzer und Programmierer. Definitionen: 1. Eine Relation (Datenbank) ist in der 1. Normalform, wenn sich in jedem Feld nur ein atomarer Wert befindet. 2. Eine Relation ist in der zweiten Normalform, wenn sie in der ersten Normalform ist, und alle Felder einer Zeile ausschließlich funktional abhängig vom Primärschlüssel sind. 3. Eine Relation ist in der 3. Normalform, wenn sie den Vorgaben der ersten und zweiten Normalform entspricht und wenn es zwischen den Feldern keine transiitiven Abhängigkeiten gibt. Durch die Schritte der Normalisierung entstehen aus einer großen ersten Entwurfstabelle mehrere kleinere Tabellen die zusammen gehörende Daten enthalten (z.B. Adressdaten von Kunden) sowie sog. Beziehungstabellen, die die Einzeltabellen miteinander verbinden. Tabelle 1: Entwurfstabelle Tabelle 2: Datenbank mit Daten- und Beziehungstabellen in 3. Normalform Die Spalten mit den Primärschlüsseln sind unterstrichen. Die Beziehungstabelle (links) enthält keinen Primärschlüssel, sondern die Primärschlüssel der ersten drei Tabellen als Fremdschlüssel. 5