• Keine Ergebnisse gefunden

Heutige Vorlesung Heutige Vorlesung

N/A
N/A
Protected

Academic year: 2022

Aktie "Heutige Vorlesung Heutige Vorlesung"

Copied!
75
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

XML und XML und

Datenbanken

Datenbanken

(2)

Heutige Vorlesung Heutige Vorlesung

letzte Woche letzte Woche

;; Warum XMLWarum XML--DokumenteDokumente transformieren?transformieren?

;; XML-XML-DokumenteDokumente mit XSLT transformierenmit XSLT transformieren

;; XSLXSL--FO zur Erzeugung von druckfäFO zur Erzeugung von druckfähigem Layouthigem Layout heutige Vorlesung

heutige Vorlesung

ƒ XML und Datenbanken

(3)

Ü Ü bersicht bersicht

ƒ Daten vs. Dokumente

ƒ Wie XML persistent speichern?

ƒƒ Vergleich XML mit relationalem ModellVergleich XML mit relationalem Modell

ƒ Exkurs: relationales Modell

- Darstellung von N:M-Beziehungen

- funktionale Abhängigkeiten, Normalformen

ƒ Wie Daten mit XML modellieren?

(4)

Daten & Dokumente

Daten & Dokumente

(5)

Daten vs. Dokumente Daten vs. Dokumente

ƒ Auswahl der Datenbank hängt von den zu speichernden

„Objekt“

ƒ Daten- vs. Dokumentspezifische Dokumente (datadata--centric vs. documentcentric document--centric documents)centric documents

(6)

Datenspezifische Dokumente Datenspezifische Dokumente

ƒƒ regulreguläärere Struktur (hoher Strukturierungsgrad)

ƒƒ feinkfeinköörnigernige Daten

ƒƒ wenigwenig bzw. keine gemischtekeine gemischte Inhalte

ƒ leichte Verarbeitung für MaschinenMaschinen

ƒ Beispiele: Kataloge, Verkaufsaufträge, Flugpläne, etc.

ÖÖtraditionelle Datenbanken (relationale, objekt-orientierte)traditionelle Datenbanken ÖÖXML-XML-fäfähigehige Datenbanken (XML-enabled databases)Datenbanken

(7)

Dokumentspezifische Dokumente Dokumentspezifische Dokumente

ƒ weniger reguläre Struktur /irregulirreguläärere Struktur

ƒƒ grobkgrobköörnigernige Daten

ƒƒ viele gemischteviele gemischte Inhalte

ƒ Dokument als Ganzes von Bedeutung

ƒ entwickelt für MenschenMenschen

ƒ Beispiele: Bücher, E-Mails, Werbung, etc.

ÖÖCMSCMS

ÖÖXML Datenbanken (nativ XML databases)XML Datenbanken

(8)

Wie XML

Wie XML persistent persistent speichern?

speichern?

(9)

2 1

2

3 1

3

1 1

1

AuthorKey BookKey

Key

Authorship

2 1

2

3 1

3

1 1

1

AuthorKey BookKey

Key

Authorship

XML vs. relationale Datenbanken XML vs. relationale Datenbanken

book

title

edition

2nd

authors

Beginning XML

book

title

edition

2nd

authors

Beginning XML

David Hunter Curt Cagle Chris Dix

author author author

David Hunter Curt Cagle Chris Dix

author author author

Hunter David

1

Dix Chris

3

Cagle Kurt

2

LastName FirstName

AuthorKey Author

Hunter David

1

Dix Chris

3

Cagle Kurt

2

LastName FirstName

AuthorKey Author

XMLXML

ƒ Hierarchie (Baum)

ƒ Kind-Elemente:

Reihenfolge relevant

relationale Datenbanken relationale Datenbanken

ƒ Tabellen mit Schlüssel

ƒ Spalten und Zeilen:

Reihenfolge egal

2nd Beginning XML 1

Edition Title

BookKey Book

2nd Beginning XML 1

Edition Title

BookKey Book

(10)

Wie XML

Wie XML persistent persistent speichern? speichern?

Anwendung

relationale Datenbank

Tabellen/SQL

Anwendung

XML- Datenbank

XML/XPath

Wrapper

relationale Datenbank

Tabellen/SQL Anwendung

XML

XML als

einfachen String speichern

XML als strukturiertes XML-Dokument

speichern

XML als Tabellen speichern

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

(11)

1. XML als String speichern 1. XML als String speichern

ƒ hierarchische XML-Struktur als Wert eines Feldes in einer Tabelle speichern

ƒ XML-Struktur als String serialisieren VorVor-- und Nachteileund Nachteile

+ vorhandenes relationales

Datenbanksystem (RDBMS) kann genutzt werden

+ triviale Schnittstelle zwischen XML und RDBMS

- keine komplexen Anfragen (z.B. mit XPath)

Anwendung

relationale Datenbank

Tabellen/SQL

(12)

2. XML in

2. XML in XML XML - - Datenbank Datenbank speichern speichern

ƒ Internes Model basiert auf XML

ƒ Übersicht XML-Datenbanken:

www.rpbourret.com/xml/XMLDatabaseProds.htm

Vorteile Vorteile

+ komplexe Anfragen auf XML-Struktur möglich

+ XPath wird unterstützt

+ Schnell bei einheitlichen Views

Anwendung

XML- Datenbank

XML/ XPath

(13)

2. XML in

2. XML in XML XML - - Datenbank Datenbank speichern speichern

Nachteile 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

(14)

3. XML als Tabellen speichern 3. XML als Tabellen speichern

ƒ Abbildung XML ÎTabellen möglich

ƒ Abbildung Tabellen Î XML problemlos

ƒ Anfragen: SQL mit XML-Funktionen (z.B.

SQL/XML)

VorVor-- und Nachteileund 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

Wrapper

relationale Datenbank

Tabellen/SQL

Anwendung

XML

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

NYC Henderson Sally 2

NYC Thompson Brian 1

CityId LastName FirstName CustomerNo Customers

(15)

Fazit: Wie XML speichern?

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 integrierengar nicht integrieren

2. XML-Datenbanken: voll integrierenvoll integrieren

3. XML als Tabellen speichern: soweit wie msoweit wie mööglich glich integrieren

integrieren

ƒ nur zu beantworten, wenn XML mit relationalem Datenmodell verglichen wird

(16)

Exkurs: Relationales Exkurs: Relationales

Modell

Modell

(17)

Relationales Modell Relationales Modell

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

ƒ 1970 von Codd eingeführt

ƒ Daten in TabellenTabellen organisiert

ƒ Tabelle repräsentiert n-stellige Beziehung (RelationRelation) zwischen primitivenprimitiven Daten.

Ö keine geschachtelten Tabellen

ƒ Tabelle besteht aus Spalten (FelderFelder) und Zeilen (TupelTupel).

ƒ Zeilen und Spalten ungeordnet

ƒ Tabellen haben eindeutige Namen.

(18)

Primä Prim ä r r - - und Fremdschlü und Fremdschl ü ssel ssel

ƒ mindestens eine Spalte einer Tabelle ist PrimäPrimärschlrschlüsselüssel:

eindeutiger Repräsentant einer bestimmten Zeile

ƒ bei mehreren Spalten: zusammengesetzter zusammengesetzter PrimPrimäärschlrschlüsselüssel

ƒƒ FremdschlFremdschlüüssel: referenziert Primärschlüssel anderer ssel Tabelle

FX200 1

5

FX100 1

121

ItemNo CustomerNo

OrderNo Orders

FX200 1

5

FX100 1

121

ItemNo CustomerNo

OrderNo Orders

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

(19)

Eindeutigkeit und Existenz Eindeutigkeit und Existenz

ƒƒ PrimäPrimärschlrschlüüsselssel

ƒ müssen für jede Zeile einen Wert haben.

ƒ müssen innerhalb der Tabelle eindeutig sein.

ƒ Für jeden FremdschlFremdschlüüssel muss ein zugehöriger ssel Primärschlüssel existieren.

FX200 1

5

FX100 1

121

ItemNo CustomerNo

OrderNo Orders

FX200 1

5

FX100 1

121

ItemNo CustomerNo

OrderNo Orders

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

(20)

Typen von Beziehungen Typen von Beziehungen

NYC Henderson Sally

2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

NYC Henderson Sally

2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

Tabellen (Relationen):

ƒ Beziehungen zwischen primitiven Daten

Wie werden 1:1-, 1:N- und N:M-Beziehungen im relationalem Modell ausgedrückt?

ƒ meist Objekte der realen Welt, wie z.B. Kunden oder Aufträge.

ƒ Zwischen zwei Objekten der realen Welt kann 1:1-, 1:1 1:N-1:N oder N:MN:M-Beziehung bestehen.

(21)

1:N 1:N -Beziehung - Beziehung

ƒ 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.

Auftrag

1 *

Kunde

(22)

1:N 1:N -Beziehung im relationalen Modell - Beziehung im relationalen Modell

Orders

OrderNo CustomerNo ItemNo

121 1 FX100

5 1 FX200

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

11

:: NN

Fremdschl

Fremdschlüsselüssel PrimäPrimärschlrschlüüsselssel

eindeutig

nicht eindeutig

(23)

1:1- 1:1 - Beziehung Beziehung

ƒ 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- Kunde

(ausführlich)

1 1

Kunde

(24)

1:1- 1:1 - Beziehung im relationalen Modell Beziehung im relationalen Modell

Customers (detailed)

CustomerNo LastName FirstName CityId CreditCard CreditCardNo

Amex 100900402344

100800402e33 Visa

NYC NYC

1 Brian Thompson

2 Sally Henderson

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

ƒ beide Schlüssel gleichzeitig Primär- und Fremdschlüssel

(25)

N:M- N:M - Beziehung Beziehung

ƒ Angestellter kann mehrere Kunden betreuen.

ƒ Umgekehrt kann Kunde gleichzeitig von mehreren Angestellten betreut werden.

Ö Zwischen Kunden und Angestellten besteht eine N:M- Beziehung.

Angestellter

* *

Kunde

(26)

N:M- N:M - Beziehung Beziehung im relationalen Modell im relationalen Modell

ƒ 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.

1 * * 1

Angestellter Kunde

(27)

N:M- N:M - Beziehung Beziehung im relationalen Modell im relationalen Modell

N:M-Relationship

Key CustomerNo EmployeeNo

121 1 4

5 1 5

NYC Henderson

Sally 2

NYC Thompson

Brian 1

CityId LastName

FirstName CustomerNo

Customers

Sales person Type

NYC CityId Whitehorn

Mark 4

LastName FirstName

EmployeeNo Employees

11

:: NN ::

11 NN

(28)

Alternative Darstellung Alternative Darstellung

N:M-Relationship

CustomerNo EmployeeNo

1 4

1 5

Customers

CustomerNo FirstName LastName CityId

1 Brian Thompson NYC

2 Sally Henderson NYC

Human Resources Sales person

Type NYC

NYC CityId Marklyn

Bill 5

Whitehorn Mark

4

LastName FirstName

EmployeeNo Employees

11

:: NN ::

11 NN

(29)

Normalformen Normalformen

ƒ Hilfsmittel zur Modellierung von Daten

ƒ für relationales Modell formal definiert ZielZiel

ƒ Eigenschaften (Felder) zu passenden Objekten (Tabellen) gruppieren

ƒ redundante Informationen eliminieren

ƒ sicherstellen, dass jede Information eindeutig identifiziert werden kann

Mittel Mittel

ƒ Verständnis der Bedeutung der Daten

ƒ Verständnis funktionaler Abhfunktionaler Abhäängigkeitenngigkeiten

(30)

Funktionale Abh

Funktionale Abh ä ä ngigkeiten ngigkeiten

ƒ Beispiel: Fläche = Höhe X Breite

ƒ Fläche funktional abhfunktional abhäängigngig 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

(31)

Beispiel Beispiel

Orders

OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity

Nut 3

67

122 3 9 176 Nut 9

Bolt

121 3 4 1024

121 4 4 1024

ƒ Annahme: jedem Auftrag genau ein Angestellter (Vermittler) zugeordnet

Ö EmployeeNo = f(OrderNo)

Ö EmployeeNo funktional abhfunktional abhäängigngig von OrderNo.

Wichtig: Funktionale Abhängigkeiten nicht an Daten

(32)

Weitere funktionale Abh

Weitere funktionale Abhä ä ngigkeiten ngigkeiten

Orders

OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity

Nut 3

67

122 3 9 176 Nut 9

Bolt

121 3 4 1024

121 4 4 1024

ƒ Quantity = f1(OrderNo, ItemNo)

ƒ ItemName = f2(ItemNo)

ƒ CustomerNo = f3(OrderNo)

(33)

Normalformen Normalformen

ƒ verschiedene Stufen, die aufeinander aufbauen:

1., 2., 3. Normalform (Ö Anhang) Grundidee

Grundidee

ƒ Unterscheidung funktionaler Abhängigkeiten in notwendige

notwendige und nicht erlaubtenicht erlaubte

ƒ Sei P der Primärschlüssel einer Tabelle.

ƒ Seien Fi ein beliebiges Nicht-Schlüssel-Feld der Tabelle.

notwendig:

notwendig:

ƒ Fi = f(P)

nicht erlaubt:

nicht erlaubt:

ƒ Fi = f(P'), P' echte Teilmenge von P

ƒ Fi = f(P), jedoch Fi = f(Fj), Fj = f(P) für ein weiteres Nicht-Schlüssel-Feld F

(34)

Beispiel Beispiel

notwendig notwendig

ƒ Fi = f(OrderNo,ItemNo), Fi = EmployeeNo,…,Quantity nicht erlaubt

nicht erlaubt

ƒ ItemName = f(ItemNo)

ƒ CustomerNo = f(OrderNo)

ƒ EmployeeNo = f(OrderNo)

Orders

OrderNo ItemNo EmployeeNo CustomerNo ItemName Quantity

Nut 3

67

122 3 9 176 Nut 9

Bolt

121 3 4 1024

121 4 4 1024

(35)

Weiteres Beispiel Weiteres Beispiel

notwendig notwendig

ƒ Fi = f(CustomerNo), Fi = FirstName,…,CityId, City nicht erlaubt

nicht erlaubt

ƒ City = f(CityId)

Customers

CustomerNo FirstName LastName CityId City

1 Brian Thompson NYC New York City

New York City

2 Sally Henderson NYC

(36)

Abbildung Abbildung

relationales Modell

relationales Modell Î Î

XML XML

(37)

Relationales Modell Î Î XML

Relationales Modell kann einfach und ohne Relationales Modell kann einfach und ohne

Informationsverlust in XML kodiert werden 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 XML mindestens so ausdrucksstark wie relationales

Modell Modell

(38)

Mapping-Verfahren

Geeignete Abbildungen und Transformationsmechanismen Geeignete Abbildungen und Transformationsmechanismen

zwischen beiden

zwischen beiden ””InformationstrInformationsträägerngern““ findenfinden

Mapping-Verfahren

ƒƒ TemplateTemplate--drivendriven Mapping: Datenbankinhalte Æ XML

ƒƒ ModelModel--drivendriven Mapping: Datenbank Æ XML &

XMLÆ Datenbank

(39)

Template-driven Mapping

ƒ keine fest definierte Abbildung

ƒ Verwendung von XML-Dokumenten, die als Templates dienen

ƒ Einbettung von Anweisungen (z.B.

SELECT- Statements)

<?xml version="1.0"?>

<FlightInfo>

<Intro>

the following flights have available seats:

</Intro>

<SelectStmt>

SELECT Airline, FltNumber, Depart, Arrive FROM Flights

</SelectStmt>

</FlightInfo>

(40)

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 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>

Ergebnis XML-Template mit

Select-Anweisung

(41)

Model-driven Mapping

ƒ Mapping: Datenbank Æ XML & XMLÆ Datenbank

ƒ festes Model

ƒƒ Table ModelTable Model

ƒ wenig flexibel aber intuitive Abbildung

ƒ nur für sehr flache XML-Dokumente

ƒ Einsatzbereich beschränkt auf relationale Strukturen

ƒƒ DataData SpecificSpecific ObjectObject ModelModel

ƒ Modellierung der Daten

ƒ Abbildung: Daten Ækorrespondierende Objekte Æ hierarchische Baumstruktur

(42)

Table Model

Vorteile Vorteile + einfach

+ leicht zu implementieren + schneller und effizienter

Datenaustausch

Nachteil Nachteil

- nicht anwendbar bei

komplexeren Datenmodellen und tiefer verschachtelten XML-Dokumenten

<database>

<table>

<row>

<column1>...</column1>

<column2>...</column2>

<column3>...</column3>

...

</row>

...

</table>

<table>

...

</table>

</database>

(43)

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>

Orders

SalesOrder

Line Product Customer

Daten-spezifischer Objektbaum

object SalesOrder {

soNumber = "12345";

customer = { custPtr};

line = { linePtr};

orderDate = "150999";

} object Line {

lineNumber = "1";

abgeleitete Objekte

(44)

Abbildung Abbildung

relationales Modell

relationales Modell Î Î XML XML

Type Model

Type Model

(45)

Kodierung einer RDB in XML 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>

ƒ Wurzel-Element = Name der

Datenbank

ƒ für jede Tabelle genau ein Kind- Element

ƒ darunter für jedes Tupel genau ein Kind-Element

ƒ darunter für jede Spalte ein Kind- Element

<database>

<table>

<row>

<column1>...</column1>

<column2>...</column2>

<column3>...</column3>

...

</row>

...

</table>

<table>

...

</table>

</database>

(46)

Kodierung von Null

Kodierung von Null Values 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>

ƒƒ LeerwerteLeerwerte (null null values

values): undefinierte Werte

ƒ Kodierung:

entsprechendes Element (= Feld) einfach weglassen

ƒ dadurch

Unterscheidung zu leerem Inhalt

(47)

Das zugeh

Das zugehö örige rige XML XML -Schema - Schema

xsd:all

xsd:all xsd:sequence

minOccurs="0"

(48)

Kodierung von Schl

Kodierung von Schlü ü ssel ssel

ƒ Primärschlüssel: Typ xsd:ID.

ƒ Fremdschlüssel: Typ xsd:IDREF.

Probleme dieser Kodierung 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.

(49)

Beispiel 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

(50)

Primä Prim ä rschl rschl ü ü ssel als ssel als key key

ƒƒ name: eindeutiger Namen des Primärschlüsselsname

ƒƒ xsd:selector: spezifiziert Kontext, auf die die xsd:selector Eindeutigkeitsbedingung angewandt wird.

ƒ ein oder mehrere xsd:field-Elemente: Elemente/Attribute, xsd:field die zusammen eindeutig sind

<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> Ö EmployeeNo innerhalb

EmployeeTable eindeutig

(51)

Fremdschl

Fremdschl ü ü ssel als ssel als keyref 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>

ƒƒ refer: Auf welchen Primärschlüssel wird verwiesen?refer

ƒƒ xsd:selector: Wo ist der Fremdschlüssel zu finden?xsd:selector

ƒƒ xsd:field: Aus welchen Feldern besteht der xsd:field

Ö Wert von CityId immer definiert

(52)

Fazit:

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

(53)

Datenmodellierung Datenmodellierung

mit XML

mit XML

(54)

XML zur Datenmodellierung XML zur Datenmodellierung

ƒ XML flexibler als relationales Model:

Relationales Modell Relationales Modell

ƒ keine geschachtelten Tabellen

ƒ N:M-Beziehungen müssen in eigenen Tabellen ausgelagert werden.

XMLXML

ƒ erlaubt geschachtelte Strukturen

ƒ N:M-Beziehungen können unkompliziert ausgedrückt werden.

Warum also die Möglichkeiten von XML nicht voll ausnutzen?

(55)

Beispiel 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 Vertriebs- und Gehaltsabteilung

ausgetauscht werden

ƒ als Austauschformat OK

ƒ auch als Speicherformat OK?

(56)

L L ö ö schanomalie 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.

(57)

Verbesserte Modellierung 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>

(58)

Ä Ä nderungsanomalie 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.

(59)

Verbesserte Modellierung 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>

<City-DB>

<City>

<CityKey>C123</CityKey>

<CityId>NYC</CityId>

<Name>New York City</Name>

</City>

</City-DB>

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>…</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

(60)

Noch eine

Noch eine Ä Ä nderungsanomalie 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.

(61)

Verbesserte Modellierung 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>

(62)

Anfrageoptimierung Anfrageoptimierung

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

ƒ Hier fehlt Verweis auf

Vermittler (EmployeeNo).

ƒ Vermittler normalerweise Ansprechpartner für

Kundenauftrag

Ö Angestellten-Datenbank muss durchsucht werden, um Vermittler zu ermitteln.

Wer ist Vermittler?

(63)

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

Anfrageoptimierung 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-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

(64)

Endg Endg ü ü ltige Modellierung ltige Modellierung

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</Order>

<Employee>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityKey>C123</CityKey>

<Type>Sales Person</Type>

</Employee>

<Item>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</Item>

<City>

<CityKey>C123</CityKey>

<CityId>NYC</CityId>

<Name>New York City</Name>

</City>

(65)

Vergleich mit relationalem Modell 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>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityKey>NYC</CityKey>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityKey>C123</CityKey>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

9 9

(66)

Vergleich mit relationalem Modell 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>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<FirstName>Mark</FirstName>

<LastName>Whitehorn</LastName>

<CityKey>C123</CityKey>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black- Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityKey>C123</CityKey>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

9

9 9

N:M

N:M-Beziehung zwischen OrderNo und ItemNo als

Hierarchie

(67)

Relationale Modellierung Relationale Modellierung

<OrderSpecTuple>

<OrderNo>121</OrderNo>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderSpecTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo

>

<First>Mark</First>

<Last>Whitehorn</Last>

<CityKey>C123</CityKey>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityKey>C123</CityKey>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple> 9

N:M-Beziehung als Relation OrderSpec mit

9

9 9

<OrderTuple>

<OrderNo>121</OrderNo>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple> 9

(68)

Fazit aus dem Beispiel Fazit aus dem Beispiel

Ausgangspunkt Ausgangspunkt

ƒ strukturiertes XML-Dokument als Speicherformat Transformationen

Transformationen

ƒ Beseitigung von Lösch- und Änderungsanomalien Ergebnis

Ergebnis

ƒ mehrere, wesentlich flachere XML-Strukturen

ƒ relationalem Modell (in 3. NF) sehr ähnlich

ƒ Ausnahme: N:M-Beziehungen als geschachtelte Strukturen

(69)

Systematik der Datenmodellierung Systematik der Datenmodellierung

relationales Modell relationales Modell

ƒ schrittweise Normalformbildung: Ergebnis formal definiert

XMLXML

ƒ Normalformen aus relationalem Modell nicht auf XML übertragbar

ƒ Grund: relationales Model erlaubt keine geschachtelten Tabellen

ƒ bisher keine Systematik der Datenmodellierungkeine Systematik der Datenmodellierung

ƒ informelles Verfahren:

Asset-Oriented Modeling (Daum & Merten, System

(70)

Fazit aus heutiger Vorlesung Fazit aus heutiger Vorlesung

Daten mit vielen funktionalen Abh

Daten mit vielen funktionalen Abhäängigkeitenngigkeiten

ƒ bewährte Speicherformate wie relationale Datenbanken besser

ƒ Tabellen als XML serialisieren

Text-Text-Dokumente mit nur wenigen funktionalen Dokumente mit nur wenigen funktionalen AbhAbhäängigkeitenngigkeiten

ƒ XML auch als Speicherformat geeignet

(71)

Wie geht es weiter?

Wie geht es weiter?

heutige Vorlesung heutige Vorlesung

; Daten vs. Dokumente

; Wie XML persistent speichern?

; Vergleich XML mit relationalem Modell

; Wie Daten mit XML modellieren?

nächste chste ÜÜbungbung

ƒ XML und Datenbanken Vorlesung n

Vorlesung näächste Woche chste Woche

ƒ Web Services (insgesamt 4 Termine)

www.rpbourret.com/xml/XMLAndDatabases.htm

(72)

Anhang

Anhang

(73)

1. Normalform (NF) 1. Normalform (NF)

ƒ Eine relationale Datenbank ist in 1. Normalform, falls 1. Normalform alle Tabellen

1) einen Primärschlüssel haben und 2) nur primitive Daten enthalten.

ƒ Entspricht der Definition des relationalen Modells

(74)

2. Normalform (NF) 2. Normalform (NF)

ƒ Eine relationale Datenbank ist in 2. Normalform, falls2. Normalform 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

Nut 3

67

122 3 9 176 Nut 9

Bolt

121 3 4 1024

121 4 4 1024

nicht in 2. NF nicht in 2. NF

(75)

3. Normalform (NF) 3. Normalform (NF)

Customers

CustomerNo FirstName LastName CityId City

1 Brian Thompson NYC New York City

New York City

2 Sally Henderson NYC

ƒ Eine relationale Datenbank ist in 3. Normalform, falls3. Normalform 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.

nicht in 3. NF

Referenzen

ÄHNLICHE DOKUMENTE

Je désire attirer l’attention de tous les intervenants dans la formation sur la sensibilité des personnes en formation qui nous sont confiées, afin de prévenir à temps

hoch Die Beeinträchtigung würde von einzelnen Betroffenen als nicht tolerabel eingeschätzt bzw. die maximal tolerierbare Ausfallzeit liegt zwischen einer und 24 Stunden. sehr hoch

Abgesehen vom Fall, dass Marscherleichterungen bloss vergessen werden oder der Führer durch eine Befehlsausgabe daran verhindert wird, sie zu geben, der vertretende Unterführer

Denn es wurde zwar der Beschluß gefaßt, daß die Subkommission A der Vorbereitungskonferenz mitteilen solle, daß sie sich wegen der ökonomischen Tragweite der Beschränkung

} deriving Show data RSSItem = RSSItem { itemTitle :: String , itemLink :: String , itemDescr :: String } deriving Show. Christoph L¨ uth: Praktische Informatik 3 29

Der Konstanzer Bachelor- und Master-Studiengang Literatur – Kunst – Medien er- freut sich mit rund 350 Studierenden 1 zunehmender Beliebtheit, die Bestände der Bibliothek

den, als in neuester Zeit vereinbart und später fast von allen civilisirten Staaten angenommen wurden, aber die früher bestehenden waren vorher nicht weniger positiv, als es die

Organische Stoffe aus anorganischen aufgebaut werden (Bsp. Fotosynthese der grünen Pflanzen, bestimmte Bakterienstämme).