Vom XML Schema zur relationalen Datenbank
Seminararbeit zum Multimedia-Seminar im SS 2002
Erstellt von: Thomas Dickel
Inhalt
• Was ist XML Schema?
• Warum XML Daten in eine rel. Datenbank?
• Datentypen von XML Schema– Vergleich zu SQL Datentypen
• Regeln der Konvertierung in eine DB
• Umsetzung
• Ausblick und Fazit
Was ist XML Schema?
• Schema-Definitionssprache– In XML definiert
– Löst DTD ab
– Microsoft übernimmt XSD anstelle XDR
• W3C Empfehlung seit Mai 2001
• Zweck: Definition und Beschreibung von XML-Dokumenten
• XML ist ein Standard in der Industrie
• Vorteil von XML Dokumenten:– Unabhängig von der eingesetzten
Plattform– Einfache Handhabung der Daten
• Nachteile bei XML Dokumenten:– Bedingt durch die Verschachtelung der
Elemente schlecht durchsuchbar
– noch schlechter bei mehreren XML Dokumenten gleichzeitig
Warum XML Daten in eine rel. DB bringen?
• XML als Datenformat in der Industrie erlaubt den Datenaustausch zwischen verschiedenen Unternehmen
• XML Schema unterstützt dies, indem es das Format definiert, aber die Freiheit der technischen Umsetzung lässt
Warum XML Daten in eine rel. DB bringen?
Datentypen von XML Schema
• Vorgänger DTD hatte keine richtigen Datentypen
• XML Schema erlaubt über 40 verschiedene Datentypen
• XML Schema ist auch im Hinblick auf die Integrationprimitiver SQL Datentypen entwickelt worden
• XML Schema unterstützt durch ein Typsystem den Import und Export von Daten in Datenbanken
Datentypen von XML Schema
Datentypen von XML Schema
XML Schema SQL
string normalizedString
nvarchar/ntext
boolean bit true/false zu 1/0 konvertieren
dateTime time date dateTime Zeitangabe im ISO Format
float float(24)/real INF u. NAN n. unterstützt
double float(53)/double INF u. NAN n. unterstützt
decimal float
integer decimal
Byte Smallint
UnsignedByte Tinyint
Regeln•XML Schema<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:msch="urn:schemas-microsoft-com:mapping-schema"><xsd:element name="daBuch" msch:relation="daBuch"
type="daBuch_type"/> <xsd:complexType name="daBuch_type"> <xsd:attribute name="intBuchID" type="xsd:int"/> <xsd:attribute name="strTitel" type="xsd:string"/> <xsd:attribute name="intAutorID" type="xsd:int"/> <xsd:attribute name="strISBN" type="xsd:string"/> <xsd:attribute name="intVerlagID" type="xsd:int"/> <xsd:attribute name="smnPreis" type="xsd:decimal"/> <xsd:attribute name="dtmErscheinungsdatum"
type="xsd:dateTime"/> </xsd:complexType></xsd:schema>
Regeln•XDR (XML Data Reduced)<Schema name="Schema1"
xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"><ElementType name="daBuch" content="empty"
model="closed"><AttributeType name="intBuchID" dt:type="i4"/><AttributeType name="strTitel" dt:type="string"/>...<AttributeType name="dtmErscheinungsdatum"
dt:type="dateTime"/><attribute type="intBuchID"/><attribute type="strTitel"/>...<attribute type=
"dtmErscheinungsdatum"/></ElementType>
</Schema>
Regeln
Bei jedem Hinzufügen einer Tabelle:
• Primärschlüssel anlegen
• Schlüssel muß autoinkrementierend sein
• Schlüssel mit ID am Ende kennzeichen• intBuchID
• Jedes Attribut mit Abkürzung des Datentyps • strTitel
Regeln
Grundlegende Tabellenerzeugung
Für jedes Element
• Erzeuge Tabelle
• Element hat nur genau ein Elternelement => neue Tabelle über Fremdschlüssel mit Elterntabelle verknüpfen
<Verlag strName="Wrox Press" ...> <Buch strTitel="Professional XML".../></Verlag>
Regeln• Element kann mehrere Elternelement haben und kommt jeweils nur einmal vor=>Hinzufügen eines Fremdschlüssels auf die neue Tabelle zu den Elterntabellen
Regeln
...<Buch strTitel="Professional XML Databases">
<Verlag strName="Wrox Press"/></Buch><Zeitschrift strTitel="dotnetpro">
<Verlag strName="redtec Publishing"/></Zeitschrift>...
Regeln
...<Buch strTitel="Professional XML Databases"> <Schlagwort strSchlagwort="XML"/> <Schlagwort strSchlagwort="Database"/> <Schlagwort strSchlagwort="SQL"/></Buch>...
Kommt das Element bei mehreren Elternelementen mehrmals vor => mittels einer zusätzlichen Tabelle abbilden
Regeln• Nur-Text Elemente, einmal vorkommend
...<Buch> <strTitel>Professional XML Databases</strTitel> <strVerlag>Wrox Press</strVerlag> ...</Buch>...
Einfügen einer Spalte zur Tabelle des Elternelements
Regeln• mehrfach vorkommende Nur-Text Elemente...<Buch strTitel="Professional XML Databases"> <strSchlagwort>XML</strSchlagwort> <strSchlagwort>Database</strSchlagwort> <strSchlagwort>SQL</strSchlagwort>...</Buch>...
=>Anlegen einer Tabelle für die Elemente mit Fremdschlüssel auf das Elternelement
Regeln• einige weitere Regeln sind zur vollständigen Umsetzung erforderlich
• Prüfen auf Namenskollisionen wichtig
• für das Umsetzen einer DTD in eine relationale Datenbank sind 18 Regeln erforderlich
Umsetzung
• Manuelle Umsetzung – Anhand der angegebenen Regeln
Umsetzung vom Schema zu einem Datenbankmodell
– Anlegen der Datenbanktabellen– Kopieren der XML-Daten über DOM oder
SAX Schnittstellen
• Vorteil– Flexibel anpassbar auf die gewünschten
Daten
• Nachteil: – Zeitaufwendig– wenig Performancegewinn– Viel Kodierung und Handarbeit
erforderlich
Umsetzung
• SQL Server 2000: Bulkloading XML Data– Teil von SQLXML 3.0– SQLXMLBULKLOAD Objekt– Wahlweise XDR Schema, XSD Schema oder
selbständige Generierung
Visual Basic code
Dim objBL As New SQLXMLBulkLoadobjBL.ConnectionString = "provider=sqloledb.1;data source=PC1;
database=Books;"objBL.XMLFragment = TrueobjBL.ErrorLogFile = "c:\Books\Books.log"objBL.Execute "C:\Books\Books.xsd", "C:\Books\Books.xml"
Umsetzung
• SQL Server 2000: Bulkloading XML Data
...<xsd:annotation>
<xsd:appinfo> <sql:relationship name= "VerlagBuch " parent= "daVerlag" parent-key= "intVerlagID" child= "daBuch" child-key= "intBuchID" />
</xsd:appinfo></xsd:annotation> ...
Umsetzung
• SQL Server 2000: Bulkloading XML Data
XSD Annotations (Auswahl)
sql:relation => Element ist Tabelle
sql:field => Element ist Spalte
sql:is-constant => Element ist nicht verknüpft, erscheint aber im XML (z.B. für Root Element)
sql:mapped => Nichtverknüpfte Elemente tauchen nicht mehr auf
sql:relationship (parent, child, parent-key, child-key) Verknüpfung zwischen XML Elementen
Umsetzung
• SQL Server 2000: Bulkloading XML Data
Vorteil:– Wenig Codierungsaufwand nötig
• VB-Code, XDR bzw. XML Schema optional
– Flexibel anpassbar durch Anpassung des XML Schemas
– Performant beim Einlesen der Daten
Umsetzung
• Microsoft XMLViewMapper 1.0
Umsetzung• Microsoft XMLViewMapper 1.0
– Arbeitet mit SQL Server 2000 zusammen
– Setzt XDR Schema in SQL Schema um
– Ähnlich dem Biztalk Mapper aus dem Microsoft BizTalk Server
– Sinn: XDR Schema bleibt gleich , die Datenbank-implementation ist aber davon unabhängig
Fazit und Ausblick
• Fazit
• Zukunft: • XML Schema 1.1
• Microsoft SQLXML
• native XML Datenbanken
Vielen Dank für Ihre Aufmerksamkeit
Top Related