1 Datenbanken (Allgemeine Einführung) 1. Einleitung: Ziel: Datenspeicherung und -organisation zentral (anwendungsübergreifend) gelöst. Datenbank Menge von Daten, für die ein globales Modell bzgl. ihrer Struktur festgelegt ist (Datenbankschema oder Datenmodell). Datenbanksystem Besteht aus einer Sammlung gespeicherter Daten (Datenbank) sowie der (DBS) Software, welche Dienste zur Speicherung und zum Zugriff auf strukturierte Daten zur Verfügung stellt: Operationen zum Eintragen, Löschen, Suchen und Verknüpfen von Daten. Wichtig ist die Verwaltung von Daten mit langer Lebensdauer sowie der effiziente Zugriff auf große Mengen von Daten. Logischer Aufbau einer Datenbank Datenbankmanagementsystem (DBMS) Ein DBMS ist die Gesamtheit aller Programme für den Umgang mit den Daten. Es ist verantwortlich für sichere und einheitliche Verwaltung persistenter (langlebiger) Daten, Datenaustausch zwischen Datenbank und Anwendungsprogrammen, Verhinderung von unkontrollierten Zugriffen auf den Datenbestand und effiziente Zugriffsmöglichkeit auf die in der Regel sehr großen Datenbestände. Anforderungen: 1. Kontrolle über Daten (gemeinsame Nutzung) 2. Eliminierung von Redundanzen 3. Kontrolle der Datenintegrität a. Zugriffskontrollen (Datenschutz). b. Erhaltung der logischen Datenintegrität. c. Kontrollierter Mehrbenutzer-Betrieb. 4. Leichte Handhabbarkeit der Daten: Datenmodell, Datenzugriff (z.B. SQL). 5. Datenunabhängigkeit: Anwendungen von der Organisation und Speicherungen der Daten unabhängig. 2. Logische Datenorganisation – Unterschied zwischen semantisch konzeptionellem Datenmodell und DBVS-gestütztem konzeptionellem Datenmodell Ein Realitätsausschnitt wird semantisch vollständig (mit vollständigem Bedeutungsinhalt) wiedergegeben Realitätsausschnitt Semantisches konzeptionelles Datenmodell Semantische konzeptionelle Datenmodelle sind semantisch reichhaltiger als DBVS-gestützte konzeptionelle Datenmodelle DBVS-gestütztes konzeptionelles Datenmodell Bezüglich der Semantik sind die Restriktionen des DBVS zu beachten. 3. Entwurfsschritte (1) Erstellung eines Modells der Daten und der Beziehungen zwischen diesen Daten -> Datenmodell, z.B. ER-Modell (2) Abbildung des Datenmodells auf eine Menge von Tabellen (relationales Modell) (3) Normalisierung: Entfernen aller Redundanzen. Eine Redundanz liegt vor, wenn dieselbe Information an mehreren Stellen eingetragen ist, z.B. der Name eines Studenten in verschiedenen Tabellen der Datenbank, wenn der Student durch die Matrikelnummer eindeutig identifizierbar ist. Bei einer Änderung des Namen müssten alle Stellen in der Datenbank geändert werden; bei Vergessen einer Änderungsstelle können Fehler auftreten. (4) Eintragen der Daten in die Tabellen. (5) Realisierung der möglichen Abfragen -> Sichten auf die Daten in den Tabellen. 4. Datenmodell Definition: Ein Datenmodell ist ein (oft mathematischer) Formalismus mit einer Notation zur Beschreibung und Definition der Datenobjekte, einer Menge von Operationen zur Manipulation der Daten. Beispiele Entity-Relationship-Modell (ER-Modell), Objektorientiertes Modell, Hierachisches Modell. Beispiel für ein ER-Modell: Graphisches Hilfsmittel zur sematischen Modellierung eines Anwendungsgebietes, d.h. zum Entwurf einer Datenbank, unabhängig vom konkreten DBS. Dient vor allem zur Kommunikation zwischen DB-Designer und Auftraggeber. Grundidee: Reale Welt (Mini-Welt) läßt sich durch Objekte und Beziehungen zwischen Objekten beschreiben (Objekte: Entities, Beziehungen: Relationships). Gleichartige Entities (Objektinstanzen) werden zu Entity-Typen bzw. Relationships zu Relationship-Typen zusammengefasst. Beispiele: Entity-Typen: "Bibliotheksbenutzer", "Buch", und Relationship-Typ: "Entleihe". Entities und Relationships können Attribute besitzen, z.B. Attribut "Name" bei Entity "Bibliotheksbenutzer", "Entleihdatum" bei Relationship "Entleihe". Entity-Typ: Ein Entity-Typ fasst eine Menge von gleichartigen Objektinstanzen, die durch gleiche Attribute charakterisiert sind, zusammen. Relationship-Typ Ein Relationship-Typ umfasst die Menge gleichartiger Relationships. Ein Relationship-Typ R stellt die Beziehung zwischen Entity-Typen E1 und E2 her. – Ein wichtiges Charakteristikum von 2-stelligen Relationship-Typen ist ihre Kardinalität. Dadurch wird zum Ausdruck gebracht, mit wie vielen Entities ein gegebenes Entity in Beziehung stehen kann. Bezeichnung einfach konditionell multipel multipel-konditionell Symbol Anzahl der Entitäten in E2, die der Entität E1 zugeordnet werden können 1 genau eine c keine oder eine, d.h. c=0 oder c=1 m mindestens eine, d.h. m >=1 mc keine, eine oder mehrere, d.h. mc >=0 – Man kann verschiedene Kardinalitätsarten unterscheiden – z.B. 1:1, ein Entity aus E1 kann mit höchstens einem Entity aus E2 über R in Beziehung stehen kann und umgekehrt. n:1, ein Entity aus E1 kann mit höchstens einem Entity aus E2 , aber ein Entity aus E2 mit beliebig vielen Entities aus E1 über R in Beziehung stehen. 1:n, ein Entity aus E1 kann mit beliebig vielen Entities aus E2 , aber ein Entity aus E2 mit höchstens einem Entity aus E1 über R in Beziehung stehen. n:m, ein Entity aus E1 kann mit beliebig vielen Entities aus E2 über R in Beziehung stehen und umgekehrt. Beispiel: Teil eines ER-Models für eine “Gläserne Produktion von Fleisch“ bezogen auf die Tiermedikation 2 Relationale Datenbanksysteme Mit Entity-Relationship-Diagrammen läßt sich das logische Modell einer Datenbank darstellen. Wird diese Datenbank in einem DBS implementiert, dann ist dieses logische Modell in ein physikalisches Modell zu transformieren. Ein Beispiel für ein physikalisches Datenbankmodell ist das relationale Datenbankmodell. Allgemeine Eigenschaften relationaler Datenbanken In relationalen Datenbanken "sieht" der Benutzer die Information in Form von Tabellen. Jede dieser Tabellen besteht aus Spalten, den sog. Attributen. • Die Daten werden in einer Menge von Tabellen gespeichert. Normalerweise eine Tabelle je Entity-Typ und eine Tabelle je Relationship-Typ (bei manchen 1:1 und 1:n Relationships sind Optimierungen möglich, die ohne eine eigene Tabelle auskommen). • Jede Tabelle hat einen Tabellennamen ("Relationenname") sowie Spalten und Zeilen. • Jede Zeile repräsentiert einen zusammengehörigen Datensatz; Zeile wird als Tupel einer Relation aufgefasst; Spalten werden als Attribute bezeichnet. • Jede Tabelle hat einen Primärschlüssel, durch den eine Zeile (Datensatz) eindeutig identifiziert ist. Beispiel: Jeder einzelne Student wird durch die Matrikelnummer identifiziert. • Die Ordnung der Zeilen ist ohne Bedeutung; durch ihre Reihenfolge wird keine für den Benutzer relevante Information ausgedrückt. • Die Ordnung der Spalten ist ohne Bedeutung, da sie einen eindeutigen Namen (Attributnamen) tragen. • Alle für den Benutzer bedeutungsvollen Informationen sind ausschließlich als Datenwerte in den Tabellen ausgedrückt. • Weisen zwei Tabellen eine Spalte auf, die das gleiche Attribut (Bedeutungsinhalt und – „verträglicher“ – Datentyp) beschreiben, kann eine Beziehung zwischen den beiden Tabellen hergestellt werden. Damit können Daten verschiedener Tabellen einander zugeordnet werden. • Beispiel: Tabelle Studenten Die Tabelle Studenten modelliert den Entity-Typ Studenten, d.h. jede Zeile repräsentiert einen Studenten; Primärschlüssel ist die Matrikelnummer. Matrikelnummer Nachname Vorname PLZ Ort Straße Hausnummer 3 Übungsaufgabe ER-Modell - Einführung einer datenbankgestützten Prüfungsverwaltung Aufgaben a) Die Prüfungsverwaltung an der Monaco-International-University erfolgt bisher manuell. Sie wurden als Projektleiter(in) eingestellt, die fachlichen Vorgaben für eine Prüfungsverwaltung zu erstellen und in diesem Zusammenhang insbesondere ein adäquates Datenmodell zu entwickeln, das folgende Entitätsmengen und Attribute enthält: Studentenstammdaten, die u.a. folgende Informationen enthalten: Matrikelnummer, Nachname, Vorname, Strasse, Hausnummer, PLZ, Ort Prüfungsstammdaten, die u.a. folgende Informationen enthalten: FachID, Fachbezeichnung Die Beziehung zwischen den o.g. Entitätsmengen sollen die erbrachten Prüfungsleistungen darstellen. Zeichnen Sie ein ER-Modell (Entitätsmengen und ihre Beziehungen untereinander) auf der Basis der o.g. Informationen. Führen sie an den Entitätsmengen die relevanten Attribute (insbesondere Schlüsselattribute) auf und ergänzen Sie ggf. geeignete Attribute. b) Erläutern Sie das Ziel und die Vorgehensweise zur Normalisierung von Datenbanktabellen c) Normalisieren Sie folgende Datenbanktabelle MatrikelNr Name Anschrift Geburtsdatum Alter 4711 Bond, James 1.7.2003 1 4712 Jürgen Ewald 1.7.2002 2 4713 Ewald Schmidt Ringstr. 35; 85395 Attenkirchen 91154 Roth, Kneippstr. 25 Am alten Gefängnis 99 in 83977 Reichersbeuern 1.7.2000 4