XML und Datenbanken K. Schild 2006/M. Mochol 2007 1



Ähnliche Dokumente
XML und Datenbanken. Übersicht

XML und Datenbanken. Relationales Datenmodell. Relationales Datenmodell. Heutige Vorlesung. Übersicht. Primär- und Fremdschlüssel

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

7. Übung - Datenbanken

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

XINDICE. The Apache XML Project Name: J acqueline Langhorst blackyuriko@hotmail.de

1 Mathematische Grundlagen

Feiertage in Marvin hinterlegen

Word 2010 Schnellbausteine

... MathML XHTML RDF

XML und Datenbanken. Wintersemester 2003/2004. Vorlesung: Dienstag, 13:15-15:00 Uhr IFW A36. Übung: Dienstag, 15:15-16:00 Uhr IFW A36

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Klaus Schild, XML Clearinghouse Namensräume

SUDOKU - Strategien zur Lösung

Einführung in die Algebra

Gegeben ist das folgende XML-Dokument.

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Integration verteilter Datenquellen in GIS-Datenbanken

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

3. Das Relationale Datenmodell

1. Ziel des Datenbankentwurfs

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Themenblock 2: Datenmodellierung mit ERM

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

Primzahlen und RSA-Verschlüsselung

Zwischenablage (Bilder, Texte,...)

Umzug der abfallwirtschaftlichen Nummern /Kündigung

WS 2002/03. Prof. Dr. Rainer Manthey. Institut für Informatik III Universität Bonn. Informationssysteme. Kapitel 1. Informationssysteme

Energetische Klassen von Gebäuden

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Universität Augsburg, Institut für Informatik Wintersemester 2011/2012 Prof. Dr. W. Kießling 03. Feb Semesterklausur

Erstellen von x-y-diagrammen in OpenOffice.calc

7 Rechnen mit Polynomen

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Lehrer: Einschreibemethoden

2.5.2 Primärschlüssel

Vorlesung Dokumentation und Datenbanken Klausur

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Fachbereich Wirtschaftswissenschaften Campus Sankt Augustin

Einführung in. Logische Schaltungen

Im Original veränderbare Word-Dateien

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

System: DFBnet SpielPlus R3.90

Datenbankmodelle 1. Das Entity-Relationship-Modell

Ein Beispiel. Ein Unternehmen will Internettechnologien im Rahmen des E- Business nutzen Welche Geschäftsprozesse?

Abenteuer e-commerce Erfolgreich mit dem eigenen Onlineshop.

Import und Export von Übergängern

Artenkataster. Hinweise zur Datenbereitstellung. Freie und Hansestadt Hamburg. IT Solutions GmbH. V e r s i o n

Layoutmodelle. Steffen Schwientek Große Klostergasse Friedberg schwientek@web.de Web :schlaukopp.org

Java und XML 2. Java und XML

Professionelle Seminare im Bereich MS-Office

Outlook und Outlook Express

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Datenbanken Microsoft Access 2010

Allgemeines zu Datenbanken

5. Übung: PHP-Grundlagen

Datenbanken Kapitel 2

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

XML-Austauschformat für Sicherheitsdatenblätter

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Klaus Schild, XML Clearinghouse Transformation von XML-Dokumenten

Objektorientierte Programmierung

SMS/ MMS Multimedia Center

Lineare Gleichungssysteme

Formica 2.0: Montageauftrag erfassen: Auftragsgruppe

Viele Bilder auf der FA-Homepage

mobifleet Beschreibung 1. Terminverwaltung in der Zentrale

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Aufgabe 1: [Logische Modellierung]

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Datenmanagement in Android-Apps. 16. Mai 2013

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Hinweise zum elektronischen Meldeformular

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Planung für Organisation und Technik

Inhaltsverzeichnis. 1. Fragestellung

ABTEILUNGS- ABTEILUNGS- LEITER NAME

Fachhochschule Deggendorf Platzziffer:...

Professionelle Seminare im Bereich MS-Office

Sonderrundschreiben. Arbeitshilfe zu den Pflichtangaben in Immobilienanzeigen bei alten Energieausweisen

Speicher in der Cloud

Benutzerhandbuch - Elterliche Kontrolle

Migration von statischen HTML Seiten

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Anleitung über den Umgang mit Schildern

Transkript:

XML und Datenbanken 1

Heutige Vorlesung letzte Woche Warum XML-Dokumente transformieren? XML-Dokumente mit XSLT transformieren XSL-FO zur Erzeugung von druckfähigem Layout heutige Vorlesung XML und Datenbanken 2

Übersicht Daten vs. Dokumente Wie XML persistent speichern? Vergleich XML mit relationalem Modell Exkurs: relationales Modell - Darstellung von N:M-Beziehungen - funktionale Abhängigkeiten, Normalformen Wie Daten mit XML modellieren? 3

Daten & Dokumente 4

Daten vs. Dokumente Auswahl der Datenbank hängt von den zu speichernden Objekt Daten- vs. Dokumentspezifische Dokumente (data-centric vs. document-centric centric documents) 5

Datenspezifische Dokumente reguläre Struktur (hoher Strukturierungsgrad) feinkörnige Daten wenig bzw. keine gemischte Inhalte leichte Verarbeitung für Maschinen Beispiele: Kataloge, Verkaufsaufträge, Flugpläne, etc. traditionelle Datenbanken (relationale, objekt-orientierte) XML-fähige Datenbanken (XML-enabled databases) 6

Dokumentspezifische Dokumente weniger reguläre Struktur /irregulärere Struktur grobkörnige rnige Daten viele gemischte Inhalte Dokument als Ganzes von Bedeutung entwickelt für Menschen Beispiele: Bücher, E-Mails, Werbung, etc. CMS XML Datenbanken (nativ XML databases) 7

Wie XML persistent speichern? 8

XML vs. relationale Datenbanken XML relationale Datenbanken book Book BookKey Title Edition title Beginning XML edition 2nd authors author author author David Hunter Curt Cagle Chris Dix Hierarchie (Baum) Kind-Elemente: Reihenfolge relevant Anfragen: XPath Authorship Key 1 2 3 BookKey 1 1 1 Author AuthorKey 1 2 3 AuthorKey 1 2 3 FirstName David Kurt Chris LastName Hunter Cagle Dix Tabellen mit Schlüssel Spalten und Zeilen: Reihenfolge egal 1 Anfragen: SQL Beginning XML 2nd 9

Wie XML persistent speichern? Anwendung Tabellen/SQL Anwendung XML/XPath Anwendung XML Wrapper Tabellen/SQL relationale Datenbank XML als einfachen String speichern XML- Datenbank XML als strukturiertes XML-Dokument speichern Customers CustomerNo FirstName LastName Customers 1 Brian Thompson CustomerNo FirstName LastName CityId 2 Sally Henderson 1 Brian Thompson NYC 2 Sally Henderson relationale Datenbank XML als Tabellen speichern NYC CityId NYC NYC 10

1. XML als String speichern hierarchische XML-Struktur als Wert eines Feldes in einer Tabelle speichern XML-Struktur als String serialisieren Vor- und Nachteile Anwendung Tabellen/SQL + vorhandenes relationales Datenbanksystem (RDBMS) kann genutzt werden + triviale Schnittstelle zwischen XML und RDBMS relationale Datenbank - keine komplexen Anfragen (z.b. mit XPath) auf XML-Struktur 11

2. XML in XML-Datenbank speichern Internes Model basiert auf XML Übersicht XML-Datenbanken: www.rpbourret.com/xml/xmldatabaseprods.htm Vorteile + komplexe Anfragen auf XML-Struktur möglich + XPath wird unterstützt + Schnell bei einheitlichen Views Anwendung XML/ XPath XML- Datenbank 12

2. XML in XML-Datenbank speichern Nachteile - neue Datenbank nötig - XML-Datenbanken nicht interoperabel - XML-Datenbanken liefern nur XML zurück - schwierige Integration mit bestehenden relationalen Datenbanken (RDB) - keine Systematik der Datenmodellierung - Langsam bei Anfragen, die unterschiedliche Views verlangen 13

3. XML als Tabellen speichern Abbildung XML Tabellen möglich Abbildung Tabellen XML problemlos Anfragen: SQL mit XML-Funktionen (z.b. SQL/XML) Vor- und Nachteile + vorhandene RDB kann genutzt werden + von modernen RDBMS unterstützt + Systematik der Datenmodellierung für Tabellen - Abbildung XML Tabellen XML liefert nicht unbedingt ursprüngliche XML-Struktur Anwendung XML Wrapper Customers CustomerNo FirstName LastName CityId Customers 1 Brian Thompson NYC CustomerNo FirstName LastName CityId 2 Sally Henderson NYC 1 Brian Thompson NYC 2 Sally Henderson NYC relationale Datenbank Tabellen/SQL 14

Fazit: Wie XML speichern? Sollen Daten oder Dokumente gespeichert werden? Wie tief XML-Strukturen in die Datenbank integrieren? 1. XML als einfachen String in Feld einer Tabelle speichern: gar nicht integrieren 2. XML-Datenbanken: voll integrieren 3. XML als Tabellen speichern: soweit wie möglich m integrieren nur zu beantworten, wenn XML mit relationalem Datenmodell verglichen wird 15

Exkurs: Relationales Modell 16

Relationales Modell Customers CustomerNo FirstName LastName CityId 1970 von Codd eingeführt Daten in Tabellen organisiert 1 2 Brian Sally Thompson Henderson Tabelle repräsentiert n-stellige Beziehung (Relation) zwischen primitiven Daten. keine geschachtelten Tabellen Tabelle besteht aus Spalten (Felder) und Zeilen (Tupel). Zeilen und Spalten ungeordnet Tabellen haben eindeutige Namen. NYC NYC 17

Primär- und Fremdschlüssel ssel mindestens eine Spalte einer Tabelle ist Primärschl rschlüssel: eindeutiger Repräsentant einer bestimmten Zeile bei mehreren Spalten: zusammengesetzter Primärschl rschlüsselssel Fremdschlüssel ssel: referenziert Primärschlüssel anderer Tabelle Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC Orders OrderNo CustomerNo ItemNo 121 1 FX100 5 1 FX200 18

Eindeutigkeit und Existenz Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC Orders OrderNo 121 5 CustomerNo 1 1 ItemNo FX100 FX200 Primärschl rschlüsselssel müssen für jede Zeile einen Wert haben. müssen innerhalb der Tabelle eindeutig sein. Für jeden Fremdschlüssel ssel muss ein zugehöriger Primärschlüssel existieren. 19

Typen von Beziehungen Tabellen (Relationen): Customers CustomerNo FirstName LastName Beziehungen zwischen 1 Brian Thompson primitiven Daten 2 Sally Henderson meist Objekte der realen Welt, wie z.b. Kunden oder Aufträge. CityId Zwischen zwei Objekten der realen Welt kann 1:1-, 1:Noder N:M-Beziehung bestehen. NYC NYC Wie werden 1:1-, 1:N- und N:M-Beziehungen im relationalem Modell ausgedrückt? 20

1:N-Beziehung Kunde 1 * Auftrag Bestimmter Kunde kann mehrere Aufträge erteilen. Umgekehrt ist aber jedem Auftrag immer genau ein Kunde zugeordnet. Zwischen Kunden und Aufträgen besteht eine 1:N- Beziehung. 21

1:N-Beziehung im relationalen Modell Primärschl rschlüsselssel 1 Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC : N eindeutig Orders Fremdschlüssel ssel OrderNo CustomerNo ItemNo 121 1 FX100 5 1 FX200 nicht eindeutig 22

1:1-Beziehung Kunde 1 1 Kunde (ausführlich) 1:1-Beziehungen eher selten Beispiel: zwei unterschiedliche Kunden-Tabellen kompakte Version für Außendienstmitarbeiter ausführlichere Version für die interne Verwaltung Zwischen den beiden Tabellen besteht eine 1:1- Beziehung. 23

1:1-Beziehung im relationalen Modell Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC Customers (detailed) CustomerNo LastName FirstName CityId CreditCard CreditCardNo 1 Brian Thompson NYC Amex 100900402344 2 Sally Henderson NYC Visa 100800402e33 beide Schlüssel gleichzeitig Primär- und Fremdschlüssel 24

N:M-Beziehung Kunde * * Angestellter Angestellter kann mehrere Kunden betreuen. Umgekehrt kann Kunde gleichzeitig von mehreren Angestellten betreut werden. Zwischen Kunden und Angestellten besteht eine N:M- Beziehung. 25

N:M-Beziehung im relationalen Modell Kunde 1 * * 1 Angestellter im relationalen Modell N:M-Bezeiehung nicht direkt darstellbar muss in zwei 1:N-Beziehungen aufgebrochen werden Dritte Tabelle enthält Fremdschlüssel beider Tabellen. 26

N:M-Beziehung im relationalen Modell N : 1 1 : N Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC N:M-Relationship Key CustomerNo EmployeeNo 121 1 4 5 1 5 Employees EmployeeNo FirstName LastName CityId Type 4 Mark Whitehorn NYC Sales person 5 Bill Marklyn NYC Human Resources 27

Alternative Darstellung N : 1 1 : N Customers CustomerNo FirstName LastName CityId 1 Brian Thompson NYC 2 Sally Henderson NYC N:M-Relationship CustomerNo EmployeeNo 1 4 1 5 Employees EmployeeNo FirstName LastName CityId Type 4 Mark Whitehorn NYC Sales person 5 Bill Marklyn NYC Human Resources 28

Normalformen Hilfsmittel zur Modellierung von Daten für relationales Modell formal definiert Ziel Eigenschaften (Felder) zu passenden Objekten (Tabellen) gruppieren redundante Informationen eliminieren sicherstellen, dass jede Information eindeutig identifiziert werden kann Mittel Verständnis der Bedeutung der Daten Verständnis funktionaler Abhängigkeiten 29

Funktionale Abhängigkeiten Beispiel: Fläche = Höhe X Breite Fläche funktional abhängig von der Höhe und Breite: Fläche = f(höhe, Breite), für eine Funktion f es gibt auch funktionale Abhängigkeiten zwischen Feldern einer Tabelle 30

Beispiel Orders OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity 121 3 4 1024 Nut 3 121 4 4 1024 Bolt 67 122 3 9 176 Nut 9 Annahme: jedem Auftrag genau ein Angestellter (Vermittler) zugeordnet EmployeeNo = f(orderno) EmployeeNo funktional abhängig von OrderNo. Wichtig: Funktionale Abhängigkeiten nicht an Daten selbst zu erkennen, sondern an ihrer Verwendung. 31

Weitere funktionale Abhängigkeiten Orders OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity 121 3 4 1024 Nut 3 121 4 4 1024 Bolt 67 122 3 9 176 Nut 9 Quantity = f 1 (OrderNo, ItemNo) ItemName = f 2 (ItemNo) CustomerNo = f 3 (OrderNo) 32

Normalformen verschiedene Stufen, die aufeinander aufbauen: 1., 2., 3. Normalform ( Anhang) Grundidee Unterscheidung funktionaler Abhängigkeiten in notwendige und nicht erlaubte Sei P der Primärschlüssel einer Tabelle. Seien F i ein beliebiges Nicht-Schlüssel-Feld der Tabelle. notwendig: F i = f(p) nicht erlaubt: F i = f(p'), P' echte Teilmenge von P F i = f(p), jedoch F i = f(f j ), F j = f(p) für ein weiteres Nicht-Schlüssel-Feld F j 33

Beispiel Orders OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity 121 3 4 1024 Nut 3 121 4 4 1024 Bolt 67 122 3 9 176 Nut 9 notwendig F i = f(orderno,itemno), F i = EmployeeNo,,Quantity nicht erlaubt ItemName = f(itemno) CustomerNo = f(orderno) EmployeeNo = f(orderno) 34

Weiteres Beispiel Customers CustomerNo FirstName LastName CityId City 1 Brian Thompson NYC New York City 2 Sally Henderson NYC New York City notwendig F i = f(customerno), F i = FirstName,,CityId, City nicht erlaubt City = f(cityid) 35

Abbildung relationales Modell XML 36

Relationales Modell XML Relationales Modell kann einfach und ohne Informationsverlust in XML kodiert werden. Kodierung könnte als Standard für RDBMS dienen. Hierfür gibt es allerdings keinen etablierten Standard. inoffizieller Vorschlag: http://www.w3.org/xml/rdb.html XML mindestens so ausdrucksstark wie relationales Modell 37

Mapping-Verfahren Geeignete Abbildungen und Transformationsmechanismen zwischen beiden Informationsträgern finden Mapping-Verfahren Template-driven Mapping: Datenbankinhalte XML Model-driven driven Mapping: Datenbank XML & XML Datenbank 38

Template-driven Mapping <?xml version="1.0"?> <FlightInfo> <Intro> the following flights have available seats: </Intro> <SelectStmt> SELECT Airline, FltNumber, Depart, Arrive FROM Flights </SelectStmt> </FlightInfo> keine fest definierte Abbildung Verwendung von XML-Dokumenten, die als Templates dienen Einbettung von Anweisungen (z.b. SELECT- Statements) 39

Template-driven Mapping Beispiel <?xml version="1.0"?> <FlightInfo> <Intro> the following flights have available seats: </Intro> <SelectStmt> SELECT Airline, FltNumber, Depart, Arrive FROM Flights </SelectStmt> </FlightInfo> XML-Template mit Select-Anweisung Ergebnis <?xml version="1.0"?> <FlightInfo> <Intro> the following flights have available seats: </Intro> <Flights> <Row> <Airline>ACME</Airline> <FltNumber>123</FltNumber> <Depart>Dec 12, 2001 13:43</Depart> <Arrive>Dec 13, 2001 01:21</Arrive> </Row>... </Flights> </FlightInfo> 40

Model-driven Mapping Mapping: Datenbank XML & XML Datenbank festes Model Table Model wenig flexibel aber intuitive Abbildung nur für sehr flache XML-Dokumente Einsatzbereich beschränkt auf relationale Strukturen Data Specific Object Model Modellierung der Daten Abbildung: Daten korrespondierende Objekte hierarchische Baumstruktur 41

Table Model <database> <table> <row> <column1>...</column1> <column2>...</column2> <column3>...</column3>... </row>... </table> <table>... </table> </database> Vorteile + einfach + leicht zu implementieren + schneller und effizienter Datenaustausch Nachteil - nicht anwendbar bei komplexeren Datenmodellen und tiefer verschachtelten XML-Dokumenten 42

Data Specific Object Model <Orders> <SalesOrder SONumber="12345"> <Customer CustNumber="543">... </Customer> <OrderDate>150999</OrderDate> <Line LineNumber="1"> <Product Name="Cherries">... </Product> <Quantity Unit="ton">2</Quantity> </Line> </SalesOrder> </Orders> abgeleitete Objekte Quelle: http://www-is.informatik.uni-oldenburg.de/~grawund/lehre/seminare/wwd_2000_2001/texte/db_und_xml.pdf Customer Daten-spezifischer Objektbaum Orders SalesOrder 43 Line Product object SalesOrder { sonumber = "12345"; customer = { custptr}; line = { lineptr}; orderdate = "150999"; } object Line { linenumber = "1"; product = { prodptr}; quantity = { quantptr}; }

Abbildung relationales Modell XML Type Model 44

Kodierung einer RDB in XML <Database> <EmployeeTable> <EmployeeTuple> <EmployeeNo>k1</EmployeeNo> <FirstName>Mark</FirstName> <LastName>Whitehorn</LastName> <CityId>NYC</CityId> <Type>Sales Person</Type> </EmployeeTuple> <EmployeeTuple> <EmployeeNo>k2</EmployeeNo> <FirstName>Bill</FirstName> <LastName>Marklyn</LastName> <CityId>NYC</CityId> <Type>Human Resources</Type> </EmployeeTuple> </EmployeeTable>... <database> <table> Wurzel-Element = <row> Name der Datenbank <column1>...</column1> <column2>...</column2> <column3>...</column3> für jede Tabelle genau... ein Kind- </row> Element... </table> <table> darunter für jedes Tupel genau ein... Kind-Element </table> </database> darunter für jede Spalte ein Kind- Element 45

Kodierung von Null Values <Database> <EmployeeTable> <EmployeeTuple> <EmployeeNo>k1</EmployeeNo> <FirstName>Mark</FirstName> <LastName>Whitehorn</LastName> <CityId>NYC</CityId> <Type>Sales Person</Type> </EmployeeTuple> <EmployeeTuple> <EmployeeNo>k2</EmployeeNo> <FirstName>Bill</FirstName> <LastName>Marklyn</LastName> <Type></Type> </EmployeeTuple> </EmployeeTable> Leerwerte (null values): undefinierte Werte Kodierung: entsprechendes Element (= Feld) einfach weglassen dadurch Unterscheidung zu leerem Inhalt 46

Das zugehörige XML-Schema xsd:sequence xsd:all xsd:all minoccurs="0" Reihenfolge der Tabellen, Tupel und Spalten egal 47

Kodierung von Schlüssel Primärschlüssel: Typ xsd:id. Fremdschlüssel: Typ xsd:idref. Probleme dieser Kodierung keine zusammengesetzten Primärschlüssel darstellbar Statt Eindeutigkeit innerhalb der Tabelle, erzwingt xsd:id Eindeutigkeit aller Attribute mit Typ xsd:id Zwei Tabellen dürfen keine identischen Primärschlüssel haben. Statt eines ganz bestimmten Primärschlüssels, referenziert xsd:idref beliebigen Primärschlüssel mit Typ xsd:id. 48

Beispiel <Database> <EmployeeTable> <EmployeeTuple> <EmployeeNo>ID4</EmployeeNo> <FirstName>String</FirstName> <LastName>String</LastName> <CityId>ID5</CityId> <Type>String</Type> </EmployeeTuple> </EmployeeTable> <CustomerTable> <CustomerTuple> <CustomerNo>ID5</CustomerNo> </CustomerTuple> </CustomerTable> </Database> Primärschlüssel müssen in gesamter Datenbank (nicht nur in Tabelle) eindeutig sein. Fremdschlüssel kann sich auf beliebigen Primärschlüssel beziehen 49

Primärschl rschlüssel ssel als key <xsd:element name="database"> <xsd:complextype> Definition der Tabellen </xsd:complextype> <xsd:key name="employeekey"> <xsd:selector xpath="employeetable/employeetuple"/> <xsd:field xpath="employeeno"/> </xsd:key> </xsd:element> name: eindeutiger Namen des Primärschlüssels xsd:selector: spezifiziert Kontext, auf die die Eindeutigkeitsbedingung angewandt wird. EmployeeNo innerhalb EmployeeTable eindeutig ein oder mehrere xsd:field-elemente: Elemente/Attribute, die zusammen eindeutig sind 50

Fremdschlüssel ssel als keyref <xsd:element name="database"> <xsd:complextype> Definition der Tabellen </xsd:complextype> <xsd:keyref name="cityidkeyref" refer="cityidkey"> <xsd:selector xpath="*/*"/> <xsd:field xpath="cityid"/> </xsd:keyref> </xsd:element> Wert von CityId immer definiert refer: Auf welchen Primärschlüssel wird verwiesen? xsd:selector: Wo ist der Fremdschlüssel zu finden? xsd:field: Aus welchen Feldern besteht der Fremdschlüssel? 51

Fazit: Relationales Modell XML einfach und ohne Informationsverlust möglich gilt auch für Primär- und Fremdschlüssel XML mindestens so ausdrucksstark wie relationales Modell XML-Dokument (Instanz) kodiert Datenbank XML-Schema kodiert Datenbankschema 52

Datenmodellierung mit XML 53

XML zur Datenmodellierung XML flexibler als relationales Model: Relationales Modell keine geschachtelten Tabellen N:M-Beziehungen müssen in eigenen Tabellen ausgelagert werden. XML erlaubt geschachtelte Strukturen N:M-Beziehungen können unkompliziert ausgedrückt werden. Warum also die Möglichkeiten von XML nicht voll ausnutzen? 54

Beispiel <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <City> <Name>New York City</Name> <CityId>NYC</CityId> </City> <Type>Sales Person</Type> <Orders> <Order> <OrderNo>121</OrderNo> <OrderItems> </OrderIntems> <CustomerNo>999</CustomerNo> </Order> </Orders> </Employee> Könnte so zwischen Vertriebsund Gehaltsabteilung ausgetauscht werden als Austauschformat OK auch als Speicherformat OK? 55

Löschanomalie <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <City> <Name>New York City</Name> <CityId>NYC</CityId> </City> <Type>Sales Person</Type> <Orders> <Order> <OrderNo>121</OrderNo> <OrderItems> </OrderIntems> <CustomerNo>999</CustomerNo> </Order> </Orders> </Employee> Wird ein Angestellten- Datensatz gelöscht, dann werden auch alle Aufträge gelöscht, die er vermittelt hat. Gefahr, ungewollt Informationen zu löschen Order-Informationen auslagern und durch Fremdschlüssel OrderNo ersetzen. 56

Verbesserte Modellierung <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <City> <Name>New York City</Name> <CityId>NYC</CityId> </City> <Type>Sales Person</Type> <Orders> <OrderNo>121</OrderNo> </Orders> </Employee> <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> </OrderItems> <CustomerNo>999</CustomerNo> </Order> </Order-DB> 57

Änderungsanomalie <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <City> <Name>New York City</Name> <CityId>NYC</CityId> </City> <Type>Sales Person</Type> <Orders> <OrderNo>121</OrderNo> </Orders> </Employee> Wird CityId oder Name geändert, dann muss diese Änderung in allen Angestellten-Datensätzen nachvollzogen werden. unnötiger Verwaltungsaufwand Gefahr von Inkonsistenzen City-Informationen auslagern und hier durch Fremdschlüssel ersetzen. 58

Verbesserte Modellierung <Employee-DB> <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <CityKey>C123</CityKey> <Type>Sales Person</Type> <Orders> <OrderNo>121</OrderNo> </Orders> </Employee> </Employee-DB> <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> </OrderItems> <CustomerNo>999</CustomerNo> </Order> </Order-DB> <City-DB> <City> <CityKey>C123</CityKey> <CityId>NYC</CityId> <Name>New York City</Name> </City> </City-DB> 59

Noch eine Änderungsanomalie <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> <OrderItem> <ItemNo>FX100</ItemNo> <ItemName>Black-Bag</ItemName> <Quantity>1000</Quantity> </OrderItem> </OrderItems> <CustomerNo>999</CustomerNo> </Order> </Order-DB> Wird ItemName geändert, dann muss diese Änderung in allen Order-Datensätzen nachvollzogen werden. Zuordnung ItemNo/ItemName auslagern und hier durch Fremdschlüssel ItemNo ersetzen. 60

Verbesserte Modellierung <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> <OrderItem> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItem> </OrderItems> <CustomerNo>999</CustomerNo> </Order> </Order-DB> <Inventory-DB> <Item> <ItemNo>FX100</ItemNo> <ItemName>Black-Bag</ItemName> </Item> </Inventory-DB> 61

Anfrageoptimierung <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> <OrderItem> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItem> </OrderItems> <CustomerNo>999</CustomerNo> </Order> </Order-DB> Wer ist Vermittler? Hier fehlt Verweis auf Vermittler (EmployeeNo). Vermittler normalerweise Ansprechpartner für Kundenauftrag Angestellten-Datenbank muss durchsucht werden, um Vermittler zu ermitteln. 62

Anfrageoptimierung <Order-DB> <Order> <OrderNo>121</OrderNo> <OrderItems> <OrderItem> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItem> </OrderItems> <CustomerNo>999</CustomerNo> <EmployeeNo>4</EmployeeNo> </Order> </Order> </Order-DB> </Order-DB> <Employee-DB> <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <CityKey>C123</CityKey> <Type>Sales Person</Type> <Orders> <OrderNo>121</OrderNo> </Orders> </Employee> </Employee-DB> statt Verweis Angestellter Auftrag Verweis Auftrag Vermittler 63

Endgültige Modellierung <Order> <OrderNo>121</OrderNo> <OrderItems> <OrderItem> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItem> </OrderItems> <CustomerNo>999</CustomerNo> <EmployeeNo>4</EmployeeNo> </Order> <Item> <ItemNo>FX100</ItemNo> <ItemName>Black-Bag</ItemName> </Item> <Employee> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <CityKey>C123</CityKey> <Type>Sales Person</Type> </Employee> <City> <CityKey>C123</CityKey> <CityId>NYC</CityId> <Name>New York City</Name> </City> 64

Vergleich mit relationalem Modell <OrderTuple> <OrderNo>121</OrderNo> <OrderItemTable> <OrderItemTuple> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItemTuple> </OrderItemTable> <CustomerNo>999</CustomerNo> <EmployeeNo>4</EmployeeNo> </OrderTuple> <ItemTuple> <ItemNo>FX100</ItemNo> <ItemName>Black-Bag</ItemName> </ItemTuple> <EmployeeTuple> <EmployeeNo>4</EmployeeNo> <Name> <First>Mark</First> <Last>Whitehorn</Last> </Name> <CityKey>NYC</CityKey> <Type>Sales Person</Type> </EmployeeTuple> <CityTuple> <CityKey>C123</CityKey> <CityId>NYC</CityId> <Name>New York City</Name> </CityTuple> 65

Vergleich mit relationalem Modell <OrderTuple> <OrderNo>121</OrderNo> <OrderItemTable> N:M <OrderItemTuple> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderItemTuple> </OrderItemTable> <CustomerNo>999</CustomerNo> <EmployeeNo>4</EmployeeNo> </OrderTuple> <ItemTuple> <ItemNo>FX100</ItemNo> <ItemName>Black- Bag</ItemName> </ItemTuple> <EmployeeTuple> <EmployeeNo>4</EmployeeNo> <FirstName>Mark</FirstName> <LastName>Whitehorn</LastName> <CityKey>C123</CityKey> <Type>Sales Person</Type> </EmployeeTuple> <CityTuple> <CityKey>C123</CityKey> <CityId>NYC</CityId> <Name>New York City</Name> </CityTuple> N:M-Beziehung zwischen OrderNo und ItemNo als Hierarchie 66

Relationale Modellierung <OrderSpecTuple> <OrderNo>121</OrderNo> <ItemNo>FX100</ItemNo> <Quantity>1000</Quantity> </OrderSpecTuple> <OrderTuple> <OrderNo>121</OrderNo> <CustomerNo>999</CustomerNo> <EmployeeNo>4</EmployeeNo> </OrderTuple> <ItemTuple> <ItemNo>FX100</ItemNo> <ItemName>Black-Bag</ItemName> </ItemTuple> <EmployeeTuple> <EmployeeNo>4</EmployeeNo > <First>Mark</First> <Last>Whitehorn</Last> <CityKey>C123</CityKey> <Type>Sales Person</Type> </EmployeeTuple> <CityTuple> <CityKey>C123</CityKey> <CityId>NYC</CityId> <Name>New York City</Name> </CityTuple> N:M-Beziehung als Relation OrderSpec mit zusammengesetztem Primärschlüssel 67

Fazit aus dem Beispiel Ausgangspunkt strukturiertes XML-Dokument als Speicherformat Transformationen Beseitigung von Lösch- und Änderungsanomalien Ergebnis mehrere, wesentlich flachere XML-Strukturen relationalem Modell (in 3. NF) sehr ähnlich Ausnahme: N:M-Beziehungen als geschachtelte Strukturen 68

Systematik der Datenmodellierung relationales Modell schrittweise Normalformbildung: Ergebnis formal definiert XML Normalformen aus relationalem Modell nicht auf XML übertragbar Grund: relationales Model erlaubt keine geschachtelten Tabellen bisher keine Systematik der Datenmodellierung informelles Verfahren: Asset-Oriented Modeling (Daum & Merten, System Architecture with XML, 2003). 69

Fazit aus heutiger Vorlesung Daten mit vielen funktionalen Abhängigkeiten bewährte Speicherformate wie relationale Datenbanken besser Tabellen als XML serialisieren Text-Dokumente mit nur wenigen funktionalen Abhängigkeiten XML auch als Speicherformat geeignet 70

Wie geht es weiter? heutige Vorlesung Daten vs. Dokumente Wie XML persistent speichern? Vergleich XML mit relationalem Modell www.rpbourret.com/xml/xmlanddatabases.htm Wie Daten mit XML modellieren? nächste Übung XML und Datenbanken Vorlesung nächste n Woche Web Services (insgesamt 4 Termine) 71

Anhang 72

1. Normalform (NF) Eine relationale Datenbank ist in 1. Normalform, falls alle Tabellen 1) einen Primärschlüssel haben und 2) nur primitive Daten enthalten. Entspricht der Definition des relationalen Modells 73

2. Normalform (NF) Eine relationale Datenbank ist in 2. Normalform, falls 1) sie in 1. Normalform ist, 2) alle Nicht-Schlüssel-Felder vom Primärschlüssel funktional abhängig sind und 3) kein Nicht-Schlüssel-Feld bereits von einem Teil des Primärschlüssels funktional abhängig ist. Orders OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity 121 3 4 1024 121 4 4 1024 Nut 3 Bolt nicht in 2. NF 122 3 9 176 Nut 9 67 74

3. Normalform (NF) Eine relationale Datenbank ist in 3. Normalform, falls 1) sie in 2. Normalform ist und 2) alle Nicht-Schlüssel-Felder direkt (d.h. nicht transitiv) vom Primärschlüssel funktional abhängig sind. Customers nicht in 3. NF CustomerNo FirstName LastName CityId City 1 Brian Thompson NYC New York City 2 Sally Henderson NYC New York City 75