Post on 26-May-2018
||
Agenda
XML in Oracle 12c2
• Vorstellung der Möglichkeiten
Klassisch
XDB
• Beispiel XML Schema
• Umsetzung klassisch
• Umsetzung XDB
• Zusammenfassung
|
Im Überblick
Technologie-orientiert
Branchen-unabhängig
Hauptsitz
Ratingen240
Beschäftigte
Gründungsjahr
1994
Niederlassungen
Frankfurt am Main, Köln
Ausbildungs-
betrieb
Inhabergeführte
Aktiengesellschaft
Zertifizierter
Partner von
Oracle,
Microsoft
und SAP
||
Klassische XML Abbildung
XML in Oracle 12c5
• Abbildung mit BLOB
• Abbildung mit CLOB
• Abbildung mit Tabellen
||
XDB Verwendung
XML in Oracle 12c6
• XML Schema in XDB
• Direkte Speicherung als XMLType
• Relationale Views auf XMLType
• XMLType Views auf relationale Daten
|
Beispiel: XML Schema
Teile des Schemas:
- Kapitel
- Autor
- Buch
XML in Oracle 12c8
XML Schema Buch
||
Klassische Abbildung von XML
XML in Oracle 12c13
• Inhalt des Buches als BLOB
• Inhalt des Kapitels als CLOB
• Inhalt des Autors als Tabelle
|
Tabelle für Buch mit BLOB
Erstellen der Tabelle BUCH_BLOB:
create table buch_blob (id integer generated always as
identity primary key, titel varchar2(100), daten blob);
XML in Oracle 12c14
Klassisch
|
Tabelle für Kapitel mit CLOB
Erstellen der Tabelle KAPITEL_CLOB:
create table kapitel_clob (id integer generated always as
identity primary key, überschrift varchar2(100), text clob);
XML in Oracle 12c16
Klassischer Teil
|
Tabellen für Autor und Buch
Erstellen der Tabelle AUTOR_TAB:
create table autor_tab (id integer generated always as
identity primary key, name varchar2(100), vorname
varchar2(100));
Erstellen der Tabelle BUCH_TAB:
create table buch_tab (id integer generated always as
identity primary key, überschrift varchar2(100));
XML in Oracle 12c17
Klassischer Teil
|
Beziehungstabellen für Autor, Kapitel und Buch
Erstellen der Tabelle AUTOR_BUCH_REL:
create table autor_buch_rel (buch integer, autor integer,
CONSTRAINT "AUTOR_BUCH_REL_PK" PRIMARY KEY ("BUCH",
"AUTOR"), … FK_AUTOR, … FK_BUCH);
Erstellen der Tabelle KAPITEL_BUCH_REL:
create table kapitel_Buch_rel (buch integer, kapitel
integer, nummer integer, CONSTRAINT "KAPITEL_BUCH_REL_PK"
PRIMARY KEY ("BUCH", "KAPITEL"), … FK_KAPITEL, … FK_BUCH,
CONSTRAINT "BUCH_NR_UK1" UNIQUE ("BUCH", "NUMMER"));
XML in Oracle 12c18
Klassischer Teil
|
Schema anpassen für XDB
Buch Schema normal:
<xsd:import schemaLocation="Autor.xsd"
namespace="http://www.nast.org/xml/Autor"/>
<xsd:import schemaLocation="Kapitel.xsd"
namespace="http://www.nast.org/xml/Kapitel"/>
Buch Schema angepasst:
<xsd:import schemaLocation="http://www.nast.org/xml/Autor"
namespace="http://www.nast.org/xml/Autor"/>
<xsd:import schemaLocation="http://www.nast.org/xml/Kapitel"
namespace="http://www.nast.org/xml/Kapitel"/>
XML in Oracle 12c20
XML Schema
|
Schema registrieren Abhängigkeiten
Reihenfolge:
- Kapitel (Eigenständig)
- Autor (Eigenständig)
- Buch (Abhängig von Autor und Buch)
XML in Oracle 12c21
XML Schema
|
Schema registrieren Befehl
SQL/XML Kommando (keine Typen, nur Tabellen):
BEGIN
DBMS_XMLSCHEMA.registerSchema(
'http://www.nast.org/xml/Autor',
'<?xml version="1.0" … </Autor>‚
TRUE, FALSE, FALSE, TRUE, FALSE,
null,
nls_charset_id('AL32UTF8'));
END;
XML in Oracle 12c22
XML Schema
|
Registrierte Schema
Schema mit Oracle Erweiterungen:…
<xsd:element name="Autor" oraxdb:propNumber="4268"
oraxdb:global="true" oraxdb:SQLType="CLOB"
oraxdb:SQLName="Autor" oraxdb:memType="258"
oraxdb:defaultTable="Autor761_TAB"
oraxdb:defaultTableSchema="WNAST">
<xsd:complexType>
<xsd:attribute name="Name" use="required"
type="xsd:string" oraxdb:propNumber="4266"
oraxdb:global="false" oraxdb:memType="1"/>
…
XML in Oracle 12c23
XML Schema
||
XDB Verwendung
XML in Oracle 12c25
• Direkte Speicherung als XMLType
• Relationale Views auf XMLType
• XMLType Views auf relationale Daten
|
Direkte Speicherung als XMLType
Anlegen von BUCH_XML:
create table buch_xml of xmltype xmlschema
"http://www.nast.org/xml/Buch" element "Buch";
XML in Oracle 12c26
XDB
|
XMLTable
vereinfachte Funktion XMLTable:
XMLTable(XMLNAMESPACES ('namespace' as prefix),
'XPath' passing xmlType_Wert columns Spaltenname Spaltentyp
path 'XPath' default 'Text wenn fehlt',…
Spalten)Tabellenname
XML in Oracle 12c27
XDB XML nach relationale Daten
|
Relationale View von XMLType
Anlegen von BUCH_REL_VIEW(Ausgabe Spalten):
create view buch_rel_view as select bu.Buchname,
bu.beschreibung, kap.nummer, kap.ueberschrift,
xmlserialize(content kap.text as varchar2(1000)) as "Text"
from buch_xml b,
XML in Oracle 12c28
XDB anlegen, Teil 1
|
Relationale View von XMLType
Tabellen Teil des Buch XML Element:
xmlTable(XMLNAMESPACES (default
'http://www.nast.org/xml/Buch',
'http://www.nast.org/xml/Kapitel' as k),
'/Buch' passing b.object_value columns Buchname
varchar2(100) path '@Titel',
beschreibung varchar2(1000) path '@Beschreibung' default
'ohne Beschreibung', kapitel xmltype path 'K:Kapitel')bu,
XML in Oracle 12c29
XDB anlegen, Teil 2
|
Relationale View von XMLType
Tabellen Teil des Kapitel XML Element:
xmltable(XMLNAMESPACES (default
'http://www.nast.org/xml/Kapitel'), '/Kapitel' passing
bu.kapitel columns nummer for ordinality, ueberschrift
varchar2(100) path '@Überschrift', text xmltype path
'child::text()')kap;
XML in Oracle 12c30
XDB anlegen, Teil 3
|
XMLElement und XMLAttributes
vereinfachte Funktion XMLElement:
XMLElement("ElementName", xmlattributes(), [Unterelemente])
vereinfachte Funktion XMLAttributes:
XMLAttributes('Wert' as "AttributName", … weitere
Attribute)
XML in Oracle 12c32
XDB relationale Daten nach XML
|
XMLForest und XMLAgg
vereinfachte Funktion XMLForest:
XMLForest(Spalte as "ElementName", …weitere Spalten)
vereinfachte Funktion XMLAgg:
XMLAgg(xmlelement(…) order by Spalte)
XML in Oracle 12c33
XDB relationale Daten nach XML
|
XMLType Views auf relationale Daten
Anlegen von BUCH_XML_VIEW:
create view buch_xml_view as select xmlroot(
xmlelement("Buch",
xmlattributes('http://www.nast.org/xml/Buch' as "xmlns",
b."ÜBERSCHRIFT" as "Titel"),
xmlagg( xmlelement(NOENTITYESCAPING "Kapitel",
xmlattributes('http://www.nast.org/xml/Kapitel' as "xmlns",
k."ÜBERSCHRIFT" as "Überschrift"), k.TEXT) order by
n.nummer)), VERSION '1.0') as XMLDaten
XML in Oracle 12c34
XDB anlegen, Teil 1
|
XMLType Views auf relationale Daten
Anlegen von BUCH_XML_VIEW:
from buch_tab b, kapitel_buch_rel n, kapitel_clob k where
b.id = n.buch and k.id = n.kapitel group by
b."ÜBERSCHRIFT";
XML in Oracle 12c35
XDB anlegen, Teil 2
||
Zusammenfassung
XML in Oracle 12c37
• Direkte Speicherung
• XML erzeugen aus Tabellen
• Teile aus XML extrahieren
• Beispiele als ZIP auf der DOAG Seite
Wolfgang Nast
Telefon: +49 2102 30961 – 0
wolfgang.nast@mt-ag.com
ROADSHOW
„VON FORMS NACH APEX“
24.01.2017 Hamburg
25.01.2017 Düsseldorf
26.01.2017 Frankfurt
27.01.2017 München