• Keine Ergebnisse gefunden

ƒ Wie kann eine relationale Datenbank in XML repräsentiert werden?

N/A
N/A
Protected

Academic year: 2022

Aktie "ƒ Wie kann eine relationale Datenbank in XML repräsentiert werden?"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

© Klaus Schild 2003 1

XML und Datenbanken XML und Datenbanken

© Klaus Schild 2003 2

Lernziele Lernziele

ƒ Wie kann eine relationale Datenbank in XML repräsentiert werden?

ƒ Was sollte beachtet werden, wenn XML zur Datenspeicherung verwendet wird?

© Klaus Schild 2003 3

Relationales Relationales Datenmodell Datenmodell

© Klaus Schild 2003 4

Relationales Datenmodell Relationales Datenmodell

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName

CustomerNo Customers

ƒ 1970 von Codd eingeführt

ƒ Daten werden in Tabellen organisiert.

ƒ Tabelle repräsentiert n-stellige Beziehung (Relation) zwischen primitiven Daten.

ƒ Tabelle besteht aus Spalten (Felder) und Zeilen (Tupel).

ƒ Zeilen und Spalten sind ungeordnet.

Relationales Datenmodell Relationales Datenmodell

ƒ Tabellen haben einen eindeutigen Namen.

ƒ Spalten haben einen innerhalb der Tabelle eindeutigen Namen.

ƒ mindestens eine Spalte einer Tabelle als Primärschlüssel ausgezeichnet (bei mehreren Spalten:

zusammengesetzter Primärschlüssel)

ƒ Primärschlüssel innerhalb einer Tabelle eindeutig

ƒ Referenziert eine Tabelle Primärschlüssel einer anderen Tabelle, so spricht man von einem Fremdschlüssel.

Primär

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

FX200 1

5

FX100 1

121

ItemNo CustomerNo OrderNo

Orders

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName

CustomerNo Customers

ƒ Primärschlüssel müssen existieren und innerhalb der Tabelle eindeutig sein.

ƒ Für jeden Fremdschlüssel muss ein zugehöriger

Primärschlüssel existieren.

(2)

© Klaus Schild 2003 7

Typen von Beziehungen Typen von Beziehungen

ƒ Mit Tabellen (Relationen) lassen sich Beziehungen zwischen primitiven Daten ausdrücken.

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

ƒ Zwischen Objekte der realen Welt können

unterschiedliche Typen von Beziehungen bestehen, wie 1:N- oder N:M-Beziehungen.

Wie werden 1:N- und N:M- Beziehungen ausgedrückt?

Wie werden 1:N- und N:M- Beziehungen ausgedrückt?

© Klaus Schild 2003 8

1:N- 1:N -Beziehung Beziehung

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

Kunde 1 * Auftrag

© Klaus Schild 2003 9

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

FX200 1

5

FX100 1

121

ItemNo CustomerNo OrderNo

Orders

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName

CustomerNo Customers

1 1

: : N N

Fremdschlüssel Primärschlüssel

© Klaus Schild 2003 10

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 sollte eine 1:1- Beziehung bestehen.

Kunde Kunde

(ausführlich)

1 1

© Klaus Schild 2003 11

1:1

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

100800402e33 100900402344 CreditCardNo Visa

Amex CreditCard NYC

NYC CityId Henderson Sally

2

Thompson Brian

1

FirstName LastName CustomerNo Customers (details)

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName

CustomerNo Customers

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

© Klaus Schild 2003 12

N:M

N:M- -Beziehung Beziehung

ƒ Bestimmter Angestellter kann mehrere Kunden betreuen.

ƒ Umgekehrt kann ein Kunde gleichzeitig von mehreren Angestellten betreut werden.

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

Kunde * * Angestellter

(3)

© Klaus Schild 2003 13

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

ƒ im relationalen Datenmodell N:M-Bezeiehung nicht direkt darstellbar

ƒ muss in zwei 1:N-Beziehungen aufgebrochen werden

ƒ Dritte Tabelle enthält Fremdschlüssel von beiden Tabellen.

Kunde 1 * * 1 Angestellter

© Klaus Schild 2003 14

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

5 1

5

4 1

121

EmployeeNo CustomerNo

Key

N:M-Relationship

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName

CustomerNo Customers

Human Resources Sales person Type NYC NYC CityId Marklyn Bill

5

Whitehorn Mark

4

LastName FirstName

EmployeeNo Employees

© Klaus Schild 2003 15

Kodierung des Kodierung des relationalen Modells in relationalen Modells in

XML XML

© Klaus Schild 2003 16

Relationales Modell in XML Relationales Modell in XML

ƒ Relationales Datenmodell kann auf einfache Weise in XML kodiert werden.

ƒ Solche Kodierung könnte als Standardschnittelle für relationale Datenbanken dienen.

ƒ Hierfür gibt allerdings keinen etablierten Standard.

ƒ inoffizieller Vorschlag für eine Kodierung unter http://www.w3.org/XML/RDB.html

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

<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

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>

<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 (engl.

null values) sind undefinierte Werte.

ƒ Kodierung:

entsprechendes Element (Feld) einfach weglassen

ƒ dadurch

Unterscheidung

zu leerem Inhalt

(4)

© Klaus Schild 2003 19

Das zugehörige

Das zugehörige XML XML- -Schema Schema

xs:all

xs:all xs:sequence

minOccurs="0"

ƒ Reihenfolge der Tabellen, Tupel und Spalten egal

© Klaus Schild 2003 20

Kodierung von Schlüssel Kodierung von Schlüssel

ƒ Primärschlüssel haben Typ xs:ID.

ƒ Fremdschlüssel haben Typ xs:IDREF.

Probleme:

ƒ mit xs:ID keine zusammengesetzten Primärschlüssel darstellbar

ƒ Statt Eindeutigkeit innerhalb der Tabelle, erzwingt xs:ID Eindeutigkeit im gesamten Dokument.

ƒ Zwei Tabellen dürfen also niemals einen identischen Primärschlüssel haben.

ƒ Statt eines ganz bestimmten Primärschlüssels, referenziert xs:IDREF einen beliebigen Primärschlüssel mit Typ xs:ID.

© Klaus Schild 2003 21

Beispiel Beispiel

<Database>

<EmployeeTable>

<EmployeeTuple>

<EmployeeNo>ID4</EmployeeNo>

<FirstName>String</FirstName>

<LastName>String</LastName>

<CityId>ID5</CityId>

<Type>String</Type>

</EmployeeTuple>

</EmployeeTable>

<CustomerTable>

<CustomerTuple>

<EmployeeNo>ID5</EmployeeNo>

</CustomerTuple>

</CustomerTable>

</Database>

<Database>

<EmployeeTable>

<EmployeeTuple>

<EmployeeNo>ID4</EmployeeNo>

<FirstName>String</FirstName>

<LastName>String</LastName>

<CityId>ID5</CityId>

<Type>String</Type>

</EmployeeTuple>

</EmployeeTable>

<CustomerTable>

<CustomerTuple>

<EmployeeNo>ID5</EmployeeNo>

</CustomerTuple>

</CustomerTable>

</Database>

Primärschlüssel müssen im gesamten Dokument eindeutig sein.

Fremdschlüssel kann sich auf einen beliebigen Primärschlüssel beziehen.

© Klaus Schild 2003 22

Kodierung von Primärschlüssel mit Kodierung von Primärschlüssel mit key key

ƒ name gibt dem Primärschlüssel einen eindeutigen Namen.

ƒ xs:selector spezifiziert den Kontext, auf die das Schlüssel- Constraint angewandt werden soll.

ƒ Ein oder mehrere xs:field-Elemente geben die Elemente/Attribute an, die zusammen eindeutig sein sollen.

<xs:element name="Database">

<xs:complexType>

Definition der Tabellen

</xs:complexType>

<xs:key name="EmployeeKey">

<xs:selector xpath="EmployeeTable/EmployeeTuple"/>

<xs:field xpath="EmployeeNo"/>

</xs:key>

</xs:element>

<xs:element name="Database">

<xs:complexType>

Definition der Tabellen

</xs:complexType>

<xs:key name="EmployeeKey">

<xs:selector xpath="EmployeeTable/EmployeeTuple"/>

<xs:field xpath="EmployeeNo"/>

</xs:key>

</xs:element>

© Klaus Schild 2003 23

Kodierung von Fremdschlüssel mit Kodierung von Fremdschlüssel mit keyref keyref

<xs:element name="Database">

<xs:complexType>

Definition der Tabellen

</xs:complexType>

<xs:keyref name="CityIDKeyRef" refer="CityIDKey">

<xs:selector xpath="*/*"/>

<xs:field xpath="CityID"/>

</xs:keyref>

</xs:element>

<xs:element name="Database">

<xs:complexType>

Definition der Tabellen

</xs:complexType>

<xs:keyref name="CityIDKeyRef" refer="CityIDKey">

<xs:selector xpath="*/*"/>

<xs:field xpath="CityID"/>

</xs:keyref>

</xs:element>

ƒ name gibt dem Fremdschlüssel einen eindeutigen Namen.

ƒ refer gibt den referenzierten Primärschlüssel an.

ƒ Für die mit xs:selector und xs:field spezifizierten Elemente/Attribute (hier Tabelle/Tupel/CityID) muss Primärschlüssel mit passendem Typ existieren.*

*scheint mit xmlspy 5.2 nicht zu funktionieren

*scheint mit xmlspy 5.2 nicht zu funktionieren

© Klaus Schild 2003 24

Kodierung des relationalen Modells Kodierung des relationalen Modells

Fazit:

ƒ genaue Kodierung des relationalen Modells in XML möglich, einschl. Primär- und Fremdschlüssel

ƒ passende Anfrage-Sprache:

ƒ XQuery

ƒ Working Draft von 2003

ƒ http://www.w3.org/TR/xquery/

(5)

© Klaus Schild 2003 25

XML als XML als Speicherformat Speicherformat

© Klaus Schild 2003 26

XML zur Datenmodellierung XML zur Datenmodellierung

ƒ Relationales Modell kann einfach in XML kodiert werden.

ƒ Im Vergleich zum relationalen Model ist XML aber wesentlich flexibler:

ƒ Relationales Modell erlaubt in Tabellen nur primitive Daten, geschachtelte Tabellen sind nicht erlaubt.

ƒ XML erlaubt aber solche geschachtelten Strukturen.

Warum nicht die hierarchische Strukturierungsmöglichkeiten von

XML voll ausnutzen?

Warum nicht die hierarchische Strukturierungsmöglichkeiten von

XML voll ausnutzen?

© Klaus Schild 2003 27

XML zur Datenmodellierung XML zur Datenmodellierung

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

<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 beispielsweise zwischen Vertriebs- und Gehaltsabteilung ausgetauscht werden.

ƒ als Austauschformat OK

ƒ auch als Speicherformat OK?

© Klaus Schild 2003 28

<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>…</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Orders>

</Employee>

<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>…</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Orders>

</Employee>

Löschanomalie Löschanomalie

ƒ Wird ein Angestellter gelöscht, dann werden auch alle Aufträge gelöscht, die der Angestellte vermittelt hat.

ƒ Daher Order durch Fremdschlüssel OrderNo ersetzen (Referenz).

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>

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

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>…</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

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

<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 geändert, dann muss diese Änderung in allen Angestellten- Datensätzen nachvollzogen werden.

ƒ Daher City durch

Fremdschlüssel CityId

ersetzen (Referenz).

(6)

© Klaus Schild 2003 31

Verbesserte Modellierung Verbesserte Modellierung

<Employee-DB>

<Employee>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

<Orders>

<OrderNo>121</OrderNo>

</Orders>

</Employee>

</Employee-DB>

<Employee-DB>

<Employee>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

<Orders>

<OrderNo>121</OrderNo>

</Orders>

</Employee>

</Employee-DB>

<City-DB>

<City>

<CityId>NYC</CityId>

<Name>New York City</Name>

</City>

</City-DB>

<City-DB>

<City>

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

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>…</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

© Klaus Schild 2003 32

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

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

ƒ Deshalb Zuordnung ItemNo/ItemName gesondert abspeichern.

ƒ Statt ItemNo und ItemName nur Fremdschlüssel ItemNo verwenden.

© Klaus Schild 2003 33

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>

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

<Inventory-DB>

<Item>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</Item>

</Inventory-DB>

© Klaus Schild 2003 34

Anfrageoptimierung Anfrageoptimierung

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

<Order-DB>

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

</Order>

</Order-DB>

ƒ In Order fehlt der Verweis auf den Vermittler (EmployeeNo).

ƒ Vermittler aber normalerweise Ansprechpartner für Kundenauftrag

ƒ Ohne diesen Verweis muss die Angestellten-Datenbank durchsucht werden, um Vermittler eines Auftrages zu ermitteln.

Wer ist Vermittler?

© Klaus Schild 2003 35

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>

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

<CityId>NYC</CityId>

<Type>Sales Person</Type>

<Orders>

<OrderNo>121</OrderNo>

</Orders>

</Employee>

</Employee-DB>

<Employee-DB>

<Employee>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

<Orders>

<OrderNo>121</OrderNo>

</Orders>

</Employee>

</Employee-DB>

statt Verweis in Angestellter zu Auftrag:

Verweis in Auftrag zu Vermittler

© Klaus Schild 2003 36

Endgültige Modellierung Endgültige Modellierung

<Order>

<OrderNo>121</OrderNo>

<OrderItems>

<OrderItem>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItem>

</OrderItems>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</Order>

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

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</Employee>

<Employee>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</Employee>

<Item>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</Item>

<Item>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</Item>

<City>

<CityId>NYC</CityId>

<Name>New York City</Name>

</City>

<City>

<CityId>NYC</CityId>

<Name>New York City</Name>

</City>

(7)

© Klaus Schild 2003 37

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>

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

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

im relationalem Modell keine geschachtelten Strukturen 9

9

© Klaus Schild 2003 38

Relationale Modellierung Relationale Modellierung

<OrderTuple>

<OrderNo>121</OrderNo>

<OrderItemTable>

<OrderItemTuple>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItemTuple>

</OrderItemTable>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

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

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<FirstName>Mark</FirstName>

<LastName>Whitehorn</LastName>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

N:M-Beziehung zwischen Order und Item muss in eigener Relation kodiert

werden!

9

9 9

N:M

© Klaus Schild 2003 39

Relationale Modellierung Relationale Modellierung

<OrderSpecTuple>

<OrderNo>121</OrderNo>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderSpecTuple>

<OrderSpecTuple>

<OrderNo>121</OrderNo>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderSpecTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<First>Mark</First>

<Last>Whitehorn</Last>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<First>Mark</First>

<Last>Whitehorn</Last>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

N:M-Beziehung als Relation OrderSpec mit zusammengesetztem

Primärschlüssel 9 9

9 9

<OrderTuple>

<OrderNo>121</OrderNo>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

<OrderTuple>

<OrderNo>121</OrderNo>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

9

© Klaus Schild 2003 40

Datenmodellierung Datenmodellierung

Datenmodellierung Datenmodellierung

ƒ Problem: Welche Daten in welche Tabellen ablegen?

ƒ Anforderungen:

ƒ Daten einfach zu Warten

ƒ relevante Anfragen effizient zu beantworten

ƒ Faustregel: reale Objekte (wie Kunden und Aufträgen) in eigener Tabelle

ƒ Diese einfache Faustregel meist nicht hinreichend, um obigen Anforderungen zu genügen.

Normalformen Normalformen

ƒ Normalformen: formale Gütegrade eines relationalen Datenmodells

ƒ Ziele:

ƒ Eigenschaften zu passenden Objekten gruppieren

ƒ Redundante Informationen eliminieren

ƒ Sicherstellen, dass jede Information eindeutig identifiziert werden kann

ƒ Mittel:

ƒ Verständnis der Bedeutung der Daten

ƒ Verständnis der funktionalen Abhängigkeiten zwischen

Feldern

(8)

© Klaus Schild 2003 43

Funktionale Abhängigkeiten Funktionale Abhängigkeiten

ƒ Beispiel: Fläche = Höhe

X

Breite

ƒ Fläche funktional abhängig von der Höhe und Breite

ƒ D.h. die Höhe zusammen mit der Breite bestimmen eindeutig die Fläche.

ƒ Im relationalem Modell sind funktionale Abhängigkeiten zwischen Feldern relevant.

© Klaus Schild 2003 44

Beispiel Beispiel

9 Nut 176

9 3 122

67 3 Quantity Bolt

Nut ItemName 1024

4 4 121

1024 4

3 121

CustomerNo EmployeeNo

ItemNo OrderNo Orders

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

ƒ EmployeeNo funktional abhängig von OrderNo.

Funktionale Abhängigkeiten nicht an den Daten selbst zu erkennen, sondern daran, wie sie verwendet werden.

Funktionale Abhängigkeiten nicht an den Daten selbst zu erkennen, sondern daran, wie sie verwendet werden.

© Klaus Schild 2003 45

Beispiel Beispiel

9 Nut 176

9 3 122

67 3 Quantity Bolt

Nut ItemName 1024

4 4 121

1024 4

3 121

CustomerNo EmployeeNo

ItemNo OrderNo Orders

ƒ Quantity vom gesamten Primärschlüssel abhängig, andere Felder nur von Teilen des Primärschlüssels.

© Klaus Schild 2003 46

1. Normalform (NF) 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

© Klaus Schild 2003 47

2. Normalform (NF) 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.

9 Nut 176

9 3 122

67 3 Quantity Bolt

Nut ItemName 1024

4 4 121

1024 4

3 121

CustomerNo EmployeeNo

ItemNo OrderNo

Orders

nicht in 2. NF nicht in 2. NF

© Klaus Schild 2003 48

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

New York City New York City City

NYC Henderson Sally

2

NYC Thompson Brian

1

CityId LastName FirstName CustomerNo

Customers

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

nicht in 3. NF nicht in 3. NF

ƒ Durch Normalformbildung können unerwünschte

funktionale Abhängigkeiten eliminiert werden.

(9)

© Klaus Schild 2003 49

XML XML- -Modellierung Modellierung nicht in 1. NF nicht in 1. NF

<OrderTuple>

<OrderNo>121</OrderNo>

<OrderItemTable>

<OrderItemTuple>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderItemTuple>

</OrderItemTable>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

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

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<Name>

<First>Mark</First>

<Last>Whitehorn</Last>

</Name>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

9

9

© Klaus Schild 2003 50

Relationales Modell in 3. NF Relationales Modell in 3. NF

<OrderSpecTuple>

<OrderNo>121</OrderNo>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderSpecTuple>

<OrderSpecTuple>

<OrderNo>121</OrderNo>

<ItemNo>FX100</ItemNo>

<Quantity>1000</Quantity>

</OrderSpecTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<First>Mark</First>

<Last>Whitehorn</Last>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<EmployeeTuple>

<EmployeeNo>4</EmployeeNo>

<First>Mark</First>

<Last>Whitehorn</Last>

<CityId>NYC</CityId>

<Type>Sales Person</Type>

</EmployeeTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<ItemTuple>

<ItemNo>FX100</ItemNo>

<ItemName>Black-Bag</ItemName>

</ItemTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

<CityTuple>

<CityId>NYC</CityId>

<Name>New York City</Name>

</CityTuple>

9

9

9 9

<OrderTuple>

<OrderNo>121</OrderNo>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

<OrderTuple>

<OrderNo>121</OrderNo>

<CustomerNo>999</CustomerNo>

<EmployeeNo>4</EmployeeNo>

</OrderTuple>

9

© Klaus Schild 2003 51

Normalformbildung für XML Normalformbildung für XML

ƒ XML-Daten meist nicht in 1. NF

ƒ Normalformbildung aus dem relationalem Modell nicht auf XML übertragbar

ƒ Für XML bisher kein rigoroses Verfahren der Normalformbildung

ƒ wird XML als Speicherformat verwendet, müssen dennoch Lösch- und Änderungsanomalien vermieden werden

ƒ informelles Modellierungsverfahren für XML: Asset- Oriented Modeling (Daum & Merten, System Architecture with XML, 2003).

© Klaus Schild 2003 52

Fazit Fazit

ƒ unterschiedliche Anforderungen für Austausch- und Speicherformate:

ƒ Austauschformate: sollten kompakt und einfach zu parsen sein

ƒ Speicherformate: sollten Lösch- und

Änderungsanomalien vermeiden und wichtigsten Anfragen optimieren

ƒ Austausch- und Speicherformat deshalb häufig sehr unterschiedlich, auch wenn XML verwendet wird.

Fazit Fazit

ƒ Für Daten mit vielen funktionalen Abhängigkeiten besser gleich professionelle Speicherformate (wie relationale Datenbanken) wählen.

ƒ Für Text-Dokumente ohne funktionale Abhängigkeiten

kann XML als Speicherformat benutzt werden.

Referenzen

ÄHNLICHE DOKUMENTE

ƒ Grund: relationales Model erlaubt keine geschachtelten Tabellen. ƒ bisher keine Systematik der Datenmodellierung keine Systematik

XML persistent speichern: 3 Möglichkeiten Abbildung relationales Datenmodell XML Datenmodellierung mit

^nno 1573.^ Der „Führer" durch die „Gewerbe-Ausstellung, zu Riga 1883"^ bietet als Einleitung unter dem Titel: „Uebersicht der geschichtlichen Entwicklung des Gewerbewesens in

Die schweizweit erste definitive Bewilligung für die Weideschlachtung ist nun rechtskräftig. Damit gibt es ab jetzt eine Schlachtmethode für Rinder, die ohne langen Transport

Beim jahrelangen Tauziehen mit den Behörden wurde Müller von Eric Meili, Berater für Tierhaltung vom Forschungsinstitut für biologischen Landbau (FiBL),

N icht genug, dass wir mit Pe- ter Altmaier einen Wirt- schaftsminister haben, der erst als Universitätsmitarbeiter, dann als EU-Beamter und schließlich als Berufspolitiker

Geht es aber um Stoffe, die auch in anderen Bereichen eingesetzt werden, so sehen die Vorgaben vor, dass die Sicherheit eines Stoffes in einem Tierversuch überprüft werden

Daher können wir beratend tätig sein für Bund und Kantone – und setzen uns auch damit für gesunde Lebensmittel ein, für Ihre