Kapitel 12 Warum DB-Systeme, nichtrelationale Datenmodelle Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 1 Eigenschaften von DB-Systemen im Vergleich zu Dateisystemen DB-System Dateisystem Abstraktionsebene: logisch (DB-System kümmert sich um Speicherung, z. B. alle Daten zur Firma in einer DB) auf physischer Ebene (Nutzer muss sich um physische Speicherung kümmern) Abspeicherung: in einer oder mehreren Datenbanken des Unternehmens in mehreren Dateien (jeder hat seine privaten Dateien) Beschreibung der Daten: im Data Dictionary, d. h. zentral für alle Anwendungsprogramme im Anwendungsprogramm Zugriff / Mehrbenutzersynchronis. über DBS (Kontrolle hat DBS) über BS / eigene Programmierung Dienstprogramme (Backup, Recovery) über DBS i. d. R. eigene Programmierung Verknüpfungen zwischen Daten über DBS i. d. R. eigene Programmierung Entwicklungstools (GUI etc.) teilweise integriert in DBS isolierte Entwickungstools Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 2 Wie arbeiten Anwendungsprogramme mit Dateien / mit DB? AnwendungsProgr 1 ? AnwendungsProgr 2 . AnwendungsProgr 3 . . . AnwendungsProgr n Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 3 Arbeiten mit Dateien AnwendungsProgr. 1 Datenstruktur (DS) ist im Programm definiert. Änderung DS ⇒Änderung in allen Anwendungsprogrammen, die mit Datei arbeiten (keine Datenunabhängigkeit)! Datei A AnwendungsProgr. 2 Datei B AnwendungsProgr. 3 ... Jeder Nutzer der Daten muss physische Struktur kennen. ... Datei Z AnwendungsProgr. n Arbeiten mit einem DBS AnwendungsProgr. 1 AnwendungsProgr. 2 Daten (DB) DBMS AnwendungsProgr. 3 DBMS kennt logische und physische Datenstruktur DBMS ist auch Zugriffsfilter (Sichten) ... AnwendungsProgr. n Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 4 Vergleichendes Beispiel zu DB-System / Dateisystem DB-System: Dateisystem (in C++): SELECT FROM WHERE #include <fstream.h> .. typedef struct { char name [30]; int plz; char ort [30]; char telNr [20]; //obwohl: nicht benötigt } kunde_record; kunde_record buffer; fstream kunden_file; file.open (“kunden.dat“, ios::in | ios::binary); while (!file.eof()) { file.read( (char*) &buffer, sizeof(kunde_record) ); if buffer.ort = “Darmstadt“ { cout << buffer.name << buffer.plz << … } } … name, plz, ort kunde ort = ‘Darmstadt‘, Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 5 Auswirkungen von Änderungen in normalen Dateien Frage: Welche Auswirkungen haben Änderungen in der Datenstruktur von Dateien auf die die Dateien verwendenden Anwendungsprogramme? z. B. Einfügung Vorname Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 6 Auswirkungen von Änderungen in normalen Dateien Frage: Welche Auswirkungen haben Änderungen in der Datenstruktur von Dateien auf die die Dateien verwendenden Anwendungsprogramme? Änderungen in den Anwendungsprogrammen notwendig, da Dateibeschreibung in allen Programmen, die die Datei verwenden, redundant abgelegt sind. d. h. 5 Programme arbeiten mit einer Datei, 1 Programm benötigt zusätzliches Feld => alle 5 Programme müssen geändert werden. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 7 Was sind Metadaten? Es gibt die eigentlichen Daten: Krefelder Töpfermarkt, Krefeld, 10.-11.12.2012, … Wenn man die Daten so hinschreibt, weiß man noch nicht, was die Daten bedeuten, in welchen Formaten sie gespeichert werden etc. Abhilfe: Man gibt die Bedeutung, Formate etc. immer mit den Daten an: Relation Markt besteht aus: Bezeichnung: Krefelder Töpfermarkt, char(30); Standort: Krefeld, int; … Geht Richtung XML: <Markt> <Bezeichnung>Krefelder Töpfermarkt</Bezeichnung> <Standort>Krefeld</Standort> <Termin>10.-11.12.2008</Termin> <Oeffnungszeiten>8-20 Uhr</Oeffnungszeiten> <URL>www.KrefelderToepfermarkt.de</URL </Markt> Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 8 Was sind Metadaten? Lösung in DB-Systemen: - Die Daten haben immer wieder gleichen Aufbau - Man trennt Beschreibung des Aufbaus der Daten von den eigentlichen Daten Man unterscheidet zwischen: - eigentlichen Daten in der Datenbank und - Metadaten Metadaten werden in der Schemabeschreibung abgelegt: Beispiel: Relation Markt mit Attributen Bezeichnung char(30); Standort int; … Diese Beschreibungen stehen im Data-Dictionary des DBS. Krefelder Töpfermarkt, Krefeld, 10.-11.12.2012, Darmstädter Töpfermarkt, Darmstadt, 10.-11.03.2012, ... sind die eigentlichen Daten Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 9 Warum DBS? (1) Redundanzvermeidung: Ein Fakt in der realen Welt ist nur ein Mal in der DB abgelegt. Warum? -> siehe Kapitel ERD, Normalisierung ⇒ Verringerung von Inkonsistenzen (keine widersprüchlichen Informationen zum gleichen Objekt): Wenn z. B. eine Person mit Adresse doppelt vorkommen würden, könnte nach einem Umzug der Person die eine Adresse geändert sein, die andere wäre noch auf dem alten Stand. Beispiel: bestell.dat: 25.1.2005, Meyer, 64288, Bensheim, …<- geändert, da umgezogen kunden.dat: Meyer,64295, Darmstadt, … <- aus Versehen nicht geändert Frage: Wie modellieren wir, um dies zu vermeiden? Einheitliche Sicht auf die Daten ⇒ Standards durchsetzbar Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 10 Warum DBS? (2) Datenunabhängigkeit: Anwendungen müssen sich nicht um Details der Speicherstruktur und Zugriffstechniken kümmern. (physische Datenunabhängigkeit) Änderungen z. B. von Speicherstrukturen (physische Datenunabhängigkeit), Attributanzahl etc. (logische Datenunabhängigkeit) sind (oft) ohne Auswirkungen auf Anwendungsprogramme. Beispiel: Länge des Nachnamens wird von 30 auf 40 Zeichen gesetzt oder zusätzliches Attribut Qualifikation wird eingeführt. Streichen eines Attributs ist auch in DB-Systemen oft ohne Auswirkungen auf Anwendungsprogramme nicht möglich! Spontane Abfragen mit Hilfe des Dialogabfragesystems Beispiel: Selektiere alle Mitarbeiter, die mehr als 50000 € verdienen. Zugriffskontrolle bei parallelen Zugriff: Benutzung von Daten durch mehrere Programme gleichzeitig mit Kontrolle der Zugriffe, so dass z. B. keine „Lost Updates“ entstehen (Lesen Müller durch Ben. A, Lesen Müller durch Ben. B, Ändern Geh. und Zurückschreiben durch Ben. A, Ändern Geh. und Zurückschreiben durch Ben. B => Änderung von Ben. A wäre verloren!) Beispiel: Änderung des Gehalts von Müller durch A: + 10%, durch B: + 100 €. Frage: Welcher Update geht verloren? Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 11 Warum DBS? (3) Datensicherheit: Schutz vor systembedingten Fehlern wie Stromausfällen, Systemabstürzen, Softwarefehlern Datenschutz: Schutz der Daten vor unerlaubter Nutzung oder böswilliger Manipulation oder Löschung durch Zugriffskontrolle, d. h. Setzen von Sperren, durch DBS auch auf Feld- und Satzebene (nicht nur Read-, Write-Sperren ganzer Dateien) Beispiel: Nur Personalabteilung dürfen Gehälter der Mitarbeiter sehen. Integritätskontrolle: Schutz der Konsistenz der Daten vor unbeabsichtigten Eingabefehlern. Kontrolle von Integritätsbedingungen durch DBS (z. B. Wertebereiche, Existenzabhängigkeiten zwischen Datensätzen, allg. Bez. zwischen Werten) Beispiel: Alter von Mitarbeitern muss immer > 14 sein. Nachname ist max. 30 Zeichen lang. Zu Fremdschlüsselwert muss in anderer Relation Schlüsselwert existieren. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 12 Warum DBS? (4) Beziehungen zwischen Daten: können definiert und vom System kontrolliert werden. (referenzielle Integrität) Beispiel: Bestellung hat Beziehung zu Kunde. Zu Bestellung gibt es immer einen Kunden Verteilung von Daten: kann vom DBS verwaltet werden. Multiple Datensichten: Jede Anwendung kann eine eigene (externe) Sicht auf die Daten haben. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 13 Unterschied DB, DBS? Datenbank (DB) = Datenbestand Datenmanagementsystem (DBMS) = Software zum Arbeiten mit Datenbanken Datenbanksystem (DBS) = DB + DBMS aber: oft synonym zu DBMS verwendet. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 14 Gruppen von Personen, die mit dem DBS arbeiten Daten-Administrator (DA) / Datenbank-Designer - Hat zentrale strategische Verantwortung für die Daten. - Entscheidet welche Daten für wen gespeichert werden. Datenbank-Administrator (DBA) - Hat technische Verantwortung. - Entscheidet, wie Daten gespeichert werden. Anwendungsentwickler Entwickelt Anwendung z. B. in Programmiersprache. Arbeitet hinsichtlich der Definition von Daten mit DBA, DA zusammen. Endanwender Hat Zugriff auf Daten über GUIs / Abfragesprache. Zusammenarbeit mit Anwendungsentwickler in Entwicklungsphase. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 15 Historische Entwicklung von Datenbanksystemen 1965: Firma IBM entwickelt das DBS: IMS, das auf dem Hierarchischen Datenmodell beruht 1969 Standardisierungsgremium CODASYL schlägt Netzwerkmodell vor 1976: Firma SIEMENS (UDS) u.v.a. entwickeln DBS nach dem Netzwerk-Datenmodell seit 1970: Codd definiert das Relationale Datenmodell 1971 –1981: IBM entwickelt Prototyp für Relationales Datenbanksystem, Name: “System /R” mit Datenbanksprache: Sequel (~SQL) seit 1980: ORACLE, Relationales DBS mit SQL als Datenbanksprache auf dem Markt seit 1982: SQL/DS der Firma IBM mit SQL auf dem Markt seit 1984: Relationale DBS für PCs auf dem Markt: DBASE, ACCESS auch ORACLE seit Ende der 80-er: Entwicklung Objektorientierter DBS: GEMSTONE, ObjectStore, O2, POET (jetzt: FastObjects) u.v.a. 1992: SQL2-Standard wird verkündet; gleichzeitig Arbeit an einer OO-Erweiterung von SQL (Objektrelationale DBMS). Arbeitsname: SQL3 1999: XML-Datenbanken aktuelle Situation: Client-Server–Prinzip beim Einsatz von Datenbanksystemen, Einsatz von Datenbanksystemen in integrierten Softwaresystemen (hauptsächlich noch immer: Relationale DB-Systeme), Objektorientiertes Mapping (OO <-> relational) Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 16 Hierarchisches Datenmodell - 1:n-Beziehungen Schema des hierarchischen Datenmodells Dekor (0,*) 7 ist versehen mit (1,1) Produkt Beziehungen zwischen den konkreten Datenobjekten: Tasse S22 Pflanzendekor Teller S22 Tierdekor Untertasse S22 Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken Vase S17 Vase S23 17 Hierarchisches Datenmodell - Navigation Pflanzendekor Tasse S22 Teller S22 get unique <Schlüsselwert> get next get next within parent get hold... insert delete replace Tierdekor Untertasse S22 get get get get get Vase S17 Vase S23 unique Dekor ( DekorNr = ‘S22‘ ); next within parent; next; next within parent; next; Ergebnis? Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 18 Hierarchisches Datenmodell - n:m-Beziehungen Problem: Realisierung von n:m-Beziehungen E/R-Modell Kunde (0,*) (0,*) 7 Produkt 7: erhält geliefert Hierarchisches Modell: Kunde Produkt Bedeutung Pfeil: 1:n-Beziehung Nicht hierachische Beziehungen nur kompliziert und mit Einschränkungen realisierbar Lieferung Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 19 Netzwerk-Datenmodell - n:m Beziehungen Wie bei Relationenmodell: Auflösung von n:m-Beziehungen in zwei 1:n-Beziehungen (0,*) E/R-Modell (0,*) 7 Kunde Produkt 7: erhält geliefert Netzwerkmodell Kunde Produkt erhält geliefert wird geliefert Lieferung Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken Owner-Record-Typ Set-Typ Member-Record-Typ 20 Netzwerk-Datenmodell - Navigation Kopplung der Recordtypen nicht wie beim Relationenmodell durch Schlüssel-Fremdschlüssel, sondern: durch Zeiger (Set-Typen) Tasse S22 Lieferung 07 Lieferung 11 Kunde 1 Teller S22 Lieferung 12 wird_geliefert erhält_geliefert Vase S17 Lieferung 08 Kunde 2 Lieferung 10 Anfrage: Finde alle Produkte, die an den Kunden Meier geliefert werden. Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken Bedeutung Pfeil: Zeiger 21 Netzwerk-Datenmodell - Navigation Lieferung 07 Lieferung 11 Lieferung 12 Kunde 1 Tasse S22 wird_geliefert erhält_geliefert Kunde 2 Lieferung 08 Lieferung 10 Teller S23 Vase S17 find x record by calc-key find owner of current x set find next y record within current x set Anfrage: Finde alle Produkte, die an den Kunden mit Kundennummer =1 geliefert werden: KNR sei der calc-key im Record Kunde Kunde.KNR := 1; find Kunde record by calc-key; while not fail do begin find next Lieferung record within current erhält_geliefert; find owner of current wird_geliefert set; get Produkt; ... end; Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 22 Objektorientierte DBS - 1:n Beziehungen – FastObjects/C++ - Notation Markt (Bezeichnung, Standort, Kategorie) UML Klassendiagramm: Markt 0 .. * 1 .. 1 Ansprechpartner Veranstalter (Name, Typ) Veranstalter in OOP,OOD: Welche Mögl. der Realisierung d. Bez.? persistent class Markt { PtString Bezeichnung, Standort; int Kategorie; Veranstalter* derVeranstalter; public : Markt (char*, char*, int, Veranstalter*); ... }; persistent class Veranstalter { PtString Name; int Typ; cset <Markt*> dieMaerkte; public : Veranstalter (char*, int); ... Methoden der Klasse void Append (Markt*); }; Bemerkung: Wir können allerdings auch Klassen mit noch komplexeren Strukturen innerhalb der Klasse definieren ! Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 23 Objektorientierte DBS - Navigation Gesucht: Alle Markt-Standorte, die vom Veranstalter „Meyer“ organisiert werden. select m.Standort from m in AlleMaerkte, v in m.derVeranstalter where v.Name = “Meyer“ Ergebnis: { Sommerhausen, Krefeld } AlleMaerkte B: Int. Töpfermarkt S: Krefeld K: Töpfermarkt derVeranstalter: B: Töpfermarkt S: Sommerhausen K: Töpfermarkt derVeranstalter: AlleVeranstalter Zeiger Name: Meyer Typ: 2 dieMaerkte: Name: Schulze Typ: 3 dieMaerkte: B: Int. Töpfermarkt S: Hanau K: Töpfermarkt derVeranstalter: Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 24 XML-Datenbanken – Beispiel eines XML-Dokuments XML-Dokument ist einfache Textdatei: Kopfzeile mit XML-Version, verwendeten Zeichensatz (UTF-8 ist Defaultwert – kann weggelassen werden) und Angabe, dass DTD existiert <?xml version=“1.0“ encoding=“UTF-8“ standalone = “no“> <!doctype Markt SYSTEM “markt.dtd“> Verweis auf Strukturdaten <Markt> <Bezeichnung>Krefelder Töpfermarkt</Bezeichnung> <Standort>Krefeld</Standort> <Termin>10.-11.12.2012</Termin> <Oeffnungszeiten>8-20 Uhr</Oeffnungszeiten> <URL>www.KrefelderToepfermarkt.de</URL> </Markt> Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken Daten 25 XML-DTD Das zu dem obigen XML-Dokument Markt passende „Document Type Definition“ (DTD) mit Angabe des Formats: <?xml version="1.0" encoding="UTF-8"> <!ELEMENT Bezeichnung (#PCDATA)> <!ELEMENT Standort (#PCDATA)> <!ELEMENT Termin (#PCDATA)> <!ELEMENT Oeffnungszeiten (#PCDATA)> <!ELEMENT URL (#PCDATA)> <!ELEMENT Markt (Bezeichnung, Standort?, Termin?, Oeffnungszeiten+, URL?)> mehrere Märkte: <!ELEMENT Maerkte (Markt+)> Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 26 XML-Schema XML-Namespace = xs <xs:element name="Markt"> <xs:complexType> <xs:sequence> <xs:element name="Bezeichnung" type="xs:string"/> <xs:element name="Standort" type="xs:string"/> <xs:element name="Oeffnungszeiten" type="xs:string"/> <xs:element name="Termin" type="xs:string"/> <xs:element name="URL" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> --mehrere Märkte: <xs:element name="Maerkte"> <xs:complexType> <xs:sequence> <xs:element ref="Markt" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 27 XML - n:m-Beziehung Extensible Linking Language (XLink) Markt Produkt - Nummer : int - Bezeichnung : String - Grösse : double - Fassungsvermögen : double - Preis : double - Funktion : int - Foto : BLOB + getAnzVerkauft () : int 1..* 0..* - Bezeichnung - Standort - Termin von - Termin bis - URL - Kategorie - Ranking - Standgebühr pro qm + getDauer () : int : String : String : Date : Date : String : int : int : double Angebot - Anzahl : int Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken 28 XML - n:m-Beziehung Extensible Linking Language (XLink) <!ELEMENT Markt (Bezeichnung, Standort, Termin, Oeffnungszeiten, URL)> <!ATTLIST Markt Nr ID #REQUIRED> ... <!ELEMENT Produkt (.....)> <!ATTLIST Produkt Nr ID #REQUIRED> ... . <!ELEMENT WirdAngebotenAuf (Anzahl)> <!ATTLIST WirdAngebotenAuf Produkt Nr IDREF #REQUIRED Markt Nr IDREF #REQUIRED> Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken eindeutigen Identifikation Bezug auf eindeutigen Identifikation 29