Agenda from now on
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Agenda from now on PowerPoint PPT Presentation


  • 37 Views
  • Uploaded on
  • Presentation posted in: General

Agenda from now on. Done: SQL, views, transactions, conceptual modeling, E/R, relational algebra. Starting: XML To do: the database engine: Storage Query execution Query optimization. X M L. XML. eXtensible Markup Language XML 1.0 – a recommendation from W3C, 1998

Download Presentation

Agenda from now on

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Agenda from now on

Agenda from now on

  • Done: SQL, views, transactions, conceptual modeling, E/R, relational algebra.

  • Starting: XML

  • To do: the database engine:

    • Storage

    • Query execution

    • Query optimization


X m l

XML


Agenda from now on

XML

  • eXtensible Markup Language

  • XML 1.0 – a recommendation from W3C, 1998

  • Roots: SGML (a very nasty language).

  • After the roots: a format for sharing data


Why xml is of interest to us

Why XML is of Interest to Us

  • XML is just syntax for data

    • Note: we have no syntax for relational data

    • But XML is not relational: semistructured

  • This is exciting because:

    • Can translate any data to XML

    • Can ship XML over the Web (HTTP)

    • Can input XML into any application

    • Thus: data sharing and exchange on the Web


Xml data sharing and exchange

XML Data Sharing and Exchange

application

application

object-relational

Integrate

XML Data

WEB (HTTP)

Transform

Warehouse

application

relational data

legacy data

Specific data management tasks


From html to xml

From HTML to XML

HTML describes the presentation


Agenda from now on

HTML

<h1> Bibliography </h1>

<p> <i> Foundations of Databases </i>

Abiteboul, Hull, Vianu

<br> Addison Wesley, 1995

<p> <i> Data on the Web </i>

Abiteoul, Buneman, Suciu

<br> Morgan Kaufmann, 1999


Agenda from now on

XML

<bibliography>

<book> <title> Foundations… </title>

<author> Abiteboul </author>

<author> Hull </author>

<author> Vianu </author>

<publisher> Addison Wesley </publisher>

<year> 1995 </year>

</book>

</bibliography>

XML describes the content


Web services

Web Services

  • A new paradigm for creating distributed applications?

  • Systems communicate via messages, contracts.

  • Example: order processing system.

  • MS .NET, J2EE – some of the platforms

  • XML – a part of the story; the data format.


Xml terminology

XML Terminology

  • tags: book, title, author, …

  • start tag: <book>, end tag: </book>

  • elements: <book>…<book>,<author>…</author>

  • elements are nested

  • empty element: <red></red> abbrv. <red/>

  • an XML document: single root element

well formed XML document: if it has matching tags


More xml attributes

More XML: Attributes

<bookprice = “55” currency = “USD”>

<title> Foundations of Databases </title>

<author> Abiteboul </author>

<year> 1995 </year>

</book>

attributes are alternative ways to represent data


More xml oids and references

More XML: Oids and References

<personid=“o555”> <name> Jane </name> </person>

<personid=“o456”> <name> Mary </name>

<childrenidref=“o123 o555”/>

</person>

<personid=“o123” mother=“o456”><name>John</name>

</person>

oids and references in XML are just syntax


Xml semantics a tree

Elementnode

Attributenode

Textnode

XML Semantics: a Tree !

data

  • <data>

    • <person id=“o555”>

      • <name> Mary </name>

      • <address>

        • <street> Maple </street>

        • <no> 345 </no>

        • <city> Seattle </city>

      • </address>

    • </person>

    • <person>

      • <name> John </name>

      • <address> Thailand </address>

      • <phone> 23456 </phone>

    • </person>

  • </data>

person

person

id

address

name

address

name

phone

o555

street

no

city

Mary

Thai

John

23456

Maple

345

Seattle

Order matters !!!


Xml data

XML Data

  • XML is self-describing

  • Schema elements become part of the data

    • Reational schema: persons(name,phone)

    • In XML <persons>, <name>, <phone> are part of the data, and are repeated many times

  • Consequence: XML is much more flexible

  • XML = semistructured data


Relational data as xml

<person>

<row> <name>John</name>

<phone> 3634</phone></row>

<row> <name>Sue</name>

<phone> 6343</phone>

<row> <name>Dick</name>

<phone> 6363</phone></row>

</person>

Relational Data as XML

person

XML:

person

row

row

row

phone

name

phone

name

phone

name

“John”

3634

“Sue”

6343

“Dick”

6363


Xml is semi structured data

XML is Semi-structured Data

  • Missing attributes:

  • Could represent ina table with nulls

<person> <name> John</name>

<phone>1234</phone>

</person>

<person> <name>Joe</name>

</person>

 no phone !


Xml is semi structured data1

XML is Semi-structured Data

  • Repeated attributes

  • Impossible in tables:

<person> <name> Mary</name>

<phone>2345</phone>

<phone>3456</phone>

</person>

 two phones !

???


Xml is semi structured data2

XML is Semi-structured Data

  • Attributes with different types in different objects

  • Nested collections (no 1NF)

  • Heterogeneous collections:

    • <db> contains both <book>s and <publisher>s

<person> <name> <first> John </first>

<last> Smith </last>

</name>

<phone>1234</phone>

</person>

 structured name !


Document type definitions dtd

Document Type DefinitionsDTD

  • part of the original XML specification

  • an XML document may have a DTD

  • XML document:

    well-formed = if tags are correctly closed

    Valid = if it has a DTD and conforms to it

  • validation is useful in data exchange


Very simple dtd

Very Simple DTD

<!DOCTYPE company [

<!ELEMENT company ((person|product)*)>

<!ELEMENT person (ssn, name, office, phone?)>

<!ELEMENT ssn (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT office (#PCDATA)>

<!ELEMENT phone (#PCDATA)>

<!ELEMENT product (pid, name, description?)>

<!ELEMENT pid (#PCDATA)>

<!ELEMENT description (#PCDATA)>

]>


Very simple dtd1

Very Simple DTD

Example of valid XML document:

<company>

<person> <ssn> 123456789 </ssn>

<name> John </name> <office> B432 </office>

<phone> 1234 </phone>

</person>

<person> <ssn> 987654321 </ssn>

<name> Jim </name> <office> B123 </office>

</person>

<product> ... </product>

...

</company>


Dtd the content model

DTD: The Content Model

<!ELEMENT tag (CONTENT)>

  • Content model:

    • Complex = a regular expression over other elements

    • Text-only = #PCDATA

    • Empty = EMPTY

    • Any = ANY

    • Mixed content = (#PCDATA | A | B | C)*

contentmodel


Dtd regular expressions

DTD: Regular Expressions

DTD

XML

sequence

<!ELEMENT name (firstName, lastName))

<name>

<firstName> . . . . . </firstName>

<lastName> . . . . . </lastName>

</name>

optional

<!ELEMENT name (firstName?, lastName))

<person>

<name> . . . . . </name>

<phone> . . . . . </phone>

<phone> . . . . . </phone>

<phone> . . . . . </phone>

. . . . . .

</person>

Kleene star

<!ELEMENT person (name, phone*))

alternation

<!ELEMENT person (name, (phone|email)))


Querying xml data

Querying XML Data

  • XPath = simple navigation through the tree

  • XQuery = the SQL of XML

  • XSLT = recursive traversal

    • will not discuss in class


Sample data for queries

Sample Data for Queries

<bib><book> <publisher> Addison-Wesley </publisher> <author> Serge Abiteboul </author> <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author> <author> Victor Vianu </author> <title> Foundations of Databases </title> <year> 1995 </year></book><bookprice=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year></book>

</bib>


Data model for xpath

bib

Data Model for XPath

The root

The root element

book

book

publisher

author

. . . .

Addison-Wesley

Serge Abiteboul


Xpath simple expressions

XPath: Simple Expressions

/bib/book/year

Result: <year> 1995 </year>

<year> 1998 </year>

Result: empty (there were no papers)

/bib/paper/year


Xpath restricted kleene closure

XPath: Restricted Kleene Closure

//author

Result:<author> Serge Abiteboul </author>

<author> <first-name> Rick </first-name>

<last-name> Hull </last-name>

</author>

<author> Victor Vianu </author>

<author> Jeffrey D. Ullman </author>

Result: <first-name> Rick </first-name>

/bib//first-name


Xpath text nodes

Xpath: Text Nodes

/bib/book/author/text()

Result: Serge Abiteboul

Jeffrey D. Ullman

Rick Hull doesn’t appear because he has firstname, lastname

Functions in XPath:

  • text() = matches the text value

  • node() = matches any node (= * or @* or text())

  • name() = returns the name of the current tag


Xpath wildcard

Xpath: Wildcard

Result: <first-name> Rick </first-name>

<last-name> Hull </last-name>

* Matches any element

//author/*


Xpath attribute nodes

Xpath: Attribute Nodes

[email protected]

Result: “55”

@price means that price is has to be an attribute


Xpath predicates

Xpath: Predicates

/bib/book/author[firstname]

Result: <author> <first-name> Rick </first-name>

<last-name> Hull </last-name>

</author>


Xpath more predicates

Xpath: More Predicates

Result: <lastname> … </lastname>

<lastname> … </lastname>

/bib/book/author[firstname][address[//zip][city]]/lastname


Xpath more predicates1

Xpath: More Predicates

/bib/book[@price < “60”]

/bib/book[[email protected] < “25”]

/bib/book[author/text()]


Xpath summary

Xpath: Summary

bibmatches a bib element

*matches any element

/matches the root element

/bibmatches a bib element under root

bib/papermatches a paper in bib

bib//papermatches a paper in bib, at any depth

//papermatches a paper at any depth

paper|bookmatches a paper or a book

@pricematches a price attribute

[email protected] price attribute in book, in bib

bib/book/[@price<“55”]/author/lastname matches…


  • Login