XML und Datenbanken Fortsetzung

Ähnliche Dokumente
Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

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

How To: Oracle XML DB

XML in Oracle 12c. Wolfgang Nast

7. XML-Datenbanksysteme und SQL/XML

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS noch einmal. XQuery... Andreas Schmidt Oracle XQuery 1/12

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - WS 2016 SQLX. Andreas Schmidt Oracle und XML (SQLX) 1/15

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

Oracle XML DB: XML Schema Handling für Entwickler und Administratoren

<Insert Picture Here> XML DB Vorlesung Ulrike Schwinn Teil 3

Web Technologien XML, XQuery, XPath und XSLT

XML Kurs LRZ 1

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

Übung PL/SQL Trigger Lösungen

2a) Rekursion (zugeschnitten auf Anfrage) (C) Prof. E. Rahm Universität Leipzig

7. XML-Datenbanksysteme und SQL/XML

Datenbanken und Informationssysteme II

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015 SQLX. Christian Senger/Andreas Schmidt Oracle und XML (SQLX) 1/14

XML in der Oracle Datenbank

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Datenbanksysteme 2013

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Trigger. Andreas Schmidt Trigger 1/25

Dynamische Generierung von XML

Nonstandard Datenbanken

XML in Oracle. Workshop. Ing. Markus Gamperl

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Objektrelationale, erweiterbare Datenbanken WS 04/05

XML in der Oracle Datenbank "relational and beyond"

<Insert Picture Here> XML und die Oracle Datenbank

Oracle 10g Einführung

XML in kommerziellen Datenbanksystemen. Vortrag im Rahmen des Seminares: XML Datenbanken Cordula Bauer

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

Extraktion von Metainformationen

Übungsblatt 8- Lösungsvorschlag

Validating XML Parser. Application. XML-Datei XML-Datei XML-Datei XML-Datei XML-Datei. XML-Schema oder DTD

Aufgaben eines Codegenerators

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

NoSQL mit Postgres 15. Juni 2015

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS XML und Datenbanken. Dr. Christian Senger XML 1

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Klausur Semistrukturierte Daten und XML Sommersemester 2011 Prof. Dr. Wolfgang May 14. Juli 2011, Uhr Bearbeitungszeit: 90 Minuten

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Bäume in RDBMS. Enthalten beide: Nested-Set Model of Trees

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Einführendes Tutorium zu SQLX

Metadaten oder Metainformationen sind Daten, die Informationen über Merkmale anderer Daten enthalten, aber nicht diese Daten selbst (Wikipedia)

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Probeklausur Datenbanken und Informationssysteme II

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

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

XML Schema S 2010/2011 a W _d Seite 1 h

Referentielle Integrität

6. Datenintegrität. Integritätsbedingungen

Die Datenmanipulationssprache SQL

Klausur zur Vorlesung Einführung in XML

XML Schema 2015 S h_da S Seite 1

Kuriositäten in der Oracle-Datenbank

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN. 4. Übung SQL/XML

Probeklausur Datenbanken und Informationssysteme II

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators

DB2 SQL, der Systemkatalog & Aktive Datenbanken

bitflux CMS ein crossmedia-fähiges opensource System ein Vortrag von Marcel Linnenfelser

XML-Übersicht. Von HTML zu XML

XML-Übersicht. Von HTML zu XML. Nutzen von XML. Geschichte von XML. Eigenschaften von XML. Nutzen von XML (extensible Markup Language)

Arbeit mit zusammengesetzten Datentypen

Kapitel 6 Abbildung von Datenbanken auf XML

Seminar XML und Datenbanken Andreas Krug. XML -Unterstützung durch IBM DB2

<B1>Skript</B1> Skript zur Vorlesung Auszeichnungssprachen Stand: September 2016

Views in SQL. 2 Anlegen und Verwenden von Views 2

Projektseminar "Texttechnologische Informationsmodellierung"

Housekeeping -2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Referentielle Integrität

Prozedurale Datenbank- Anwendungsprogrammierung

Oracle native json Support. Erste Schritte

Kapitel 8: Datenintegrität

Advanced Queues und XML-DB Integration von Oracle in einer SOA mit Hilfe von asynchroner Kommunikation und XML-Verarbeitung

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

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

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik

Datenintegrität. Bisherige Integritätsbedingungen

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Relational and Beyond : Oracle9i, die native XML Datenbank

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

XML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

PostgreSQL unter Debian Linux

Vergessene (?) SQL- und PL/SQL- Funktionen

Housekeeping -2

Beispiel zur referentiellen Integrität

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Transkript:

XML und Datenbanken Fortsetzung XML und Datenbanken 1

Anwendungsszenarien Fakultät für Informatik & Wirtschaftsinformatik XML und Datenbanken Generierung von XML aus Datenbanken Visualisierung von Datenbankinhalten Speicherung von XML-Dokumenten in bestehenden Datenbanken Austausch von Datenbankinhalten Electronic Data Interchange Verbindung verschiedener Softwarekomponenten XML und Datenbanken 2

Anwendungsszenarien DB XML- Generierung XML- Dok. XML- Dok. HTML. Dok. XSLT- Dokument (Stylesheet) XSLT- Transformation sonst. Dok. Generierung/Visualisierung von Datenbankinhalten XML und Datenbanken 3

Anwendungsszenarien II XML- Dok. XML- Anfrage XML- Dok. Abspeicherungsmodul Anfragemodul Speicherung von XML-Dokumenten in bestehende Datenbanken DB XML und Datenbanken 4

Anwendungsszenarien III DB1 Programm I Generierung XML- Dok. Abspeicherung XML-Prozessor DB2 Programm II Austausch von Datenbankinhalten, Electronic Data Interchange (EDI) XML und Datenbanken 5

Feste Menge vorgegebener Datenbankstrukturen create table element ( id number primary key, name varchar2(20) not null, parent_elem_fk number references element(id) on delete cascade, position number not null ); Elemente create table text ( id number primary key, text varchar2(255), element_fk number references element(id) on delete cascade, position number ); Texte create table attribut ( id number primary key, name varchar2(20) not null, value varchar2(80), element_fk references element(id) on delete cascade ); Attribute XML und Datenbanken 6

XML Standard für SQL Fakultät für Informatik & Wirtschaftsinformatik SQLX Standard Reihe von Funktionen zur Unterstützung der Ausgabe von XML mittels SQL-Select-Statements XMLElement XMLAttributes XMLForest XMLAgg XMLConcat XMLRoot XML und Datenbanken 7

von Oracle vordefinierter Typ Fakultät für Informatik & Wirtschaftsinformatik XMLType XMLType zur Speicherung von nativen XML-Dokumenten Anfragen an Dokumente mittels XPath-Unterstützung Funktionen zur Unterstützung der SQL-Anfragen auf XMLType Instanzen: extractvalue(xmltype, XPath) extract(xmltype, XPath) existsnode(xmltype, XPath) xmlsequence(xmltype) transform(xmltype) XML-Schema und XQuery Unterstützung XML und Datenbanken 8

XMLType & DML DML Modifikationsfunktionen updatexml: Führt ein Update eines Wertes/Elements an der durch XPath angegebenen Stelle durch. deletexml: Löscht das/die durch XPath angegebene(n) Element(e). insertxmlbefore: Fügt eine XMLType-Instanz vor der durch XPath spezifizierten Stelle ein. appendchildxml: Fügt eine XMLType-Instanz nach der durch XPath spezifizierten Stelle ein. insertchildxml: Fügt ein XMLElement unterhalb der durch XPath spezifizierten Stelle ein (ist ein Schema angegeben erfolgt der Eintrag automatisch an der richtigen Stelle). XML und Datenbanken 9

transform Führt XSLT-Transformation auf XMLType Instanz aus Input: XSLT-Stylesheet Beispiel (Identity Stylesheet) select value(p).transform(xmltype( <xsl:stylesheet version="1.0 xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> <xsl:template match="node() @*"> <xsl:copy> <xsl:apply-templates select="@* node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>')) from person_xml p Das Identity-Stylesheet gibt den Input Text unverändert zurück. Durch Hinzunahme weiterer Regeln (xsl:template-elemente) können dann bestimmte Teile modifiziert werden. XML und Datenbanken 10

DTD- und Schema-Unterstützung create table person_xml of XMLType; XML und Datenbanken 11

Fakultät für Informatik & Wirtschaftsinformatik DTD- und Schema-Unterstützung insert into person_xml values(xmltype( '<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Person [ <!ELEMENT Person (Name, Adresse)> <!ATTLIST Person ID CDATA #REQUIRED> <!ELEMENT Adresse (Strasse, Plz, Ort)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Strasse (#PCDATA)> <!ELEMENT Plz (#PCDATA)> <!ELEMENT Ort (#PCDATA)> ]> <Person ID="242"> <Name>Sebbl Seeigel</Name> <Adresse> <Strasse>An der Mole 15</Strasse> <Plz>65432</Plz> <Ort>Salzhausen</Ort> </Adresse> </Person> ')); 1 Zeilen eingefügt XML und Datenbanken 12

DTD- und Schema-Unterstützung insert into person_xml values(xmltype('<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Person [ <!ELEMENT Person (Name, Adresse)> <!ATTLIST Person ID CDATA #REQUIRED> <!ELEMENT Adresse (Strasse, Hausnummer, Plz, Ort)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Strasse (#PCDATA)> <!ELEMENT Hausnummer (#PCDATA)> <!ELEMENT Plz (#PCDATA)> <!ELEMENT Ort (#PCDATA)> ]> <Person ID="242"> <Name>Sebbl Seeigel</Name> <Adresse> <Strasse>An der Mole 15</Strasse> <Plz>65432</Plz> <Ort>Salzhausen</Ort> </Adresse> </Person>')); SQL-Fehler: ORA-31011: XML-Parsing nicht erfolgreich ORA-19202: Fehler bei XML-Verarbeitung LPX-00103: Warning: Dokumentstruktur stimmt nicht mit DTD überein Error at line 17 aufgetreten ORA-06512: in "SYS.XMLTYPE", Zeile 301 ORA-06512: in Zeile 1 31011. 00000 - "XML parsing failed" *Cause: XML parser returned an error while trying to parse the document. *Action: Check if the document to be parsed is valid. XML und Datenbanken 13

DTD- und Schema-Unterstützung declare str clob; begin str := '<xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="adresse"> <xs:complextype> <xs:sequence> <xs:element name="strasse" type="xs:string"/> <xs:element name="plz" type="xs:int"/> <xs:element name="ort" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:id" use="required"/> </xs:complextype> </xs:element> </xs:schema>'; dbms_xmlschema.registerschema ('http://www.hs-karlsruhe.de/iwi/db2/simpleperson.xsd', str); end; XML und Datenbanken 14

DTD- und Schema-Unterstützung Tabelle, basierend auf XML-Schema definieren create table person_schema_xml of XMLType XMLSCHEMA "http://www.hs-karlsruhe.de/iwi/db2/simple-person.xsd" ELEMENT "Person"; Datensatz einfügen: insert into person_schema_xml values(xmltype('<person ID="242"> <Name>Sebbl Seeigel</Name> <Adresse> <Strasse>An der Mole 15</Strasse> <Plz>65432</Plz> <Ort>Salzhausen</Ort> </Adresse> </Person>')); XML und Datenbanken 15

DTD- und Schema-Unterstützung Keine defaultmäßige Überprüfung auf Schemakonformheit Dokument mit Fehler der nicht erkannt wird: insert into person_schema_xml values(xmltype('<person ID="243"> <Name>Johann Meier</Name> <Adresse/> </Person>')); 1 Zeilen eingefügt XML und Datenbanken 16

DTD- und Schema-Unterstützung Dokument mit Fehler der erkannt wird: begin insert into person_schema_xml values(xmltype( <Person ID="242"> <Name>Sebbl Seeigel</Name> <Anschrift> <Strasse>An der Mole 15</Strasse> <Plz>65432</Plz> <Ort>Salzhausen</Ort> </Anschrift> </Person>')); dbms_output.put_line('fehler: keinen Fehler im XML Dokument gefunden!!'); exception when others then dbms_output.put_line('fehler im XML Dokument erkannt'); end XML und Datenbanken 17

DTD- und Schema-Unterstützung Automatische Validierung gegenüber Schema ist nicht vollständig. Vollständige Validierung mittels zusätzlicher Methoden: member function isschemavalid() return number static procedure schemavalidate() Überprüfen/manuelles Setzen des Validierungsstatus member function isschemavalidated() return number member procedure setschemavalidated(flag IN BINARY_INTEGER := 1) XML und Datenbanken 18

DTD- und Schema-Unterstützung Überprüfung durch Instanzenmethode isschemavalid(...): -- manuelles überprüfen des Datensatzes -- declare xmldoc xmltype; begin select value(x) into xmldoc from person_schema_xml x where existsnode(value(x),'/person[@id="243"]')=1; IF xmldoc.isschemavalid() = 1 THEN dbms_output.put_line('dokument wurde nicht beanstandet'); ELSE dbms_output.put_line('dokument wurde als falsch erkannt'); END IF; end; XML und Datenbanken 19

DTD- und Schema-Unterstützung Überprüfung mittels Trigger: CREATE TRIGGER is_valid_trig BEFORE INSERT OR UPDATE ON person_schema_xml FOR EACH ROW DECLARE newxml XMLType; BEGIn newxml := :new.object_value; XMLTYPE.schemaValidate(newxml); END; XML und Datenbanken 20

XMLType und XQuery Zugriff auf Tabellen/Views vom Typ XMLType: Anlegen eines Views vom Typ XMLType: create or replace view kleinstaaten of xmltype with object id ('/LAND/@ID') as select xmlelement("land", xmlattributes(code as "ID"), xmlforest(capital, population)) from mondial.country c where population < 100000; Test: select value(ks) from kleinstaaten ks; Ausgabe: <LAND ID="AND"><CAPITAL>Andorra la Vella</CAPITAL><POPULATION>72766</POPULATION></LAND> <LAND ID="FL"><CAPITAL>Vaduz</CAPITAL><POPULATION>31122</POPULATION></LAND> <LAND ID="MC"><CAPITAL>Monaco</CAPITAL><POPULATION>31719</POPULATION></LAND>... XML und Datenbanken 21

XMLType und XQuery XQuery: select XMLquery(' let $ks := /LAND let $stadt:=$ks/capital/text() let $id:=$ks/@id return <stadt land="{$id}">{$stadt}</stadt> ' PASSING OBJECT_VALUE RETURNING CONTENT) from kleinstaaten; Ausgabe: <stadt land="and">andorra la Vella</stadt> <stadt land="fl">vaduz</stadt> <stadt land="mc">monaco</stadt> <stadt land="v">vatican City</stadt> <stadt land="rsm">san Marino</stadt> <stadt land="ag">saint Johns</stadt> <stadt land="wd">roseau</stadt>... 15 Zeilen ausgewählt XML und Datenbanken 22

XMLType und XQuery Anfrage: select XMLquery('let $ks := /LAND let $stadt:=$ks/capital/text() let $id:=$ks/@id return <stadt land="{$id}">{$stadt}</stadt>' PASSING OBJECT_VALUE RETURNING CONTENT) from kleinstaaten ks where existsnode(value(ks),'//land[population > 20000]')=1 ; Ausgabe: <stadt land="and">andorra la Vella</stadt> <stadt land="fl">vaduz</stadt> <stadt land="mc">monaco</stadt> <stadt land="v">vatican City</stadt> <stadt land="rsm">san Marino</stadt>... 11 Zeilen ausgewählt XML und Datenbanken 23

XMLType und XQuery Anfrage: select xmlagg(xmlquery('let $ks := /LAND let $stadt:=$ks/capital/text() let $id:=$ks/@id return <stadt land="{$id}">{$stadt}</stadt>' PASSING OBJECT_VALUE RETURNING CONTENT)) from kleinstaaten ks where existsnode(value(ks),'//land[population > 20000]')=1 ; <stadt land="and">andorra la Vella</stadt><stadt land="fl">vaduz</stadt><stadt land="mc">monaco</stadt><stadt land="rsm">san Marino</stadt><stadt land="ag">saint Johns</stadt><stadt land="wd">roseau</stadt><stadt land="wg">saint Georges</stadt><stadt land="kn">basseterre</stadt><stadt land="kir">tarawa</stadt><stadt land="mh">majuro</stadt><stadt land="sy">victoria</stadt> 1 Zeilen ausgewählt. XML und Datenbanken 24