Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XML-Werte in SQL/XML Von Viktor Folmer. Inhalt Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen.

Ähnliche Präsentationen


Präsentation zum Thema: "XML-Werte in SQL/XML Von Viktor Folmer. Inhalt Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen."—  Präsentation transkript:

1 XML-Werte in SQL/XML Von Viktor Folmer

2 Inhalt Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen

3 Der Datentyp XML in SQL/XML:2003 Der Datentyp XML in SQL/XML:2003 Seit SQL/XML:2003 Basisdatentyp in SQL  Speicherung von XML-Dokumenten als Wert in einer Tabellenspalte Grund: steigende Praxisrelevanz von XML  … und weiterhin breiter Einsatz relationaler Datenbanken XML-Welt und SQL-Welt zusammenbringen !

4 Der Datentyp XML Vorher: Speicherung von XML in relationalen DBMS nur mit „Krücken“ ◦varchar / CLOB ◦shredding ◦extender Seit 2003 Basisdatentyp „XML“ basiert auf Infoset

5 Exkurs : Information Set abstrakte Datenzusammenstellung, die festschreibt, welche Informationen ein XML-Dokument enthält Infoset kann als Baum angesehen werden Ein XML-Dokument hat ein Infoset, wenn : ◦ es wohlgeformt ist und ◦ die Anforderungen der Namensräume erfüllt Auch ein ungültiges XML-Dokument kann ein Infoset besitzen

6 Werte des Datentyps „XML“ in SQL/XML:2003 Zulässige Werte:  (SQL-)Nullwert  Wohlgeformtes XML-Dokument  Nicht wohlgeformtes XML-Dokument (eingeschränkt) Validität (noch) nicht überprüfbar

7 Datentyp „XML“ in SQL/XML:2006 Einordnung: Erweiterung von SQL/XML:2003 seit 2006 Teil von SQL:2003 Umstellung des Datentyps auf XQuery – Datenmodell Vorteile:  Unterstützung von Sequenzen  Erweiterung der Datentypen im XML-Dokument

8 Exkurs: XQuery-Datenmodell Sequenz: Folge von Sequenzeinträgen: ◦ Atomarer Wert ◦ Knoten 7 Knotenarten in Bäumen und Sequenzen ◦ Dokumentknoten ◦ Elementknoten ◦ Attributknoten ◦ Namensraumknoten ◦ Verarbeitungsanweisungsknoten ◦ Kommentarknoten ◦ Textknoten Nach bestimmten Regeln angeordnet

9 Exkurs: XQuery-Datenmodell EP N E TN VD E TN E TN E A E TN E A E TN V E C

10 Mehr Funktionen Knotenarten im XQuery-DatenmodellNeue Funktionen in SQL/XML:2006 DokumentknotenXMLDOCUMENT ElementknotenXMLELEMENT AttributknotenXMLATTRUBUTES NamensraumknotenXMLNAMESPACES VerarbeitungsanweisungsknotenXMLPI KommentarknotenXMLCOMMENT TextknotenXMLTEXT Logische Konsequenz: Jede Knotenart benötigt eine Entsprechung in SQL

11 Mehr Funktionen SELECT XMLELEMENT ( NAME "angestellte", XMLATTRIBUTES (a.Gehalt),ID) AS Geringverdiener FROM Angestellte a WHERE Gehalt < 450 123456 123424 123434 113424 Beispiel:

12 Untertypen des Datentyps „XML“ SEQUENCE : beliebige Sequenz (Folge von Bäumen und/oder atomaren Werten) CONTENT : nur ein Baum mit einem D-Knoten als Wurzel in der Sequenz erlaubt. Wie viele E-Knoten Kinder des D-Knotens sind ist unwichtig DOCUMENT : wohlgeformte XML-Dokumente, nur ein Baum mit einem D-Knoten als Wurzel und nur ein E-Knoten als Kind

13 Untertypen des Datentyps „XML“ Die Untertypen besitzen eine Hierarchie: Jeder XML-Wert vom Typ XML(DOCUMENT) ist gleichzeitig auch eine Instanz von XML(CONTENT) Jeder Wert vom Typ XML(CONTENT) ist eine Instanz von XML(SEQUENCE)

14 Untertypen des Datentyps „XML“ XML(CONTENT) XML(DOCUMENT) XML(SEQUENCE)

15 Unter(unter)Typen des Datentyps „XML“ Folgende Unter(unter)typen verfeinern die Untertypen XML(CONTENT) und XML(DOCUMENT) :  UNTYPED : nicht validierte XML-Dokumente, E-Knoten sind vom Typ untyped und dessen A-Knoten sind vom Typ untypedAtomic  XMLSCHEMA : gegen ein bestimmtes Schema validiertes XML-Dokument  ANY : der XML-Wert ist entweder gegen ein Schema validiert oder er ist es nicht

16 Unter(unter)Typen des Datentyps „XML“ Syntax Beispiele: ◦ CREATE TABLE Angest ( ID integer, xml_emp_data XML(DOCUMENT(UNTYPED))) ◦ CREATE TABLE Angest ( ID integer, xml_emp_data XML(DOCUMENT(XMLSCHEMA URI ’http://...’)) ◦ CREATE TABLE Angest ( ID integer, xml_emp_data XML(DOCUMENT(ANY)))

17 Validierung mit SQL Nicht nur einzelne Dokumente, sondern auch ganze Sequenzen können mit der Funktion XMLVALIDATE gegen ein bestimmtes Schema validiert werden Sequenz wird Baum für Baum überprüft Bei erfolgreicher Validierung werden die Knoten mit Typinformationen angereichert

18 Validierung mit SQL Einschränkungen: In einer Sequenz dürfen bei der Validierung …  Textknoten  Attributknoten  Namensraumknoten  Atomare Werte nicht vorkommen Einzelne Bäume einer ungültigen Sequenz können über einen „Umweg“ doch validiert werden

19 Prädikate Zum Test auf bestimmte Eigenschaften von XML- Werten stehen auch neue Prädikate zur Verfügung: ◦ IS DOCUMENT : prüft ob der XML-Wert den Eigenschaften eines XML-Dokuments (validiert oder ungültig) genügt ◦ IS CONTENT : prüft ob der XML-Wert ein Dokument im Sinne des XQuery-Datenmodells ist ◦ IS VALID : prüft ob ein XML-Wert einem bestimmten Schema genügt. Im Gegensatz zu XMLVALIDATE findet hier keine Typanreicherung statt.

20 Prädikate Für alle diese Prüfungen gilt: Es wird lediglich ein Wahrheitswert zurückgegeben und die Daten bleiben unverändert Sie können z.B. in der WHERE –Klausel verwendet werden um nur Zeilen mit der jeweiligen Gültigkeit zu liefern Beispiel : SELECT * FROM Angest WHERE xml_emp_data IS [NOT] DOCUMENT

21 Übergabe von Knoten Wird eine Sequenz zur Verarbeitung an eine SQL-Funktion übergeben, muss der Übergabemechanismus spezifiziert werden Dazu gibt es – wie bei Programmiersprachen – zwei unterschiedliche Methoden ◦ BY REF : Die Knoten der Sequenz selbst werden übergeben ◦ BY VALUE : Nur Kopien der Knoten werden übergeben Dazu wird das Konzept der Knotenidentität des XQuery- Datenmodells genutzt. Alle Knoten haben eine Knotenidentität, nutzt man BY VALUE, bekommen die Kopien eine neue Knotenidentität.

22 XMLQuery Bettet XQuery-Anfragen in SQL ein Kann nach bestimmten Werten einer SQL-Tabelle in XML-Dokumenten suchen Dies geschieht indem ein SQL-Wert an eine globale XQuery-Variable gebunden wird und diese Variable dann im XQuery-Ausdruck verwendet werden kann Die Rückgabe des XQuery-Ausdrucks an SQL erfolgt BY REF oder BY VALUE

23 XMLQuery Beispiel: SELECT top_price, XMLQUERY ( ´ for $cost in /buyer/contract/item/amount where /buyer/name = $var1 return $cost ´ PASSING BY VALUE "F.Castro", AS var1 RETURNING SEQUENCE BY VALUE ) FROM buyers

24 XMLTable Referenziert einen XML-Wert als eine Tabelle Im Gegensatz zum shredding keine Speicherung als Tabelle, sondern nur virtuell In SQL-Abfragen lassen sich die Elemente dann als Spalten ansprechen

25 XMLTable SELECT X.* FROM PurchaseOrders PO, XMLTable ( '//item' PASSING PO.XMLpo COLUMNS "Seqno" FOR ORDINALITY, "Part #" CHAR(6) PATH '@partnum', "ProdName" CHAR(20) PATH 'productName', "Quantity" INTEGER PATH 'quantity', "Price" DECIMAL(9,2) PATH 'USPrice', "Date" DATE PATH 'shipDate' ) AS X WHERE PO.KeyField = 1

26 XMLTable – virtuelle Tabelle SeqnoPart #ProdNameQuantityPriceDate 1GA-564Kettensäge 1299.8012.02.08 2GA-520Gartenschere 3312.2301.03.08 Nutzungsmöglichkeiten von XMLTable: Persistente Speicherung des „geshredderten“ XML-Wertes mit INSERT INTO Joins mit anderen Tabellen

27 XMLCAST Konvertiert Werte von SQL nach XML und umgekehrt existierende CAST-Funktion nicht geeignet, da in vielen Produkten das „Casten“ von/nach XML bereits als Character-String implementiert ist Syntax: XMLCAST ( xml_data AS date) Entweder der Quell- oder der Zieldatentyp (oder auch beide) müssen XML sein Das Schlüsselwort EMPTY kann nach XML gecastet werden, um kinderlose Dokumentenknoten oder leere Sequenzen zu erzeugen XMLCAST (EMPTY AS XML(SEQUENCE))

28 XMLCAST XML nach XML : ◦Grundsätzlich kann jeder XML-Wert in einen anderen „gecastet“ werden ◦Viele Einschränkungen bezüglich der Datentypen (Bsp.: sequence  document), ◦Knotenidentität und Schemainformationen können verloren gehen SQL nach XML: ◦Cast nach XML(DOCUMENT) oder XML(CONTENT)  Text-Knoten im Dokument ◦Cast nach XML(SEQUENCE) kann auch einen atomic type erzeugen XML nach SQL: ◦Kinder von D-Knoten müssen als Sequenz arrangiert werden ◦Die Sequenz muss atomisiert und in atomic type konvertiert werden ◦Das ganze funktioniert dann nur, wenn die arrangierte Sequenz nur einen Wert hatte

29 Abschließende Worte zur Norm Entwicklung geht Richtung Ausbau der XML-Unterstützung Die Norm ist kein Gesetz Viele Bereiche sind auch in der Norm „implementation defined“

30 Vielen Dank


Herunterladen ppt "XML-Werte in SQL/XML Von Viktor Folmer. Inhalt Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen."

Ähnliche Präsentationen


Google-Anzeigen