SQL/XML Aktueller Stand der Standardisierung



Ähnliche Dokumente
SQL (Structured Query Language) Schemata Datentypen

XML Schema vs. Relax NG

Informatik 12 Datenbanken SQL-Einführung

Kapitel 7 SQL/XML. Teil des SQL-Standards Standards SQL:2003. Part-Standard. ISO/IEC 9075-n:2003. Multi-Part

IV. Datenbankmanagement

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Klausur Interoperabilität

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

SQL. Fortgeschrittene Konzepte Auszug

Kapitel 6: SQL und XML

Beispiel 1: Filmdatenbank

Sructred Query Language

SQL und MySQL. Kristian Köhntopp

Kapitel 7 SQL/XML. Teil des zukünftigen Datenbankstandards SQL:2003. Der Basisdatentyp XML Abbildung zwischen SQL und XML SQL und XQuery

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

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

Allgemeines. veröffentlicht unter lizensiert unter. Creative Commons BY-SA 3.0. XQuery in MS SQL Server 2005

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

SQL: statische Integrität

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Oracle: Abstrakte Datentypen:

Objektrelationale Datenbanken

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Anleitung über den Umgang mit Schildern

Business Intelligence Praktikum 1

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

VVA Webservice Online Lieferbarkeits-Abfrage

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Objektorientierte Programmierung

Arbeiten mit einem lokalen PostgreSQL-Server

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Fachhochschule Deggendorf Platzziffer:...

Business Intelligence Praktikum 1

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

3. Das Relationale Datenmodell

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

SDK zur CRM-Word-Schnittstelle

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Was ist Sozial-Raum-Orientierung?

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Datenbanken für Online Untersuchungen

Integration verteilter Datenquellen in GIS-Datenbanken

EXASOL Anwendertreffen 2012

Grundbegriffe der Informatik

Programmierkurs Java

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Leichte-Sprache-Bilder

Hilfe zur Urlaubsplanung und Zeiterfassung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

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

Schlüssel bei temporalen Daten im relationalen Modell

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Kleines Handbuch zur Fotogalerie der Pixel AG

Auswahlabfragen mit ACCESS

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

Umstieg auf Microsoft Exchange in der Fakultät 02

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup eingeschlossen:

Alle gehören dazu. Vorwort

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Datenbanken. Ein DBS besteht aus zwei Teilen:

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

SharePoint Demonstration

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

DB2 Codepage Umstellung

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Bibliografische Informationen digitalisiert durch

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

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datenmanagement in Android-Apps. 16. Mai 2013

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Verteilte Systeme: Übung 4

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

7. Übung - Datenbanken

XML-Namensräume. Marc Monecke

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Shopware 4.1 Kategorien

Klaus Schild, XML Clearinghouse Namensräume

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Vorlesung Dokumentation und Datenbanken Klausur

Relationale Datenbanken in der Praxis

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Einführung in die Programmierung

Grundbegriffe der Informatik

Statuten in leichter Sprache

Transkript:

SQL/XML Aktueller Stand der Standardisierung Rüdiger Eisele IBCPartner GmbH Stuntzstraße 65 81677 München Tel: 089/92401181 Fax: 089/92401182 Internet: EISELE@SOFTEISCONS.DE EISELE@IBCPARTNER.DE Rüdiger Eisele IBCPartner GmbH München Seite 1

Vorbemerkung: Der Vortrag beschäftigt nur mit ISO:9075-200x-14 SQL/XML. Nicht mit den bereits am Markt vorhandenen Produkten. Guter Artikel zu diesem Thema: XML in relationalen Datenbanken Jost Enderle Universität Ulm Informatik Spektrum Band 24 Heft 6 Dezember 2001 Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 2

Themen Themen Status von SQL-* Wie kommt es zu SQL und XML Stand der Standardisierung von SQL/XML Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 3

Aktueller Status von SQL SQL99» Foundations» Einige Packages SQL/PSM SQL/CLI SQL/MED SQL2002» Im Laufe des Jahres 2002 Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 4

Aktueller Status von SQL SQL/MED SQL/OLB SQL/XML SQL/CLI SQL/PSM SQL/Foundations SQL/Framework SQL/Schemata SQL/JRT SQL/Schemata Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 5

Kleiner Ausflug in die Geschichte SQL ist» der internationale Standard in der relationalen Datenbankwelt» eine Datenbanksprache» Herstellerunabhänig» gibt es seit 1987» wurde und wird von ISO/SC32WG3 entwickelt» wurde auch beeinflußt von der SQL-ACCESS-Group» wurde bis einschl. SQL92 von NIST zertifiziert Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 6

Kleiner Ausflug in die Geschichte XML ist» eine Präsentationssprache» eine Sprache zur Speicherung von Daten» ist eine Weiterentwicklung von SGML und HTML» soll die Präsentationssprache im Web werden.» herstellerunabhänig» ist noch kein ISO-Standard» wird von von W3C entwickelt» keine Zertifizierung Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 7

Kleiner Ausflug in die Geschichte Technischer Aspekt SQL» ist ausgereift» Der Standard ist wesentlich weiter als die Implementierungen» viele Produkte sind am Markt vorhanden» sehr viele Applikationen» nur eine Datenbanksprache und damit nur Datenverwaltung, keine Datenpräsentation Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 8

Kleiner Ausflug in die Geschichte Technischer Aspekt XML» ist neu» wenig Implementierungen» wenige Applikationen» keine Business kritischen Applikationen» hauptsächlich Präsentation von Daten Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 9

Kleiner Ausflug in die Geschichte Marketing Aspekt SQL ist alt SQL sieht man nicht XML ist das WEB XML ist neu (hype) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 10

W3C Es gibt W3C mit all seinen Initiativen XQuery, XPath, XMLSchema, XForms,... Konkurrenzveranstaltung zu SQL, die aber noch nicht soweit ist wie SQL. z.b. ist man bei XQuery gerade dabei die Sprachelemente zu definieren. Eine Arbeit, die bei SQL schon Mitte der 1980er Jahre getan wurde, wobei das Ergebnis das gleiche ist. Es gibt Datentypen, Operatoren auf den Datentypen, etc. (Déja vû) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 11

W3C W3C XML Query WG - Goals The goal of the XML Query WG is to produce a data model for XML documents, a set of query operators on that data model, and a query language based on these query operators Auszug aus einem Vortrag dem Querying XML Documents vom Cotton/Robie, gehalten auf der Unicode Conference im Januar 2002 Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 12

SQL und XML: ein paar Hintergründe Es gab zwei Ansätze SQL und XML zu verheiraten, beide kamen von Herstellern von Datenbankmanagementsystemen. Ansatz 1. SQL wird von XML langfristig abgelöst Ansatz 2. SQL bietet eine Schnittstelle zu XML an. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 13

SQL und XML: ein paar Hintergründe Ansatz 1: Behauptungen:» SQL Datenmodell und XML-Datenmodell sind nahezu identisch.» Nur durch eine geringfügige Änderung in SQL kann man die beiden Datenmodelle identisch machen. Annahme:» XML wird SQL ersetzen! Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 14

SQL und XML: ein paar Hintergründe Ansatz 2: Vorraussetzungen:» SQL bleibt was es ist, eine Datenbanksprache.» SQL wird weiterhin seine Pflicht erfüllen.» Die Mehrheit der Daten sind und werden weiterhin in einer SQL-Datenbank gespeichert werden.» XML wird die Schnittstelle zwischen dem Benutzer und SQL herstellen.» XML wird es ermöglichen, Daten zwischen den verschiedenen Datenhaltungssystemen auszutauschen. (EXPORT/IMPORT) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 15

SQL und XML: ein paar Hintergründe Zusammenfassung der beiden Ansätze Ansatz 1 will eine neue Sprache.» Dieser Ansatz geht ein bißchen in die Richtung, die auch W3C verfolgt. Ansatz 2 will eine Erweiterung von SQL, eine Schnittstelle zu SQL.» Dieser Ansatz verfolgt weiter die von ISO eingeschlagene Richtung der Packages. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 16

SQL und XML: ein paar Hintergründe Fehler im Ansatz 1 Die beiden Datenmodelle sind nicht gleich.» XML liegt ein hierarchisches Datenmodell zu Grunde» SQL dagegen besitzt ein relationales Datenmodell. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 17

SQL und XML: ein paar Hintergründe In einem relationalen Modell kann man 1:1, 1:m und m:n Beziehungen herstellen. In einem hierarchischen Modell kann man keine m:n Beziehungen herstellen. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 18

SQL und XML: ein paar Hintergründe Änderung in SQL TABLE EXPRESSION <table expression> ::= <from clause> <for clause> [ <where clause> ] [ <group by clause> ] [ <having clause> ] <for clause> ::= FOR <iterator list> Diese stellt einen eklatenten Bruch in SQL dar! Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 19

SQL und XML: ein paar Hintergründe <iterator list> ::=<iterator> ::= <correlation name> IN <table or query name> <correlation name> IN <derived table> <correlation name> IN <lateral derived table> <correlation name> IN <collection derived table> <correlation name> IN <only spec> <left paren> <joined table> <right paren> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 20

Was hat ISO gemacht? Hat sich mit den Vorschlägen intensiv beschäftigt und hat beschlossen ein Package für XML zu standardisieren. SQL/XML ISO:9075-14 Status im Februar 2002:» ISO FCD-Ballot Ballotperiode dauert 4 Monate d.h. SQL/XML wird voraussichtlich in 2003 ein internationaler Standard sein. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 21

Was beinhaltet der Standard? Präsentation von XML in SQL und umgekehrt Abbilden von XML Schemata in SQL Schemata Repräsentation von SQL Schemata in XML Repräsentation von SQL Aktionen in XML SQL-freundliche Syntax zur Abfrage XML- Dokumenten Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 22

Augenblicklicher Inhalt von SQL/XML Mapping:» SQL Zeichensatz in XML Zeichensatz» SQL <identifiers> in XML Names» SQL Datentypen in XML Schema Daten Typen» SQL Datenwerte in XML Datenwerte» SQL Tabelle in XML Dokument und XML Schema Dokument» SQL Schema in XML Dokument und XML Schema Dokument» SQL Katalog in XML Dokument und XML Schema Dokument Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 23

Augenblicklicher Inhalt von SQL/XML... Mapping:» XML Unicode in SQL Zeichensatz» XML Namen in SQL <identifiers> Eigener Datentyp XML Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 24

Der SQL/XML referiert verschiedene Namespaces, die entweder von W3C oder vom SQL-Standard definiert wurden; die Namespaces werden über sog. Namespacevariablen angesprochen. Namespacevariable xsd: xsi: sqlxml: Namespace URI http://www.w3.org/2001/xmlschema http://www.w3.org/2001/xmlschema-instance http://www.iso-standards.org/mra/9075/2001/12/sqlxml Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 25

Mapping SQL nach XML SQL Character Set nach XML Character Set SQL <identifiers>s nach XML Names SQL datatypes nach XML Schema data types» vordefinierte und benutzerdefinierte SQL data values nach XML data values SQL table nach einem XML Document und einem XML Schema Document SQL schema nach einem XML Schema document SQL catalog nach einem XML Schema document Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 26

Mapping SQL Character Set nach XML Character Set Für jeden SQL Character Set eines SQL-Environments muß eine Abbildung (Mapping) definiert sein, die den SQL Character Set in Unicode Zeichenketten überführt. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 27

Mapping SQL <identifiers>s nach XML Names Regular Identifier stellen kein Problem dar» employee ==> EMPLOYEE Delimited Identifier machen die Sache etwas komplizierter.» Employee ==> Employee» Name&/Employee ==>?? Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 28

Mapping SQL <identifiers>s nach XML Names Lösung: Umsetzung der nicht darstellbaren Zeichen im Unicode unter Benutzung sog. escape Notation» / ==> _x002f_ (Unicode Wert)» Name&/Employee ==> Name_x0020 x002f_employee Das Ganze ist reversibel, d.h. die Unicodewerte können in gültige SQL - Zeichen übersetzt werden. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 29

Mapping SQL datatypes nach XML Schema data types Jeder vordefinierte SQL Typ wird in einen XML Schema built-in Typ umgesetzt, der dem SQL Typ am nächsten kommt. Mit Hilfe der XML facets werden die Restriktionen der SQL Typen realisiert. Restriktionen: Precision, scale, Character Varying Es gibt in XML keine Unterscheidung zwischen CHARACTERVARYING und CHARACTER LARGE OBJECT; diese Unterschiede werden in XML durch Annotations realisiert. Die Annotations werden im Standard definiert. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 30

Mapping SQL Datatypes auf XML Schema Type Character String Types SQL: CHAR(10) CHARACTER SET LATIN1 COLLATION DEUTSCH <xsd:simpletype> <xsd: restrictiction base= xsd:string > <xsd:length value= 10 /> <xsd:anotation> <sqlxml:sqltype name= CHAR length= 10 charcatersetname= LATIN1 collation= DEUTSCH /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 31

Mapping SQL Datatypes auf XML Schema Type Binary String Types SQL: BLOB(1000) <xsd:simpletype> <xsd: restrictiction base= sqlxml:binaryhex > <xsd:maxlength value= 2000 /> <xsd:anotation> <sqlxml:sqltype name= BLOB maxlength= 1000 /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 32

Mapping SQL Datatypes auf XML Schema Type NUMERIC und DECIMAL SQL: DECIMAL(8,2) wobei die Implementierung 9 benutzt <xsd:simpletype> <xsd: restrictiction base= xsd:decimal > <xsd:precision value= 9 /> <xsd:scale value= 2 /> <xsd:annotation> <sqlxml:sqltype name= DECIMAL userprecision= 8 scale= 2 /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 33

Mapping SQL Datatypes auf XML Schema Type INTEGER und SMALLINT SQL: SMALLINT <xsd:simpletype> <xsd: restrictiction base= xsd:integer > <xsd:maxinclusive value= 32767 /> <xsd:mininclusive value= -32768 /> <xsd:annotation> <sqlxml:sqltype name= SMALLINT </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 34

Mapping SQL Datatypes auf XML Schema Type FLOAT(p), REAL, DOUBLE PRECISION SQL: REAL <xsd:simpletype> <xsd: restrictiction base= xsd:float > <xsd:annotation> <sqlxml:sqltype name= REAL precision= 24 minexponent= -149 maxexponent= 104 /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 35

Mapping SQL Datatypes auf XML Schema Type BOOLEAN SQL: BOOLEAN <xsd:simpletype> <xsd: restrictiction base= xsd:boolean /> <xsd:annotation> <sqlxml:sqltype name= BOOLEAN /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 36

Mapping SQL Datatypes auf XML Schema Type DATE SQL: BOOLEAN <xsd:simpletype> <xsd: restrictiction base= xsd:date /> <xsd:pattern value = \p{nd}{4}-{nd}{2}-\p{nd}{2} \> <xsd:annotation> <sqlxml:sqltype name= DATE /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 37

Mapping SQL Datatypes auf XML Schema Type TIME und TIME WITH TIME ZONE SQL: TIME(2) <xsd:simpletype> <xsd: restrictiction base= xsd:time > <xsd:pattern value = \p{nd}{2}:p{nd}{2}:\p{nd}{2}.\p{nd}{2} /> <xsd:annotation> <sqlxml:sqltype name= TIME scale= 2 /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 38

Mapping SQL Datatypes auf XML Schema Type INTRVAL YEAR(4) TO MONTH <xsd:simpletype> <xsd: restrictiction base= xsd:timeduration > <xsd:pattern value = -?p{nd}{1,4}y\p{nd}{2}m /> <xsd:annotation> <sqlxml:sqltype name= INTERVAL YEAR TO MONTH leadingprecision= 4 /> </xsd:annotation> </xsd:restriction> </xsd>:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 39

Mapping SQL Datatypes auf XML Schema Type Benutzerdefnierte Datentypen CREATE DOMAIN Dumb.Dee.Dumdum AS VARCHAR(1) DEFAULT ' ' CONSTRAINT Dumb.Dee.DumdumConstraint INITIALLY IMMEDIATE NOT DEFERABLE CHECK (CHAR_LENGTH(VALUE) < 1) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 40

Wird abgebildet in die XML type Deklaration <xsd:simpletype name="domain.dumb.dee.dumdum"> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='domain' catalogname='dumb' schemaname='dee' typename='dumdum' mappedtype='varchar_1'> </sqlxml:sqltype> </xsd:appinfo> </xsd:annotation> <xsd:restriction base='varchar_1'/> </xsd:simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 41

ROW (Name VARCHAR(50), Birthdate DATE) <xsd:complextype name='row.idi'> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='row'> <sqlxml:field name='name' mappedtype='varchar_50'/> <sqlxml:field name='birthdate' mappedtype='date'/> </sqlxml:sqltype> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element name='name' nillable='true' type='varchar_50'/> <xsd:element name='birthdate' nillable='true' type='date'/> </xsd:sequence> </xsd:complextype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 42

CREATE TYPE Most.Unlikely.Possibility AS NUMERIC(1) <xsd:simpletype name='udt.most.unlikely.possibility'> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='distinct' catalogname='most' schemaname='unlikely' typename='possibility' mappedtype='numeric_1_0' final='true'/> </xsd:appinfo> </xsd:annotation> <xsd:restriction base='numeric_1_0'/> </simpletype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 43

VARCHAR(20) ARRAY[10] <xsd:complextype name='array_10.varchar_20'> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='array' maxelements='10' mappedelementtype='varchar_20'/> </xsd:appinfo> </xsd:annotation> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 44

<xsd:sequence> <xsd:element name='element' minoccurs='0' maxoccurs='10' nillable='true' type='varchar_20'/> </xsd:element> </xsd:sequence> </xsd:complextype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 45

VARCHAR(20) MULTISET <xsd:complextype name='multiset.varchar_20'> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='multiset' mappedelementtype='varchar_20'/> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element name='element' minoccurs='0' maxoccurs='unbounded' nillable='true' type='varchar_20'/> </xsd:sequence> </xsd:complextype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 46

Mapping SQL data values nach XML data values Die Umsetzung der Werte wird bestimmt durch die Typdefinition zu der der Wert gehört. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 47

Der Datentyp XML Noch sehr rudimentär Warum führt man einen Datentyp XML ein?» Es soll auf XML innerhalb von SQL zugegriffen werden können.» Es sollen XML Dokumente erzeugt werden können, einzelnen Elemente soll extrahiert werden können.» XML Elemente sollen dauerhaft in relationalen Tabellen gespeichert werden können.» SQL soll dahingehend erweitert werden, daß man XML- Elemente innerhalb des RDBMS erzeugen kann. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 48

CREATE TABLE job_angebote ( name VARCHAR(128), resume XML ) ; So könnte eine Tabellendefinition mit einem Feld vom Typ XML aussehen. Es fehlen im Standard noch die Operationen zu dem Typ XML. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 49

1 SQL/XML ISO:9075-14 200x SQL-Tabelle: Mitarbeiter lfdnr V_name N_name Einstelldatum 1001 Herbert Meyer 10-Dez-2000 1029 Karin Schmitz 01-Jan-2002 Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 50

XMLElement: erzeugt ein XML Element SELECT m.lfdnr, XMLELEMENT (NAME Emp, m.v_name m.n_name ), XMLELEMENT (NAME Einstelldatum, m.einstelldatum) AS Mitarbeiterdaten FROM MITARBEITER m WHERE... ; lfdnr Mitarbeiterdaten 1001 <emp> Herbert Meyer </emp> <Einstelldatum>10-Dez-2000 </Einstelldatum> 1029 <emp> Karin Schmitz</emp> <Einstelldatum>01-Jan-2002</Einstelldatum> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 51

SELECT e.id, XMLELEMENT ( NAME "Emp", XMLELEMENT ( NAME "name",e.fname ' ' e.lname), XMLELEMENT ( NAME "hiredate", e.hire ) ) AS "result" FROM employees e WHERE... ; Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 52

ID result 1001 <Emp> </Emp> 1206 <Emp> </Emp> <name>john Smith</name> <hiredate>2000-05-24</hiredate> <name>mary Martin</name> <hiredate>1996-02-01</hiredate> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 53

XMLForest: erzeugt ein XML Forestelement SELECT m.lfdnr, XMLELEMENT (NAME Emp, XMLATTRIBUTES ( m.v_name m.n_name as Name ), XMLFOREST ( m.einstelldatum, m.abtl as Abteilung ) AS Mitarbeiterdaten FROM MITARBEITER m WHERE... ; Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 54

Lfdnr Mitarbeiterdaten 1001 <emp Name= Herbert Meyer> <Einstelldatum>10-Dez-2001</Einstelldatum> <Abteilung>Konstruktion</Abteilung> </emp> 1029 <emp Name=Karin Schmitz> <Einstelldatum>01-Jan-2002</Einstelldatum> <Abteilung>Vorstandsbüro</Abteilung> <emp> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 55

XMLGen SELECT ma.ma_nr, XMLGEN ( '<Mitarbeiter Name="{$NAME}"> <Einstelldatum>{$HIRE}</Einstelldatum> <Abteilung>{$DEPT}</Abteilung> <Mitarbeiter>', ma.v_name ' ' ma.n_name AS name, ma.einstelldatum, ma.abteilung ) AS Ergebnis" FROM mitarbeiter ma WHERE... ; Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 56

Ma_ Ergebnis nr 1001 <Mitarbeiter name="gerhard Hinz"> <Einstelldatum>24-05-2000</Einstelldatum> <Abteilung>Buchhaltung</Abteilung> </Mitarbeiter> 1206 <Mitarbeiter name="heinz Kunz"> <Einstelldatum>01-02-1999</Einstelldatum> <Abteilung>Versand</Abteilung> </Mitarbeiter> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 57

SQL table wird in ein XML Document und ein XML Schema Document übertragen. XML-Document Beinhaltet die Daten der Tabelle SQL-Tabelle XML Schema Document Beschreibung der Tabelle ( Metadaten ) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 58

<EMPLOYEE> <row> </row> <row> </row>. </EMPLOYEE> <EMPNO>000010</EMPNO> <FIRSTNME>CHRISTINE</FIRSTNME> <LASTNAME>HAAS</LASTNAME> <BIRTHDATE>1933-08-24</BIRTHDATE> <SALARY>52750.00</SALARY> <EMPNO>000020</EMPNO> <FIRSTNME>MICHAEL</FIRSTNME> <LASTNAME>THOMPSON</LASTNAME> <BIRTHDATE>1948-02-02</BIRTHDATE> <SALARY>41250.00</SALARY> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 59

<xsd:schema> <xsd:element name="employee"> <xsd:complextype> <xsd:sequence> <xsd:element name="row" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="empno"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:length value="6"/> </xsd:restriction> </xsd:simpletype> </xsd:element> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 60

<xsd:element name="firstnme">... </xsd:element>. </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> #</xsd:schema> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 61

SQL Schema wird in ein XML Document und ein XML Schema Document übertragen. XML-Document Beinhaltet die Daten der Tabelle (Daten sind in diesem Fall Metadaten) SQL-Schema XML Schema Document Beschreibung der Tabelle (Metadaten der Metadaten) Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 62

Abbildung einer SQL Tabelle in XML Schema Typen CREATE TABLE Employees ( EmpName CHARACTER (20), Salary NUMERIC(8,2), HireDate DATE); Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 63

Abbildung einer SQL Tabelle in XML Schema Typen <xsd:complextype name= EMPLOYEES > <xsd:sequence> <xsd:element name = EMPNAME > <xsd:simpletype> <xsd:restriction base = string > <xsd:length value= 20 /> <xsd:restriction> <xsd:simpletype> <xsd:element> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 64

Abbildung einer SQL Tabelle in XML Schema Typen <xsd:element name = SALARY > <xsd:simpletype> <xsd:restriction base = decimal > <xsd:precision value= 8 /> <xsd:scale value= 2 /> <xsd:restriction> <xsd:simpletype> <xsd:element> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 65

Abbildung einer SQL Tabelle in XML Schema Typen <xsd:element name = HIREDATE > <xsd:simpletype> <xsd:restriction base = date > <xsd:pattern value = \p{nd}{4}-\p{nd}{2}-\p{nd}{2} /> <xsd:restriction> <xsd:simpletype> <xsd:element> <xsd:sequence> <xsd:complextype> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 66

Abbildung einer SQL Tabelle in XML Schema Typen <xsd:complextype name= EMPLOYEES > <xsd:sequence> <xsd:element name = EMPNAME > <xsd:simpletype> <xsd:restriction base = string > <xsd:length value= 20 /> <xsd:restriction> <xsd:simpletype> <xsd:element> Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 67

Mapping XML nach SQL UNICODE nach SQL character set XML Names nach SQL <identifier>s Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 68

Mapping UNICODE nach SQL character set Abbildung von UNICODE nach Zeichenketten des jeweiligen SQL Character sets. Genau der umgekehrte Weg wie bei SQL Character Set nach UNICODE. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 69

Mapping XML Names nach SQL <identifier>s Algorithmus, der die das Mapping der SQL <identifier>s nach XML Names, umgekehrt. Scanning des XML-Names von links-nach-rechts nach den Escape sequenzen und umsetzen derselben in SQL_TEXT Zeichen. Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 70

SELECT fragen FROM zuhörer WHERE thema = SQL/XML ; FOR $q IN document ( decus2002 ) // zuhörer WHERE $q/thema = SQL/XML RETURN $q/fragen/text() Rüdiger Eisele IBCPartner GmbH München DECUS-2002 Vortrag Nr. 2L04 Seite 71