FHTW–Berlin Technisches Gebäudemanagement Thema Studienarbeit im Rahmen der Vorlesung Informatik I bei Dozentin Frau Dr. Antonova Modul 3 – Datenverarbeitung Datenbanken • Modelle • Konzepte • Abfragesprachen • Marktübersicht und Beispiele Ihrer Anwendungen • Praktische Aufgabenstellung / Praktisches Beispiel: o Programmieren Sie eine Datenbank, die die Datenbasis für eine Self-Service-Anwendung speichern könnte. o Stellen Sie sicher, dass verschiedene Webanwendungen an die Datenbank andocken könnten und aus diesem Grund das Datenmanagement innerhalb der Datenbank abgewickelt wird. o Erstellen Sie ein ER-Modell der Datenbank. vorgelegt von: Martin Sowinski Matrikel-Nr.: 518833 [email protected] Informatik I - Datenbanken Inhaltsverzeichnis INHALTSVERZEICHNIS 1 EINFÜHRUNG 6 2 DAS DBMS / DIE DATENBANKMODELLE 9 2.1 DAS DATENBANKMANAGEMENTSYSTEM - DBMS 2.2 EBENEN DER DATENBANKANWENDUNGEN 2.2.1 EINSCHICHTIGE ANWENDUNGEN 2.2.2 ZWEISCHICHTIGE ANWENDUNGEN 2.2.3 N-SCHICHTIGE ANWENDUNGEN 2.3 DATENMODELLE 2.3.1 HIERARCHISCHE DATENBANKEN 2.3.2 NETZWERKDATENBANKEN 2.3.3 RELATIONALE DATENBANKEN 2.3.4 OBJEKTORIENTIERTE DATENBANKSYSTEME 10 10 12 12 14 16 17 19 21 24 3 DIE DATENBANKSPRACHE SQL 28 3.1 SPRACHKOMPONENTEN VON SQL 29 4 ER-MODELLE 30 5 NORMALISIERUNG 31 5.1 5.2 5.3 5.4 31 31 32 32 DIE ERSTE NORMALFORM DIE ZWEITE NORMALFORM DIE DRITTE NORMALFORM DIE VIERTE NORMALFORM Informatik I - Datenbanken Inhaltsverzeichnis 5.5 DIE FÜNFTE NORMALFORM 5.6 DIE BOYCE-CODD-NORMALFORM 32 33 6 PRAKTISCHE AUFGABENSTELLUNG 34 6.1 EINFÜHRUNG IN DAS BEISPIEL 6.2 FINDUNGEN EINES GESCHÄFTSPROZESSES 6.3 DATENBANKENTWURF UND ENTWICKLUNG DES ER-MODELLS 6.4 ENTSCHEIDUNGSFINDUNG FÜR DATENBANKFABRIKAT 6.5 UMSETZUNG DER PROGRAMMIERUNG 6.5.1 VERWENDETE DATENTYPEN 6.5.2 VERWENDETER ZEICHENSATZ UND VERWENDET SORTIERORDNUNG 6.5.3 ERSTELLEN DER TABELLEN 34 35 38 40 42 42 42 42 7 ABKÜRZUNGSVERZEICHNIS 48 8 LITERATURVERZEICHNIS 49 Anlagen: Anlage 1: CD Anlage 2 Präsentation Anlage 3 Relationen MySQL-Datenbank 4 Informatik I - Datenbanken Inhaltsverzeichnis 1 Agenda • Introduction • The DBMS / Types of Databases o The Database Management System (DBMS) o Database Applications o Hierarchical Databases o Network Databases o Relational Databases Entity Relationship Model Normalisation of Databases o Object Relational Databases • Programming languages of Databases SQL • The Example 5 Informatik I - Datenbanken Einführung 1 Einführung Es gibt viele Gründe sich gerade im technischen Gebäudemanagement mit Datenbanken und ihrer Arbeitsweise auseinanderzusetzen. Ein Grund ist die wachsende Verbreitung von Datenbankanwendungen gerade bei intelligenten Gebäudemanagementsystemen. Ein anderer Grund ist die ständig wachsende Datenmenge, die so gespeichert werden sollte, dass wir als Nutzer dieser Daten sie auch beherrschen. Hierbei gibt es verschiedene Techniken. Fakt ist auch, dass die Menge der zu speichernden Daten in den vergangenen 20 Jahren stark zugenommen hat. Und dass die Perioden, in denen sich das Datenvolumen verdoppelt, immer kürzer werden. Aus diesem Grund wurden geeignete Systeme gesucht, um diese Datenmengen zu beherrschen. Die Entwicklung von leistungsfähigen Datenbanken zur Steuerung dieser Daten bekam eine große Bedeutung. So hat auch das Wissen über Datenbanken stark zugenommen. In Datenbanken wird die Verwaltung der Daten so organisiert, dass die Nutzer schnell und gezielt auf ihre Informationen zugreifen und diese auch auswerten können. Ein weiterer Aspekt ist die Speicherung von Daten aus Programmen. Die hat sich gerade in den letzten 10 Jahren dahingehend verändert, dass früher zum Beispiel Programmprozessdaten in Dateien ausgelagert oder direkt im jeweiligen Programm gespeichert wurden, nun aber die meisten Anwendungsprogramme, die ein großes Volumen an Prozessdaten erzeugen, diese Daten in Datenbanken speichern. Dies hat unter anderem auch den Vorteil, dass Daten programmübergreifend genutzt werden. Durch die Speicherung dieser Daten in einer Datenbank können verschiedene Programme auf die gleichen Informationen zugreifen. Im Technischen Gebäudemanagement wurden Datenbanken mit der Erweiterung von Anlagen der Gebäude-Leit-Technik und der Einführung des CAFM (Computer Aided Facility Management) etabliert. Eine praktische Anwendung, wie Sie bei der Royal BAM Group im Einsatz ist, zeigt die Abbildung 1. Im Zentrum der Anwendungen steht eine Oracle®-Datenbank, in der die Daten der zwei Hauptanwendungen SAP® und FaMe® gespeichert werden. Dabei werden die kaufmännischen Prozesse der Bauunternehmung im SAP und die Prozesse des Gebäudemanagements im FaMe abgebildet. Zusätzlich gibt es noch für verschiedene Projekte ein SelfServicePortal, über das die Nutzer von Gebäuden 6 Informatik I - Datenbanken 2 Das DBMS / Die Datenbankmodelle Neben der grundlegenden Trennung von Anwendung und Datenbank gibt es nun mehrere Möglichkeiten der weiteren Verteilung. Ich möchte an dieser Stelle auf zwei eingehen. Zum Einen sind das die Intranetanwendungen und zum Anderen die Webanwendungen. Bei den Intranetanwendungen wird die Präsentationsebene bei den Client-Rechnern angesiedelt, die Geschäftslogik bei den Anwendungsservern hinterlegt und die Datenspeicherung wird von der physischen Ebene sichergestellt. Ein Nachteil dieser Methode ist die dezentrale Speicherung der Client-Software. Als Client-Programme werden häufig keine Standardsoftwareprodukte, wie etwa ein Internetbrowser, genutzt. Hier wird spezielle Clientsoftware verwendet, die auf jedem Client installiert und gewartet werden muss. Das erhöht den administrativen Aufwand bei Release-Wechseln und der Nutzerbetreuung. 9 Abbildung 8 - Schematische Darstellung ein N-schichtigen Webanwendung Eine andere Methode, die seit einigen Jahren einen starken Aufwind erfährt, sind die Internettechnologien. Hier wird die Präsentationsebene auf dem Anwendungsserver dargestellt. Die Präsentation der Daten im eigentlichen Sinne erfolgt aber in einem 9 [3] S.79 15 Informatik I - Datenbanken 2 Das DBMS / Die Datenbankmodelle normalen Webbrowser. Gerade diese Verteilung birgt große Vorteile. Zum Einen sind auf den Client-Rechnern nur das Betriebssystem und ein Browser nötig und keine aufwendigen lokalen Installationen. Zum Anderen kann man auch mit firmenfremden Rechnern auf die Systeme von außen zugreifen. Das bringt den Mitarbeitern eine gewisse Unabhängigkeit und es erlaubt Kunden, Geschäftspartnern und Auftragnehmern das System mit zu nutzen, dies natürlich nur in einem begrenzten Rahmen. Der Vorteil den solche Systeme mit sich bringen ist klar. Sie sparen Arbeit, weil zum Beispiel Doppeleingaben vermieden werden. Ein auf den Geschäftsprozess abgestimmter Workflow kann somit für die Vorgangsbearbeitung die Zeit, die für die Verwaltungsaufgaben anfallen, stark minimieren. Gerade die Internetanwendungen werden in den nächsten Jahren weiter an Bedeutung gewinnen. 2.3 Datenmodelle Datenmodelle bezeichnen die Art der Datenstrukturierung. Sie geben den Rahmen für die Organisation der Daten in der Datenbank vor. Datenmodelle kann man sich ähnlich einer Programmiersprache vorstellen. Hier werden die generischen Strukturen und Operatoren definiert, die dann für das Datenmanagement benötigt werden.10 Für die Definition des Datenmodells betrachtet man zwei Bereiche. Auf der einen Seite muss die Struktur der Daten definiert werden, auf der anderen Seite betrachtet man das Handling der Daten. Das heißt, das Ändern der Daten in der Datenbank und das Auswerten der Informationen. Den ersten Teil bezeichnet man als Datendefinitionssprache und den zweiten Teil als Datenmanipulationssprache. In modernen Datenbanksprachen sind diese beiden Sprachteile zusammengefasst.11 Das Thema Datenbanksprachen ist so umfangreich, dass es im Rahmen dieser Arbeit nur zu einem geringen Teil Beachtung findet. Ich werde in einem späteren Abschnitt konkret auf die Datenbanksprache SQL und deren Aufteilung der verschiedenen Sprachelemente eingehen. 10 [3] S.20-26 11 [2] S.21-40 und [3] S.20-26 16 Informatik I - Datenbanken 2 Das DBMS / Die Datenbankmodelle 2.3.1 Hierarchische Datenbanken Die Entwicklung der Datenbanken begann mit den hierarchischen Datenbanken. Einige der hier verankerten Grundkonzepte werden auch noch bei späteren Evolutionsstufen verwendet. Bei der Entwicklung wollte man reale Einheiten hierarchisch zerteilen und so eine Speicherstruktur für die Datenbankanwendung finden. Deutlich wird das in Abbildung 9. Hier wird die Aufteilung von der Liegenschaft, als größte reale Einheit, zu den Räumen, als kleinste Bestandteile dieser Einheit, vorgenommen. Bei dieser Anordnung werden die einzelnen Verzweigungspunkte als Knoten bezeichnet. Der Wurzelknoten ist die Liegenschaft und alle der Liegenschaft nachgeordneten Knoten werden Kindknoten genannt. Jeder einem Kindknoten vorgeordneter Knoten wird als Elternknoten dieses Kindknotens dargestellt. In der Abbildung 9 wird die Beziehung im Bereich der „Freiflächen“ dargestellt. Hier ist der Knoten „Freiflächen“ der Elternknoten für „Natürliche Oberflächen“. Die einzelnen Hierarchieebenen werden graduiert, d.h. nach jedem Knotensprung erhält die der aktuellen Ebene folgende Kindebene einen um eins erhöhten Grad. Das revolutionäre an diesen Systemen war unter anderem die Mehrbenutzerfähigkeit. Während Dateien immer nur von einer Person geöffnet und bearbeitet werden konnten, erlaubten die Datenbanken mehreren Benutzern gleichzeitig den Zugriff auf die Datenbasis. Die Daten konnten mit Hilfe von Schnittstellen zwischen den verschiedenen Anwendungsprogrammen zum ersten Mal programmunabhängig gespeichert werden. Die Daten wurden mit Hilfe von Knotenangaben in das System gebracht. Hierin lag jedoch auch ein Nachteil, weil alle in der Datenbank liegenden Knoten nacheinander von der Wurzel und danach von links nach rechts zur Prüfung angefahren wurden. Das machte das System sehr langsam. Ein anderer Schwachpunkt war die strukturelle Abhängigkeit der Anwendungsprogramme von der Datenbank. Die Abgrifftechnik, wie sie schon oben beschrieben wurde, legte nahe, Daten, die besonders häufig angegriffen wurden, links anzuordnen, da diese Seite zuerst bei der Suche nach einer Entsprechung für den Datenpunkt abgegriffen wurde. So kam es, dass man hierarchische Datenbanken zur Performanceoptimierung häufig umstrukturierte. Da die Anwendungsprogramme aber fest auf die Äste dieses Datenbaumes zugriffen, mussten auch sie bei derartigen Änderungen angepasst werden. Das war häufig sehr aufwendig und kostenintensiv. 17 Informatik I - Datenbanken 2 Das DBMS / Die Datenbankmodelle Abbildung 9 - Struktur einer hierarchischen Datenbank Auch die baumartige Struktur provozierte Fehler durch die Administratoren. Daten wurden durch falsches Löschen von Knoten vernichtet. Löschte man nämlich einen Elternknoten, so wurden alle ihm nachgeordneten Kinderknoten auch bereinigt. Die beiden nächsten Punkte besiegelten das Schicksal dieser Konstruktion endgültig und waren gleichzeitig für die Konzeption der nachfolgenden Strukturen von entscheidender Bedeutung. In der Phase als die hierarchischen Datenbanken eingesetzt wurden, gab es noch keine Standards für den Datenaustausch. Ein Frabrikationswechsel von einer Datenbank zu einer anderen brachte enorme Schwierigkeiten mit sich, so dass der Aufwand für eine Portierung häufig einer Neuentwicklung glich. Aus diesen Schwierigkeiten lernten die Entwickler und schufen verschiedene Standardschnittstellen für den Datenaustausch zwischen den jeweiligen Datenbanken. Auch aus den letzten Punkten wurde ein großes Potential für weitere Entwicklungen gewonnen. Wenn wir die Entity Relations, die Beziehungen zwischen den Datensätzen betrachten, fällt auf, dass ein Elternknoten zwar beliebig viele Kindkno18 Informatik I - Datenbanken 2 Das DBMS / Die Datenbankmodelle ten haben darf, aber dass umgekehrt ein Kindknoten nur ein Elternknoten haben darf. Datenbanktechnisch ausgedrückt, kann diese Art von Datenbanken zwar 1:nBeziehungen darstellen, aber nicht n:m-Beziehungen. Das schränkte die Leistungsfähigkeit gegenüber den nachfolgenden Konzepten stark ein. Auf diese Beziehungen werden ich genau im Abschnitt zur ER-Modellierung (Entity Relationship Model) eingehen. Das hierarchische Modell wurde abgelöst von den Netzwerkdatenbanken. 2.3.2 Netzwerkdatenbanken Die Probleme, die aus der Anwendung des hierarchischen Datenbankmodells resultierten, sollten mit der Schaffung der Netzwerkdatenbanken beseitigt werden. Wenn wir auf die hierarchischen Systeme blicken, waren die größten Hindernisse in der Portierungsfähigkeit der Datenbanken und in der mangelnden Fähigkeit der Darstellung von m:n Beziehungen zu sehen. Zur Umsetzung dieser Anliegen gab es einen freiwilligen Zusammenschluss von Computerherstellern, -anwendern und staatlichen Einrichtungen.12 Dieser Zusammenschluss wurde CODASYL (Conference on Data System Languages) genannt. Die Verbindung entstand bereits im Jahre 1959 in den USA und ein Ergebnis der Arbeit war die Weiterentwicklung der Programmiersprache COBOL. Erst 1973 wurde dann mit dem Bericht CODA73 der Grundstein für die Netzwerkterminologie gelegt. Die beiden elementaren Anforderungen an die Netzwerkdatenbanken wurden erreicht. Die Einführung der Standardsprache COBOL trug dazu bei, dass es bessere Voraussetzungen für die Portierung gab. Außerdem änderte man die Beziehungsfähigkeit der Datensätze. Wenn Sie sich zuerst die Abbildung 9 ansehen und anschließend die Abbildung 10, werden Sie einen fundamentalen Unterschied erkennen. Die Redundanzen aus der Kindebene 6. Grades wurden abgebaut. Die Reinigungsklassen werden nun nur noch ein Mal gespeichert und können beliebig oft anderen Elementen zugeordnet werden. Das sparte für die Zukunft enorme Speicherkapazität durch Verhinderung von Redundanzen 12 [2], S.59-70 19 Informatik I - Datenbanken 6 Praktische Aufgabenstellung `wiederholungintagen` INT( 3 ) NULL , `gueltig_von` DATE NOT NULL , `gueltig_bis` DATE NOT NULL , `id_personen` INT( 10 ) NOT NULL , `id_benutzergruppe` INT( 10 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle Benutzergruppe CREATE TABLE `benutzergruppe` ( `id_benutzergruppe` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `beschreibung` LONGTEXT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle Mietvertrag CREATE TABLE `mietvertrag` ( `id _mietvertrag` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `beschreibung` LONGTEXT NULL , `datum_beginn` DATE NOT NULL , `datum_ende` DATE NULL , `datum_termin` DATE NULL , `intervall_termin` INT( 3 ) NULL , `kuendigungsfrist` INT( 3 ) NOT NULL , `id_personengruppe_m` INT( 10 ) NOT NULL , `id_personen_m` INT( 10 ) NOT NULL , `id_personengruppe` INT( 10 ) NOT NULL , `id_personen` INT( 10 ) NOT NULL , `id_geltungsbereich` INT( 10 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle REAKTIONSZEIT CREATE TABLE `reaktionszeit` ( `id_reaktionszeit` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , 45 Informatik I - Datenbanken 6 Praktische Aufgabenstellung `beschreibung` LONGTEXT NULL , `frist` INT( 3 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle SERVICEBEREICH CREATE TABLE `servicebereich` ( `id_servicebereich` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `beschreibung` LONGTEXT NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle SERVICEDETAIL CREATE TABLE `servicedetail` ( `id_servicedetail` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `beschreibung` LONGTEXT NULL , `id_servicebereich` INT( 10 ) NOT NULL , `id_reaktionszeit` INT( 10 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle SERVICE1 CREATE TABLE `service1` ( `id_service1` INT( 10 ) NOT NULL AUTO_INCREMENT , `kurzmeldung` CHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL , `meldung` LONGTEXT CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL , `eingang` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `termin` DATETIME NOT NULL , `id_personengruppe_m` INT( 10 ) NOT NULL , `id_personen_m` INT( 10 ) NOT NULL , `id_personengruppe` INT( 10 ) NOT NULL , `id_personen` INT( 10 ) NOT NULL , `id_servicedetail` INT( 10 ) NOT NULL , 46 Informatik I - Datenbanken 6 Praktische Aufgabenstellung `id_raum` INT( 10 ) NOT NULL , `id_status` INT( 10 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle STATUS CREATE TABLE `status` ( `id_status` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `beschreibung` LONGTEXT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; Erstellen der Tabelle AUFTRAG CREATE TABLE `auftrag` ( `id_auftrag` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bezeichnung` CHAR( 255 ) NOT NULL , `bemerkung` LONGTEXT NOT NULL , `beschreibung` LONGTEXT NOT NULL , `beginn` DATETIME NOT NULL , `ausfuehrungstermin` DATETIME NOT NULL , `id_personengruppe_m` INT( 10 ) NOT NULL , `id_personengruppe` INT( 10 ) NOT NULL , `id_personengruppe_nu` INT( 10 ) NULL , `id_personen` INT( 10 ) NOT NULL , `id_personen_m` INT( 10 ) NOT NULL , `id_personen_nu` INT( 10 ) NULL , `id_service1` INT( 10 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german1_ci; 47 Informatik I - Datenbanken 7 Abkürzungsverzeichnis 7 Abkürzungsverzeichnis ANSI American National Standards Institute BCNF Boyce-Codd-Normalform BMA Brandmeldeanlage CAFM Computer Aided Facility Management COBOL Common Business Oriented Language CODASYL COnference on DAta SYstems Languages DB Datenbank DBMS Datenbankmanagementsystem EMA Einbruchmeldeanlage ER Entity Relation FHTW Fachhochschule für Technik und Wirtschaft Berlin FM Facility Management GLT Gebäude-Leit-Technik GMS Gebäudemanagementsystem NF Normalform OODBMS Objektorientiertes Datenbankmanagementsystem RDBMS Relationales Datenbankmanagementsystem SQL Structured Querry Language 48 Informatik I - Datenbanken 8 Literaturverzeichnis 8 Literaturverzeichnis [1] VOSSEN, GOTTFRIED: Datenmodelle, Datenbanksprachen und Datenmanagementsysteme Auflagen, Addison-Wesley, 1994 [2] GEISLER, FRANK: Datenbanken, Grundlagen und Design 2. Auflage, Redline, 2006 [3] KEMPER, ALFONS UND EICKLER, ANDRE: Datenbanksysteme 6. Auflage, Oldenbourg Verlag, 2006, ISBN 3-486-57690-9 [4] TRAUTLOF, RAINER UND LINDNER, ULRICH: Datenbanken, Entwurf und Anwendung 1. Auflage, Verlag Technik Berlin, 1991, ISBN 3-341-00861-6 [5] KURBEL, KARL UND STRUNZ, HORST: Handbuch Wirtschaftsinformatik 1. Auflage, C.E. Poeschel Verlag Stuttgart, 1990, ISBN [6] ROLLAND, F.D.: Datenbanksysteme 1. Auflage, Pearson Studium München, 2003, ISBN 3-8273-7066-3 [7] VOSSEN, GOTTFRIED Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme 4. korrigierte und ergänzte Auflage, Oldenbourg Verlag, 2000, ISBN 3-48625339-5 49 Informatik I - Datenbanken 8 Literaturverzeichnis [8] ELMASRI, RAMEZ UND NAVATHE, SHAMKANT B. Grundlagen von Datenbanksystemen, Ausgabe Grundstudium 3. Auflage, Pearson Studium München, 2005, ISBN 3-8273-7153-8 [9] KUHLMANN, GREGOR UND MÜLLMERSTADT, FRIEDRICH SQL - Der Schlüssel zu relationalen Datenbanken 1. Neuausgabe, Rowohlt Taschenbuch Verlag Hamburg, 2004, ISBN 3499-61245-3 [10] FRITZE, JÖRG UND MARSCH, JÜRGEN Erfolgreiche Datenbankanwendungen mit SQL3 6. Auflage, Vieweg Wiesbaden, 2002, ISBN 3-528-55210-7 50 Informatik I - Datenbanken Bemerkungen: 51