XML and Databases

Werbung
XML and Databases
H.E. Erbs
Contents:
Overview
What is XML?
Mapping rules
- A simple class
- Association of low multiplicity
- Association of high multiplicity
- Hierachy
Intermediate conclusion
XML as a bridge
- Exporting from MS-Access
- Importing into FastObjects
The XML reality
Übersicht
XML and Databases
H.E. Erbs
XML:
Just an additional path in the
data modelling flow chart?
XML model
XML
Database
Übersicht
XML and Databases
H.E. Erbs
Each XML document (a database?) …
•is a (long) string (stored in a text file)
•consists of
•a header (conc. XML version and character set)
•(if necessary:) a reference to a structure definition file
•data (= a „mixture“ of tags and content)
Content and all tags (!) can be defined by the user.
Structure information can be generated automatically on the basis of the
XML documents. (-> first: create data and second: generate the structure)
Übersicht
XML and Databases
Mapping of a simple class
H.E. Erbs
This is the begin
tag of an object
<Produkt>
<Nummer>106222</Nummer>
<Bezeichnung>Kanne</Bezeichnung>
<Groesse></Groesse>
<Fassungsvermoegen>1.20</Fassungsvermoegen>
<Preis>59.00</Preis>
<Funktion>1</Funktion>
<Foto>106222.IMG</Foto>
</Produkt>
and here is the
corresponding end tag
An object
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Fassungsvermoegen (#PCDATA)>
…
<!ELEMENT Produkt (Nummer, Bezeichnung, Groesse,
Fassungsvermoegen, Preis, Funktion, Foto)>
<!ELEMENT Produkte (Produkt+)>
<Produkte>
<Produkt>
…
</Produkt>
<Produkt>
…
</Produkt>
</Produkte>
A set of objects
The corresponding document type definition (DTD)
(a class definition)
indicating „many; at least one“
Übersicht
XML and Databases
H.E. Erbs
Mapping of an association of low multiplicity
Produkt
Dekor
- Bezeichnung : String
- Foto
: BLOB
0..1
- Nummer
: int
- Bezeichnung
: String
Grösse
: double
0..*
- Fassungsvermögen : double
ist versehen mit
- Preis
: double
- Funktion
: int
- Foto
: BLOB
+ getAnzVerkauft () : int
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Fassungsvermoegen (#PCDATA)>
<!ELEMENT Foto (#PCDATA)>
<!ELEMENT Funktion (#PCDATA)>
<!ELEMENT Groesse (#PCDATA)>
<!ELEMENT Nummer (#PCDATA)>
<!ELEMENT Preis (#PCDATA)>
<!ELEMENT Produkt (Nummer, Bezeichnung, Groesse,
Fassungsvermoegen, Preis, Funktion, Foto)>
<!ELEMENT Dekor (Bezeichnung, Foto, Produkt*)>
Mapping multiplicity 0..*
Übersicht
XML and Databases
H.E. Erbs
<xs:element name="Dekor">
<xs:complexType>
<xs:sequence>
<xs:element ref="Produkt"
minOccurs="0" maxOccurs="unbounded"/>
…
</xs:sequence>
</xs:complexType>
</xs:element>
XML Schema: just another DDL
Again:
mapping multiplicity 0..*
Übersicht
XML and Databases
H.E. Erbs
Mapping of an association of high multiplicity
Markt
Produkt
- Nummer
: int
- Bezeichnung
: String
- Grösse
: double
- Fassungsvermögen : double
- Preis
: double
- Funktion
: int
- Foto
: BLOB
+ getAnzVerkauft () : int
1..*
0..*
- Bezeichnung
- Standort
- Termin von
- Termin bis
- URL
- Kategorie
- Ranking
- Standgebühr pro qm
+ getDauer () : int
: String
: String
: Date
: Date
: String
: int
: int
: double
Angebot
- Anzahl : int
Übersicht
XML and Databases
H.E. Erbs
<?xml version="1.0" encoding="UTF-8"?>
<MaerkteUndProdukte>
<Maerkte>
<Markt Nr="M1">
<Bezeichnung>Krefelder Töpfermarkt</Bezeichnung>
…
</Markt>
<Markt Nr="M2">
<Bezeichnung>Lichtenberger Adventsmarkt</Bezeichnung>
…
</Markt>
</Maerkte>
<Produkte>
<Produkt Nr="P1">
<Nummer>106222</Nummer>
…
</Produkt>
<Produkt Nr="P2">
<Nummer>101222</Nummer>
…
</Produkt>
</Produkte>
<M-P>
<WirdAngebotenAuf Nr="MP1" Produkt-Nr="P1" Markt-Nr="M1">
<Anzahl>10</Anzahl>
</WirdAngebotenAuf>
<WirdAngebotenAuf Nr="MP2" Produkt-Nr="P2" Markt-Nr="M1">
<Anzahl>20</Anzahl>
</WirdAngebotenAuf>
</M-P>
</MaerkteUndProdukte>
Übersicht
XML and Databases
H.E. Erbs
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Markt (Bezeichnung, Standort,
Oeffnungszeiten, Termin, URL)>
<!ATTLIST Markt Nr ID #REQUIRED >
<!ELEMENT Maerkte (Markt+)>
<!ELEMENT Produkt (Nummer, Bezeichnung, Preis)>
<!ATTLIST Produkt Nr ID #REQUIRED>
<!ELEMENT Produkte (Produkt+)>
<!ELEMENT M-P (WirdAngebotenAuf*)>
<!ELEMENT Anzahl (#PCDATA)>
<!ELEMENT WirdAngebotenAuf (Anzahl)>
<!ATTLIST WirdAngebotenAuf
Produkt-Nr IDREF #REQUIRED
Markt-Nr
IDREF #REQUIRED
>
<!ELEMENT MaerkteUndProdukte (Maerkte, Produkte, M-P)>
Übersicht
XML and Databases
H.E. Erbs
<?xml version="1.0" encoding="UTF-8"?>
…
<xsl:template match="/">
…
<xsl:for-each select="MaerkteUndProdukte/Maerkte/Markt">
<tr>
<td><xsl:value-of select="Bezeichnung"/></td>
<td><xsl:value-of select="Standort"/></td>
<td><xsl:value-of select="Termin"/></td>
<xsl:variable name="MarktRef" select="@Nr"/>
<xsl:apply-templates
select="/MaerkteUndProdukte/M-P/WirdAngebotenAuf
[@Markt-Nr=$MarktRef] "/>
</tr>
</xsl:for-each>
…
</xsl:template>
<xsl:template match="Produkt">
<td> <xsl:value-of select="Bezeichnung"/></td>
</xsl:template>
<xsl:template match="WirdAngebotenAuf">
<xsl:variable name="ProduktRef" select="@Produkt-Nr"/>
<td><xsl:value-of select="Anzahl"/></td>
<xsl:apply-templates
select="/MaerkteUndProdukte/Produkte/Produkt
[@Nr=$ProduktRef] "/>
</xsl:template>
An XSL transformation using an XSLT style sheet
Übersicht
XML and Databases
H.E. Erbs
And here is the result (displayed by OPERA browser)
Übersicht
XML and Databases
H.E. Erbs
Mapping of a hierachy
Geschäftspartner
-
Name
Vorname
Strasse
Land
PLZ
Ort
Telefonnummer
email
Rechtsform
: String
: String
: String
: String
: String
: String
: String
: String
: int
{disjoint,
complete}
Händler
Spediteur
Kunde
Veranstalter
- Firmenname : String
- Firmenname : String
- Nummer
: int
- Erstkontakt : Date
- Bezeichnung : String
- Typ
: String
Übersicht
XML and Databases
H.E. Erbs
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Geschaeftspartner (Name, Vorname, … )>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Haendler (Geschaeftspartner, Name)>
<!ELEMENT Spediteur (Geschaeftspartner, Name)>
<!ELEMENT Kunde (Geschaeftspartner, Nummer, ErstKontakt)>
<!ELEMENT Nummer (#PCDATA)>
<!ELEMENT ErstKontakt (#PCDATA)>
<!ELEMENT Veranstalter (Geschaeftspartner, Bezeichnung, Typ)>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Typ (#PCDATA)>
A client („Kunde“) element based on this DTD is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<Kunde>
<Geschaeftspartner>
<Name>Meier</Name>
<Vorname>Paula</Vorname>
</Geschaeftspartner>
<Nummer>4713</Nummer>
<ErstKontakt>1.1.2002</ErstKontakt>
</Kunde>
Remark: This mapping rule differs from the corresponding one in The Book.
Übersicht
XML and Databases
H.E. Erbs
Who‘s gonna use these concepts?
Nobody. Nowadays data is stored in network or relational databases,
but isn‘t stored in XML databases/documents.
So, what‘s left (for XML)?
Übersicht
XML and Databases
H.E. Erbs
XML as a bridge between heterogeneous databases
[so-called Message-oriented middleware (MOM) architecture]
Export
MS Access
Client
MS Access
Datenbank
Import
XMLDokument
FastObjects
Client
FastObjects
Datenbank
Übersicht
XML and Databases
H.E. Erbs
Exporting a simple relation as part of an MS-Access database
Übersicht
XML and Databases
H.E. Erbs
Importing an XML document into a FastObjects database (screen shot)
Übersicht
XML and Databases
H.E. Erbs
Conclusions:
1. The XML path is just another path in data modelling, but it is of no
importance in industry. Native XML database systems won‘t have a
commercial future.
2. Import/export of data will be done on an XML basis. All database
systems (will) offer interfaces for that basis.
Übersicht
XML and Databases
H.E. Erbs
The XML reality
Reality
Relational
Database
(e.g. Access)
Network
Database
(e.g. UDS)
XML
document
Objectoriented
Database
(e.g. POET)
XML
data model
XMLDB
Übersicht
Herunterladen