1 Datenbank Modellierung - Einführung AnPr Name Datum Klasse Die Notwendigkeit von Datenbanksystemen Den Begriff „Datenbank“ haben viele schon mal gehört – auch wenn man nicht aus dem IT-Fach kommt. Wir verbinden mit diesem Begriff stets eine Ansammlung von Informationen, welche wir in irgendeiner Form abfragen, bzw. nutzen können. Die meisten gehen auch davon aus, dass die Informationen „irgendwie“ in Tabellen abgelegt sind. Den Begriff „Tabellen“ kennen viele aus sogenannten „Tabellenkalkulationsprogrammen“, von denen bspw. Microsoft Excel oder OpenOffice Calc bekannte Vertreter sind. Die Frage ist, warum Excel und Co. nicht für alle datenrelevanten Anwendungen genutzt werden. Schließlich kann man Daten in derartige Programme doch sehr einfach eintragen und wieder auslesen! Das Problem ist, dass man mit diesen Programmen einige Nachteile in Kauf nehmen muss: • • • • • • • • • Sie manipulieren oft die Daten bei Eingabe, da sie eingabezentriert sind. Die Verknüpfungsfunktionen sind umständlich. Die Verknüpfungen sind inperformant. Die Datenmenge ist begrenzt. Es gibt keine Möglichkeit der Indizierung. Es gibt kein durchgängiges Usermanagment. Der parallele Zugriff ist nur bedingt möglich. Sie sind nicht skalierbar. Usw. usf. „Wenn ein Tabellenkalkulationsprogramm ein Schweizer Taschenmesser ist, dann ist eine Datenbank eine Fabrik.“ Streng genommen handelt es sich bei einem Tabellenkalkulationsprogramm auch um eine Datenbank, wenngleich der Ansatz von einem klassischen Datenbanksystem sich in wesentlichen Teilen unterscheidet. Hier nochmal ein Vergleich der beiden Ansätze: Eigenschaft: Hauptziel Dateneingabe Datenausgabe Datenstrukturierung Usermanagement Datenvolumen 1 Tabellenkalkulation: Einfache Nutzung und schnelle Anpassungen. Direkt in das File über GUI Über GUI oder via Skripte auf Textfiles Über GUI in einzelnen Tabs, Spalten und Zeilen. Datenfelder können individuell typisiert werden. In der Regel über Passwortvergabe auf einzelne Bereiche. Userzugriffssteuerung meist nur auf Fileebene. Wenige 1000 Datensätze sind noch performant verwaltbar – im Bereich von zweistelligen Megabytes, wobei Datenverknüpfungen sehr langsam sind. Datenbank: Kurze Zugriffszeiten. Über SQL1 Über SQL Über Tabellenstrukturen via SQL (DDL), wobei die Typisierung auf Spaltenebene, nicht auf Feldebene durchgeführt wird. Je nach Hersteller können Userzugriffsrechte bis auf Datensatzebene gesetzt werden. Über Views beliebig einstellbar. Millionen von Datensätzen sind handlebar – im Bereich von mehreren Terrabytes. Structured Query Language DB_ModellierungEinfuehrung_v01.docx Seite 1 Datenbank Modellierung - Einführung Eigenschaft: Flexibilität Nutzung Architektur AnPr Tabellenkalkulation: Datenbank: Sehr hoch – es können jederzeit Än- Eher gering. Strukturelle Anpassungen derungen eingebracht werden. erfolgen über SQL, wobei diese meist über Softwareprojekte laufen müssen. Meist nur durch einen User gleichzei- Die Steuerung von parallelen Zugriffen tig. Parallele Zugriffe sind möglich, erfolgt durch das Datenbank Manageführen jedoch oft zu Inkonsistenzen. ment System. Fat Client. Client Server. Wir sehen also, für größere Systeme ist ein Tabellenkalkulationsprogramm nicht geeignet. Hier sind wir auf Datenbanksysteme DBMS angewiesen. 2 Definition der Grundbegriffe Da es verschiedene Ansätze gibt, Datenbanken zu konzipieren, sei hier nochmal kurz auf diese eingegangen. Historisch gesehen können diese Ansätze in einer Reihenfolge genannt werden: Hierarchische Datenbanken. Hier werden die Daten in einer Baumstruktur abgelegt. Jedes Element (bis auf das Wurzelelement) besitzt genau ein Elternelement und 0 bis viele Kindelemente. Die Organisation der Files auf unserem Rechner würde einem solchen System entsprechen. Die hierarchischen Datenbanken wurden früher genutzt, als die Verzögerungszeit beim Zugriff auf verschiedene Datensätze recht hoch war. Heute findet man derartige Systeme nur noch selten – wobei man neuere XML Datenbanken durchaus als hierarchisch bezeichnen kann. Lediglich bei Verzeichnisdiensten, welche mit LDAP angesprochen werden können finden sich noch derartige Systeme. Relationale Datenbanken. Bei der Relationalen Datenbank werden die Daten in Tabellen abgelegt, welche wiederum in Beziehung zueinander stehen. Die einzelnen Datensätze bilden die Zeilen in den Tabellen, die Attribute(Eigenschaftstypen) werden durch die Spalten abgebildet. Über die Attribute werden auch Beziehungen zwischen den Tabellen darstellbar. Diese Art der Datenorganisation ist derart flexibel, dass die allermeisten laufenden Datenbanksysteme als Relationale Datenbanken aufgebaut sind. Aus diesem Grund wird sich der Unterricht auch hierauf exklusiv konzentrieren. Objektorientierte Datenbanken. In der Programmierung gilt der objektorientierte Ansatz oftmals als gesetzt. Relationale Datenbanken können jedoch den objektorientierten Ansatz nicht 1:1 abbilden. Einfachstes Beispiel wäre die Abbildung von Methoden innerhalb der Objekte, welche durch ein relationales Modell nicht ohne weiteres darstellbar ist. Um dieses Problem zu lösen, wurden objektorientierte Datenbanken geschaffen. Da sie jedoch sehr speziell auf das vorhin genannte Problem zugeschnitten sind, finden sie in der Praxis nur sehr selten Anwendung. Objekrelationale Datenbanken. Hierunter versteht man die Erweiterung einer relationale Datenbank um objektorientierte Komponenten. Im Wesentlichen geht es darum, die Datenhaltung einer Datenbank mit der Datenhaltung eines Objektes möglichst effizient zu synchronisieren. Da die Technologie auf einer relationalen Datenbank aufsetzt und somit existierende Systeme weitergenutzt werden können, ist die Akzeptanz von objektrelationalen Datenbanken im Vergleich zu rein objektorientierten Datenbanken sehr viel höher. Seite 2 AnPr Datenbank Modellierung - Einführung NoSQL Datenbanken. Hierunter versteht man alle nicht relationalen Datenbankansätze neuerer Generation. NoSQL steht für „Not only SQL“ und soll die Abgrenzung zu den relationalen Ansätzen wiederspiegeln. Streng genommen können die objektorientierten Datenbanken bereits unter NoSQL geführt werden. NoSQL ist durchaus als Trend zu sehen, da bspw. der relationale Ansatz bei extrem großen Datenmengen aufgrund der JOINS zu sehr langsamen Responsezeiten führt und somit Alternativen gefunden werden mussten. Diese NoSQL Ansätze sind zumeist sehr speziell auf gewisse Problemstellungen ausgerichtet. Insofern wundert es nicht, dass entsprechend viele NoSQL Konzepte existieren. Einen guten Überblick kann man sich über die Seite http://nosql-database.org/ verschaffen. Ganz allgemein müssen Datenbanken folgende Aufgaben bewältigen können: Der User muss Zugriff auf die Daten haben, ohne dass er die dahinter liegende Organisationsstruktur kennen muss. Das System muss in der Lage sein, die Zugriffe zu kontrollieren und unberechtigte Zugriffe zu verhindern. Das Programm, welches auf die Daten zugreift sollte von der Datenstruktur entkoppelt sein, so dass interne Änderungen auf der Datenbank nicht zwingend zu Anpassungen des Programms führen. Das System muss dem User ermöglichen, die Daten strukturiert zu verwalten – also Daten einfügen, ändern und löschen. Eine Datenbank ist ein System zur Datenorganisation mit dem Zweck, die Daten dauerhaft, sicher und flexibel zu verwalten. Aus diversen anderen Softwareprogrammen kennen wir bereits die Trennung von Daten und Programm. Dies gilt für Datenbanksysteme genauso. Neben dieser Aufteilung können wir noch weitere Komponenten voneinander unterscheiden: Datenbankverwaltungssystem (DBMS) Das „DatenBank Mangament System“ ist der eigentliche Kern unseres Systems – das Programm, welches die Aktivtäten zur Datenverwaltung übernimmt. Üblicherweise finden wir das DBMS auf einem Server wieder. Das DBMS wiederum verwaltet 1 bis mehrere Datenbanken. Datenbankclient Um auf die Daten in der Datenbank zugreifen zu können, bedarf es einen Client. Dieser ist für den Entwickler und Administrator im Regelfall ein Tool um SQL Statements zu erzeugen und zum DBMS zu senden. Für den Enduser ist der Client fast immer eine Software, in der die SQL Statements bereits gespeichert sind. Der User bekommt somit nichts davon mit, dass seine Daten in einer Datenbank gespeichert sind. Programme müssen über geeignete Schnittstellen (bspw. ODBC) mit der Datenbank kommunizieren. Datenbanksprache Relationale Datenbanken werden in aller Regel mit SQL (Structured Query Language) angesprochen. Die Kommunikation der Clients mit dem DBMS erfolgt ausschließlich über SQL. Hierbei können vier wesentliche Aufgabenbereiche definiert werden: Datendefinition – hier wird der Aufbau der einzelnen Tabellen festgelegt. Oftmals wird das Subset von SQL für die Datendefinition auch als Data Definition Language oder kurz DDL bezeichnet. Datenmanipulation – dies dient zum erzeugen, ändern und löschen von Datensätzen. Dieser Teil von SQL wird auch als Data Manipulation Language oder kurz DML bezeichnet. Seite 3 Datenbank Modellierung - Einführung Datenabfrage – was statistisch den Hauptteil der SQL Aktionen im DBMS ausmacht. Hier werden die Daten aus der Datenbank ausgelesen. In Anlehnung an DDL und DML hat man hier den Begriff Data Retrieval Language bzw. DRL geschaffen, was jedoch selten in der Praxis verwendet wird. Datenschutz – hiermit wird der Schutz von Daten gegenüber unberechtigten Zugriffen bezeichnet. Der Begriff für diesen Teilbereich ist Data Security Language. 3 AnPr Datenmodellierung In den folgenden Kapiteln werden wir uns damit beschäftigen, wie wir Daten sinnvoll modellieren. Sehen wir uns zuerst eine beispielhafte Definition des Begriffs an (diesen habe ich aus http://wirtschaftslexikon.gabler.de/Definition/datenmodellierung.html): Datenmodellierung ist die formale Beschreibung der Informationsobjekte eines zu entwerfenden Informationssystems. Ziel ist die eindeutige Definition und Spezifikation der in einem Informationssystem zu verwaltenden Objekte, ihrer für die Informationszwecke erforderlichen Attribute und der Zusammenhänge zwischen verschiedenen Informationsobjekten, um so einen Überblick über die Datensicht des Informationssystems erhalten zu können. Ergebnis des Modellierungsprozesses ist ein sog. Datenschema, das zumeist grafisch* visualisiert wird. (* als ER Modell) Das klingt schon mal recht kompliziert. Gehen wir aber die wichtigsten Schlüsselbegriffe mal durch: Begriff: Informationssystem Objekt Attribut Zusammenhänge Datenschema ER Modell Erklärung: Sämtliche zusammenhängenden Applikationen mitsamt Usern, wobei wir für uns das physische Datenmodell in den Fokus stellen und somit „nur“ die Tabellen betrachten werden. Das, was wir tatsächlich in unserer Datenbank verwalten wollen, also die Daten. Dies muss nicht zwingend ein reales Objekt sein, sondern kann auch etwas rein virtuelles sein. Eigenschaftstyp eines einzelnen Objektes, so dass die verschiedenen Objekte voneinander unterscheidbar sind. Beziehungen zwischen den Objekten (und streng genommen auch innerhalb der Objekte). Diese werden über die Attribute modelliert. Formale Beschreibung der Datenstrukturen – in der Datenmodellierung meist als „ER – Diagramm“. Hieraus können die eigentlichen Tabellen erzeugt werden. Grafische Beschreibung eines Datenmodells bzw. Datenschemas. Es wurde ursprünglich von Peter Chen vorgestellt und seitdem mehrfach erweitert. Wir beschäftigen uns also damit, wie wir reale Zusammenhänge in einer für Datenbanken optimierten Form dargestellt werden können. Es gibt durchaus eine gewisse Verwirrung, was die Begrifflichkeiten angehen. Dies kommt oftmals von der unterschiedlichen Sichtweise der Akteure. Im Wesentlichen finden wir den Datenmodellierer, welcher die Konzeption festhält und den Techniker vor, welcher die Modelle in ein physisches Modell umsetzt. Die meisten Bücher fokussieren sich auf die konzeptionelle Sichtweise, wobei wir im Regelfall die technische „Brille“ aufhaben. Insofern hier nochmal die wichtigsten Begriffe, welche uns beschäftigen werden: Entität (Entity, Objekt): Das ist das Objekt, was gespeichert werden soll. Es kann sich um ein reales „Ding“ handeln, wie ein Auto in einer Verkaufsdatenbank, um reale Personen wie etwa in einer Kundendatenbank oder auch etwas Abstraktes wie ein Konto, oder einfach nur ein Zustand, wie bspw. der Kontostand. Technisch ist dies in aller Regel ein Datensatz in einer Tabelle, ein sogenanntes Tupel. Eine Entität hat folgende Eigenschaften: Seite 4 Tatsächliches Objekt der realen Welt oder unserer Vorstellung. Eindeutig bestimmbar und somit von anderen Objekten unterscheidbar. AnPr Datenbank Modellierung - Einführung Besitzt Attributsausprägungen, welche zur eindeutigen Bestimmung der Entität verwendet werden können. Sind von zwei Entitäten alle Attributsausprägungen identisch, so sind sie nicht voneinander zu unterscheiden. Entitätstyp (Entitätsklasse, Relation, Tabelle): Gleichartige Entitäten werden als Entitätstypen bezeichnet. Hierbei entscheidet der Datenmodellierer, welche Eigenschaftstypen relevant sind. So sind bspw. für einen Automechaniker der Motorentyp und die Antriebsart für wichtig – der Lackierer hingegen ist eher an der Farbe interessiert. Insofern würden bei der Modellierung einer Datenbank für Automechaniker andere Kriterien gelten, als bei der Modellierung einer Datenbank für Autolackierer, obwohl in beiden Entitätstypen Autos gespeichert werden würden. Technisch wird ein Entitätstyp üblicherweise in einer Tabelle münden, welche in der Datenmodellierung auch als „Relation“ bezeichnet wird. Ein Entitätstyp hat folgende Eigenschaften: Klassifikation aller Entitäten mit gleichen Attributen. Entitäten eines Entitätstyps „gehören zusammen“. Besitzt Attribute. Entitätsmenge (Entity-Set): Eine Entitätsmenge ist eine Zusammenfassung von Entitäten gleichen Entitätstyps. In einer realen Applikation wären das bspw. alle Kunden eines Unternehmens. Dies würde somit der Tabelleninhalt der Kundentabelle sein. Mitunter wird als Entitätsmenge auch eine Untermenge einer Tabelle gewertet – also alle Kunden aus dem PLZ Bereich XYZ eines Unternehmens. Sammlung von Entitäten mit gleichen Entitätstyp Attribut (Eigenschaftstyp): Attribute sind die Informationsträger, welche die Eigenschaften der Entitäten abbilden. In der technischen Gestaltung sind dies die Spalten der Tabellen. Die Summe der Attribute definiert den Entitätstyp. Folgende Punkte sind hierbei wichtig: Attributsausprägungen definierten die Eigenschaft einer Entität Attribute haben einen Wertebereich, der auch als „Domain“ bezeichnet wird. Attribute, welche zur eindeutigen Identifikation einer Entität aus der gesamten Entitätsmenge herangezogen werden können nennt man Schlüsselattribut – oder kurz „Schlüssel“ Werden Schlüsselattribute dediziert zur Identifikation der Entitäten vom DB Designer ausgewiesen, so nennt man sie Primärschlüssel. Diese dürfen während der gesamten Lebensdauer der Entität nicht mehr geändert werden. Oftmals wird ein technisch erzeugtes Attribut als Primärschlüssel verwendet – man spricht hier von einem „künstlichen Schlüssel“ (oder auch „sprechender Schlüssel“ bzw. „Surrogatschlüssel“), im Gegensatz zu einem „natürlichen Schlüssel“ (oder auch „sprechender Schlüssel“), der als Attribut der realen Entität bereits existiert (bspw. Fahrgestellnummer eines KFZ). Beziehungen (Relationships, Assoziationen): Die einzelnen Entitäten stehen in einer bestimmten Beziehung zueinander. Bspw. kann man zu jedem Konto ein Eigentümer zugeordnet werden. Diese Beziehungen werden durch die Attribute und ggf. eigene Tabellen modelliert. Folgendes ist hierbei zu wissen: Beziehungen können zwischen 2 bis n Entitäten auftreten (wobei es meistens „nur“ zwischen 2 ist) Die Anzahl, wie viele Entitäten einer Entitätsklasse zu den Entitäten einer anderen Entitätsklasse existieren können wird Kardinalität genannt. Ohne die Beziehungen können die einzelnen Informationen nicht verknüpft werden. Seite 5 Datenbank Modellierung - Einführung AnPr In relationalen Datenbanken werden die Beziehungen über Schlüssel (und ggf. zusätzliche Tabellen) realisiert. Hierbei werden Primärschlüsselwerte einer Tabelle in einem eigenen Feld einer anderen Tabelle eingetragen – welches als „Fremdschlüssel“ bezeichnet wird. 3.1 Elemente des ER Diagramms Die folgenden Kapitel befassen sich mit der grafischen Notation der Strukturen. Hierbei orientieren wir uns an den (modifizierten) Vorschlägen von Peter Chen, der den Grundstein der grafischen Datenmodellierung gelegt hat. Wird eine Datenbank designed, geht man (wie in der Informatik üblich) strukturiert vor2: Bestimmung der Entitäten Bestimmung der Beziehungen zwischen den Entitäten Festlegung der Kardinalitäten der Beziehungen Festlegung der Attribute der Entitäten Definition der Wertebereiche der Attribute Identifikation von (sprechenden) Schlüsseln der Entitäten Zeichnen des ER Diagramms Definition der Primär- und Fremdschlüssel Hierbei läuft das Datenmodell verschiedene Level durch: Konzeptionelles Datenmodell: Lediglich die Eintitätsnamen und die Relationen werden modelliert. Logisches Datenmodell: Es kommen die Attribute und die Schlüssel (Primär- und Fremd-) hinzu. Physisches Datenmodell: Es werden nur noch die technischen Elemente berücksichtigt. Hierbei können sich die Namen der Attribute noch ändern, wenn gewisse technische Restriktionen gegen den logischen Namen sprechen. Hier ein kurzer Vergleich3: Was: Entitätsname Beziehungen Attribute Primärschlüssel Fremdschlüssel Tabellennamen Spaltennamen Datentypen Konzept: ja ja Logik: ja ja ja ja ja Physik: ja ja ja ja ja Der zentralste Punkt ist die Realisierung des ER Diagramms (Entity Relationship Diagramm). Hierbei wird eine grafische Entsprechung der späteren Implementierung geschaffen. Wie der Name schon nahelegt, werden hierbei die Entitäten und deren Beziehungen modelliert, wobei wir nicht die eigentlichen Entitäten eintragen (dies sind ja die einzelnen Datensätze), sondern die Entitysets oder Entiätsklassen. 3.1.1 Entity-Sets im ER Diagramm Das Entity-Set wird durch ein benamtes Rechteck dargestellt. Attribute wiederum als Kreise, welche mittels Linien mit dem Entity-Set verbunden sind. Primärschlüssel werden unterstrichen dargestellt. Wenn man davon ausgeht, dass in größeren Systemen die Tabellen 20 und mehr Attribute haben kann man sich vorstellen, dass die Attribute nicht zur Übersicht beitragen und oftmals weggelassen werden. 2 3 Orientiert an den Vorschlägen von Peter Chen http://www.1keydata.com/ Seite 6 AnPr Datenbank Modellierung - Einführung 3.1.2 Beziehungen im ER Diagramm Die Beziehungen zwischen zwei Entity-Sets werden als Rauten visualisiert. In die Rauten kommt ein Begriff, welcher die Beziehungsart spezifiziert. Hierbei ist darauf zu achten, dass die Bezeichnungsart dem Leser weiterhilft („haben“ passt zwar fast immer, hilft aber leider selten weiter). Zusätzlich werden die Kardinalitäten eingetragen. Im rechten Bild finden wir die drei Grundtypen: 1:1 bedeutet hierbei, dass der Kunde in genau einer Adresse wohnt und in einer Adresse exakt ein Kunde. 1:n zeigt an, dass ein Kunde n (also mehrere) Aufträge erstellen kann, ein Auftrag jedoch immer nur von einem Kunden erstellt werden kann. n:m heißt, ein Auftrag kann von m (mehreren) Sachbearbeitern bearbeitet werden, ein Sachbearbeiter kann aber auch n (mehrere) Aufträge bearbeiten. Es gibt Situationen, in denen die Beziehungen auch Attribute erhalten können (also eigene Attribute besitzen). Ein solcher Fall wäre bspw. in der Beziehung zwischen dem Auftrag und dem Sachbearbeiter – hier könnte das Datum der letzten Bearbeitungsaktivität stehen. Diese Attribute würden ebenfalls als Kreissymbol dargestellt werden. Aber auch hier gilt, dass die Attribute zugunsten der Übersichtlichkeit oftmals weggelassen werden. 3.2 Alternativen zur Chen Notation Die in den vorausgegangenen Kapiteln vorgestellte Notationsform wird für konzeptionelle Zwecke sehr oft eingesetzt (genauso wie für IHK Prüfungen). Trotzdem findet man noch eine sehr große Anzahl von weiteren Notationsformen, welche sich mehr auf das logische bzw. physische Datenmodell konzentrieren. UML4 hat natürlich eine Lösung parat, wobei in der Praxis zumeist die „Krähenfußnotation“ bzw. Crows Foot Notation genutzt wird. Wer mit MySQL Workbench die grafische Datenmodellierung nutzt, wird ebendiese Notation vorfinden. Entitäten: Entitäten werden als Rechteck dargestellt. Die oberste Zeile ist (meist) farblich abgesetzt und trägt den Entitätsnamen. Beim physischen Datenmodell finden wir dort den Tabellennamen. Der untere Block ist beim konzeptuellen Datenmodell leer, beim logischen und physischen Datenmodell sind die Attribute aufgelistet, wobei die Primärschlüssel unterstrichen sind. Im physischen Datenmodell sind zusätzlich noch die Datentypen hinterlegt, indem sie rechts neben den Attributsnamen eingetragen werden. 4 UML: Unified Modeling Language Seite 7 Datenbank Modellierung - Einführung Beziehungen: Der Darstellungsform der Beziehungen verdankt die Crows Foot Notation ihren Namen. Mit Hilfe von den „Krähenfüßen“ werden die Kardinalitäten vorgestellt. Hierbei kann auch festgelegt werden, ob eine Beziehung vorhanden sein muss (also mindestens 1) oder nicht (also kann 0 sein). AnPr Symbol: Beziehung: 1 und genau 1. 1 oder 0. 1 oder n (also mehrere) Eine 1:n Beziehung zwischen Kunden und Auftrag wird also wie folgt dargestellt: 0 oder n (also mehrere) Ein Kunde kann keinen Auftrage, einen oder mehrere erstellt haben. Ein Auftrag wurde aber immer von genau einem Kunden erstellt. Die Beziehungsart als Text über der Linie wird in der Praxis mitunter weggelassen, da das Ziel der Notation meist die physische Umsetzung ist. Seite 8 AnPr 4 Datenbank Modellierung - Einführung Lizenz Diese(s) Werk bzw. Inhalt von Maik Aicher (www.codeconcert.de) steht unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Seite 9