SQL/XML - PowerPoint PPT Presentation

About This Presentation
Title:

SQL/XML

Description:

Title: Verwalten von XML-Dokumenten Author: Thomas Kudrass Last modified by: kudrass Document presentation format: Overheadfolien Other titles: Times New Roman Arial ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 19
Provided by: Thomas1612
Category:
Tags: sql | xml

less

Transcript and Presenter's Notes

Title: SQL/XML


1
SQL/XML
2
Motivation
  • Speicherung von XML in allen großen kommerziellen
    DBMS vorhanden
  • proprietäre Lösungen für die Einbettung in SQL
  • SQL/XML Teil 14 des SQL-Standards
    XML-Funktionalität
  • berücksichtigt entsprechende Standards auf
    XML-Seite (XML Schema, XQuery)
  • Grundgedanke
  • Abbildung von SQL-Konzepten auf XML
  • eigener Datentyp zur Speicherung von XML

3
Abbildung von SQL-Konzepten auf XML-Konzepte
  • Abbildung von Zeichensätzen
  • XML Unicode, SQL US-ASCII
  • homomorphe Abbildung
  • Abbildung von Namen
  • XML nicht alle Zeichen in Namen zugelassen,
    unbegrenzte Länge
  • SQL alle Zeichen zulässig (auch Leerzeichen, bei
    delimited identifier), begrenzte Länge des Namens
  • nicht zulässige Zeichen des SQL-Namens (z.B. lt,
    ) müssen in XML maskiert werden
  • Abbildung von Datentypnamen
  • grundsätzlich Ãœbereinstimmung (Großbuchstaben)
  • bei Datentypen mit Parametrisierung werden
    Parameter dem XML-Typnamen hinzugefügt
  • Beispiel VARCHAR(10) gt VARCHAR_10
  • bei Längenänderung VARCHAR_10_20
  • Parametrisierung auch bei DECIMAL, FLOAT, TIME,
    ARRAY

4
Abbildung von SQL-Konzepten auf XML-Konzepte -
Datentypen
  • Abbildung von Datentypen
  • bestmöglicher XML-Datentyp für jeden
    Standard-SQL-Typ
  • Angleichung der Wertebereiche über Aspekte
    (facets) in XML Schema
  • XML-Schema-Annotationen (optional) exakter
    SQL-Datentyp, SQL-Zeichensatz, Sortierordnung
  • alle SQL-Zeichenkettentypen gt xsstring (bei
    fester Länge Aspekt length)
  • BOOLEAN gt xsboolean
  • INTEGER, SMALLINT, BIGINT gt xsinteger (mit
    Aspekten maxInclusive und minInclusive)
  • REAL, DOUBLE PRECISION, FLOAT gt xsfloat,
    xsdouble
  • DATE gt xsdate

5
Abbildung von SQL-Konzepten auf XML-Konzepte
Datentypen (Beispiel)
  • Abbildung eines Zeichenkettendatentyps

ltxssimpleType name"VARCHAR_20_40"gt
ltxsannotationgt ltxsappinfogt
ltsqlxmlsqltype kind"PREDEFINED" name"CLOB"
maxlength"20" characterSetName"CH" collation
"CO"/gt lt/xsappinfogt lt/xsannotationgt
ltxsrestriction base"xsstring"gt ltxsmaxlength
value"40"gt lt/xsrestrictiongt lt/xssimpleTypegt
  • Abbildung eines numerischen Datentyps

ltxssimpleType name"DECIMAL_9_2"gt
ltxsannotationgt ltxsappinfogt
ltxsqlxmlsqltype kind"PREDEFINED" name"DECIMAL"
userPrecision"9" scale"2"/gt lt/xsappinfogt
lt/xsannotationgt ltxsrestriction
base"xsdecimal"gt ltxstotalDigits value"9"gt
ltxsfractionDigits value"9"gt lt/xsrestrictiongt lt
/xssimpleTypegt
6
Abbildung einer SQL-Tabelle
  • Abbildung einer SQL-Tabelle (im Katalog K und im
    Schema S) auf ein XML-Dokument mit
    XML-Schemadokument

CREATE TABLE Buecher ("VerlagOrt"
VARCHAR(20), ("Jahr" INTEGER,
("Titel" VARCHAR(100))
  • XML-Dokument

lt?xml version"1.0"?gt ltBUECHER
xmlnsxsi"http//www.w3.org/2001/XMLSchema-Instan
ce" xsinoNamespaceSchemaLocation"XS"gt ltrowgt
ltVerlag_x0026_OrtgtFachbuchverlag
Leipziglt/Verlag_x0026_Ortgt ltJahrgt2007lt/Jahrgt
ltTitelgtTaschenbuch Datenbankenlt/Titelgt
lt/rowgt ltrowgt ... lt/rowgt lt/BUECHER
7
Abbildung einer SQL-Tabelle (2)
  • XML-Schemadokument

ltxsdcomplexType name"TableType.K.S.BUECHER"gt
ltxsdannotationgt ltxsdappinfogt
ltsqlxmlsqlname type"BASE TABLE" catalogname"K"
schemaname"S" localname"BUECHER"/gt
lt/xsdappinfogt lt/xsdannotationgt
ltxsdsequencegt ltxsdelement name"row"
type"RowType.K.S.BUECHER"gt minOccurs"0"
maxOccurs"unbounded" /gt lt/xsdsequencegt lt/xsdco
mplexTypegt
8
Abbildung einer SQL-Tabelle auf ein XML-Schema
(Vollständiges Beispiel)
  • Definition der Basisdatentypen

lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
xmlnssqlxml"http//www.iso-standards.org/mra/907
5/2001/12/sqlxml" ltxsdimport
namespace"http//www.iso-standards.org/mra/9075/2
001/12/sqlxml" schemaLocation
"http//www.iso-standards.org/mra/9075/2001/12/sql
xml.xsd" ltxsdsimpleType name"VARCHAR_20_40"gt
ltxsdrestriction base"xsdstring"gt
ltxsdmaxlength value"40"gt lt/xsdrestrictiongt lt/x
sdsimpleTypegt ltxsdsimpleType name"INTEGER"gt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"-2147483648"/gt
ltxsdmaxInclusive value"2147483647"/gt
lt/xsdrestrictiongt lt/xsdsimpleTypegt ltxsdsimpleTy
pe name"VARCHAR_100_200"gt ltxsdrestriction
base"xsdstring"gt ltxsdmaxlength value"200"gt
lt/xsdrestrictiongt lt/xsdsimpleTypegt . . .
gt Fortsetzung nächste Folie
9
Abbildung einer SQL-Tabelle auf ein XML-Schema
(Vollständiges Beispiel)
  • Definition des komplexen Typs für die Tabelle als
    Sequenz von row-Elementen

. . . ltxsdcomplexType name"RowType.K.S.BUECHER"
gt ltxsdsequencegt ltxsdelement
name"Verlag_x0026_Ort" type"VARCHAR_20_40"
minOccurs"0" /gt lt! je nach
Implementierung Annotation moeglich ... gt
lt/xsdelementgt ltxsdelement name"Jahr"
type"INTEGER" minOccurs"0" /gt
lt/xsdelementgt ltxsdelement name"Titel"
type"VARCHAR_100_200" minOccurs"0" /gt
lt/xsdelementgt lt/xsdsequencegt lt/xsdcomplexTypegt
ltxsdcomplexType name"TableType.K.S.BUECHER"gt
ltxsdannotationgt ltxsdappinfogt
ltsqlxmlsqlname type"BASE TABLE" catalogname"K"
schemaname"S" localname"BUECHER"/gt
lt/xsdappinfogt lt/xsdannotationgt
ltxsdsequencegt ltxsdelement name"row"
type"RowType.K.S.BUECHER"gt minOccurs"0"
maxOccurs"unbounded" /gt lt/xsdsequencegt lt/xsdco
mplexTypegt ltxdselement name"BUECHER"
type"TableType.K.S.BUECHER" /gt lt/xsdschemagt
10
Abbildung eines SQL-Schemas oder eine SQL-Katalogs
  • SQL-Schema enthält mehrere Tabellen
  • weitere Ebene (S) im XML-Dokument

ltS xmlnsxsi"http//www.w3.org/2001/XMLSchema-Ins
tance" xsinoNamespaceSchemaLocation"XS"gt
ltBUECHERgt ltrowgt ltVerlag_x0026_OrtgtFachbuchve
rlag Leipziglt/Verlag_x0026_Ortgt
ltJahrgt2007lt/Jahrgt ltTitelgtTaschenbuch
Datenbankenlt/Titelgt lt/rowgt ltrowgt ...
lt/rowgt lt/BUECHERgt ltTabelle2gt . . .
lt/Tabellegt lt/Sgt
11
Der neue Datentyp XML
  • erlaubte Werte
  • XML-Dokument (mit Prolog)
  • XML-Inhalt gemäß XML 1.0 (einschl. reinem Text,
    Kommentare und PI?)
  • NULL
  • keine Vergleichbarkeit möglich (vgl. CLOB in SQL)
  • kein Programmiersprachentyp für Einbindung in SQL
    vorhanden
  • Standard definiert verschiedene Operatoren, um
    Ãœbergang zu anderen SQL-Datentypen zu erleichtern

12
SQL/XML Operatoren
  • Beispiel SQL-Tabelle Buecher

INSERT INTO Buecher VALUES (Fachbuchverlag
Leipzig, 2007,
Taschenbuch Datenbanken)
  • XMLGENerzeugt einen Wert vom Typ XML mittels
    XQuery-Konstruktor (Variablenverwendung möglich)

XMLGEN (ltBuch Verlagv Jahrjgtclt/Buchgt,
Fachbuchverlag AS "v", 2007 AS
"j", Taschenbuch Datenbanken AS "c" )
erzeugt
ltBuch Verlag"Fachbuchverlag" Jahr"2007"gtTaschenb
uch Datenbankenlt/Buchgt
Mit Bezugnahme auf SQL-Spalte
SELECT XMLGEN (ltVerlaggtVerlag_x0026_Ortlt/Verla
ggt, "VerlagOrt") FROM Buecher
erzeugt
ltVerlaggtFachbuchverlag Leipziglt/Verlaggt
13
SQL/XML Operatoren (2)
  • XMLELEMENTdient zur Konstruktion eines
    XML-Elements (Name Attribut Inhalt)

XMLELEMENT (NAME "Buch", XMLATTRIBUTES
(Fachbuchverlag AS "Verlag", 2007 AS "Jahr"),
Taschenbuch Datenbanken)
erzeugt
ltBuch Verlag"Fachbuchverlag" Jahr"2007"gtTaschenb
uch Datenbankenlt/Buchgt
Mit Referenzen auf existierende Tabellenspalten
SELECT XMLELEMENT(NAME "Buch"),
XMLATTRIBUTES ("VerlagOrt" AS "Verlag" , "Jahr"
), "Titel" ) FROM Buecher FROM Buecher
erzeugt
ltBuch Verlag "Fachbuchverlag Leipzig" Jahr
"2007" gt Taschenbuch Datenbanken lt/Buchgt
14
SQL/XML Operatoren (3)
  • Schachtelung von Elementen

SELECT XMLELEMENT(NAME "Buch",
XMLELEMENT(NAME "Verlag", "VerlagOrt"), XMLEL
EMENT(NAME "Jahr" , "Jahr" ) XMLELEMENT(NAME
"Titel", "Titel" )) FROM Buecher
erzeugt im Ergebnis
ltBuchgt ltVerlaggtFachbuchverlaglt/Verlaggt
ltJahrgt2007lt/Jahrgt ltTitelgtTaschenbuch
Datenbankenlt/Titelgt lt/Buchgt
  • XMLFORESTdient der Konstruktion eines Waldes
    von attributlosen Elementen

XMLFOREST(Taschenbuch Datenbanken AS "Titel",
2007 AS "Jahr" )
oder bei Zugriff auf SQL-Tabelle
SELECT XMLFOREST("Titel", "Jahr" ) FROM Buecher
erzeugt jeweils das XML-Fragment
ltTitelgtTaschenbuch Datenbankenlt/TitelgtltJahrgt2007lt/
Jahrgt
15
SQL/XML Operatoren (4)
  • XMLAGG
  • konkateniert Einzelergebnisse über mehrere Zeilen
  • Zusammenfassung mehrerer Zeilen der Bezugstabelle
    zu XML-Wert
  • hilfreich für geschachtelte Anfragen und
    Gruppierung

SELECT XMLELEMENT(NAME "Abteilung",
XMLATTRIBUTES (Abtnr), SELECT
XMLAGG(XMLELEMENT( Name "Mitarbeiter",
XMLATTRIBUTES (Vorname,Nachname))) FROM
Angestellte m WHERE m.Abtnra.Abtnr) FROM
Abteilungen a
oder mittels SQL-Gruppierung
SELECT XMLELEMENT(NAME "Abteilung",
XMLATTRIBUTES (m.Abtnr),
XMLAGG(XMLELEMENT(NAME "Mitarbeiter",
XMLATTRIBUTES (Vorname,Nachname))) FROM
Angestellte m GROUP BY Abtnr
16
SQL/XML Operatoren (4)
Ergebnis des XMLAGG-Beispiels
ltAbteilung ABTNR"1"gt ltMitarbeiter
VORNAME"Egon" NACHNAME"Müller"/gt
ltMitarbeiter VORNAME"Emma" NACHNAME"Meier"/gt lt/A
bteilunggt ltAbteilung ABTNR"2"gt ltMitarbeiter
VORNAME"Anna" NACHNAME"Schulz"/gt
ltMitarbeiter VORNAME"Otto" NACHNAME"Schmidt"/gt lt
/Abteilunggt
17
Weitere SQL/XML Operatoren
  • XMLCONCATfügt mehrere XML-Werte zu einem
    zusammen
  • XMLCOMMENTerzeugt einen XML-Kommentar
  • XMLPIerzeugt eine Verarbeitungsanweisung
  • XMLSERIALIZEwandelt einen Wert vom Typ XML in
    eine Zeichenkette um
  • XMLPARSEkonvertiert eine SQL-Zeichenkette, die
    bezügl. XML wohlgeformt sein muss, in einen Wert
    des Typs XML

18
Bewertung von SQL/XML
  • zwei Komponenten
  • Datentyp XML zur Speicherung von XML
  • Funktionen zur Abbildung von relationalen
    Strukturen auf XML (generisch inhaltsorientiert)
  • Nur Konstruktionsoperatoren
  • keine Extraktion von Werten oder Suche
  • aber Konstruktionsoperatoren beruhen auf XQuery
  • Abbildung von Tabellen, Schemata, Katalogen
    ignoriert einige Informationen aus dem rel.
    Schema
  • UNIQUE
  • REFERENCES
  • CHECK
  • Künftige Erweiterungen zu erwarten
Write a Comment
User Comments (0)
About PowerShow.com