Tải bản đầy đủ (.pdf) (96 trang)

FUNDAMENTALS OF DATABASE SYSTEMS Fourth Edition phần 9 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.65 MB, 96 trang )

830
IChapter 25 Distributed Databases and Client-Server Architectures
25.7 DISTRIBUTED DATABASES IN
ORACLE
In
the
client-server
architecture,
the
Oracle
database system is divided
into
two parts:
(l)
a
front-end
as
the
client
portion,
and
(2) a
back-end
as
the
server
portion.
The
cli-
ent
portion


is
the
front-end
database
application
that
interacts'
with
the
user.
The
cli-
ent
has
no
data
access responsibility
and
merely
handles
the
requesting, processing, and
presentation
of
data
managed
by
the
server.
The

server
portion
runs
Oracle
and
handles
the
functions
related
to
concurrent
shared
access. It accepts SQL
and
PL/SQL statements
originating
from
client
applications, processes
them,
and
sends
the
results back to the
client.
Oracle
client-server
applications
provide
location

transparency
by making loca-
tion
of
data
transparent
to users; several features like views, synonyms,
and
procedures
contribute
to this.
Global
naming
is
achieved
by using <TABLENAME.@,
DATABASENAME>
to
refer to tables uniquely.
Oracle uses a two-phase commit protocol
to deal with concurrent distributed
transactions.
The
COMMIT
statement triggers
the
two-phase commit mechanism.
The
RECO
(recoverer) background process automatically resolves the outcome of those distributed

transactions in which the commit was interrupted.
The
RECO of each local Oracle Server
automatically commits or rolls back any "in-doubt" distributed transactions consistently on all
involved nodes. For long-term failures, Oracle allows each local
DBA to manually commit or
roll back any in-doubt transactions and free up resources. Global consistency can be
maintained by restoring
the
database at each site to a predetermined fixed point in the past.
Oracle's distributed database
architecture
is
shown
in Figure 25.9. A node in a
distributed database system
can
act
as a client, as a server, or
both,
depending on the
situation.
The
figure shows two sites where databases called
HQ
(headquarters) and Sales
are kept. For example, in
the
application shown
running

at
the
headquarters, for an
SQL
statement
issued against local data (for example,
DELETE
FRDM
DEPT
•••
),
the
HQ
computer
acts as a server, whereas for a
statement
against remote
data
(for example,
INSERT
INTO
EMP@SALES),
the
HQ
computer
acts as a client.
All
Oracle
databases in a distributed database system (DDBS) use Oracle's networking
software

NetS
for interdatabase
communication.
NetS
allows databases to communicate
across networks to support remote
and
distributed transactions. It packages
SQL
statements
into
one
of
the
many
communication
protocols
to
facilitate
client
to server
communication
and
then
packages
the
results back similarly to
the
client. Each database
has a unique global

name
provided by a hierarchical arrangement of network domain
names
that
is prefixed to
the
database
name
to make it unique.
Oracle
supports database links
that
define a one-way
communication
path
from one
Oracle
database
to
another. For example,
CREATE
DATABASE
LINK
sales.us.americas;
establishes a
connection
to
the
sales database in Figure 25.9
under

the
network domain
us
that
comes
under
domain
ame
ri
cas.
Data
in an
Oracle
DDBS
can
be replicated using snapshots or replicated master tables.
Replication
is provided at
the
following levels:
• Basic
replication:
Replicas of tables are managed for read-only access. For updates,
data
must be accessed at a single primary site.
25.7
Distributed Databases in
Oracle
I831
Net8

Database
server
Database
server
Net8
(c:::>c:::>c:::>
=

EMPtable
t-
,
,
Sales
,
database
CONNECT TO
IDENTIFY BY .
DEPT Table
t-
.r
HQ
Database
~

(C:::>C:::>C:::>
=I ::l-~ :., f '
Application
TRANSACTION
INSERT
INTO

EMP@SALES

;
DELETE
FROM
DEPT

;
SELECT

FROM
EMP@SALES

;
COMMIT;
TRANSACTION
INSERT
INTO
EMP@SALES

;
DELETE
FROM
DEPT

;
SELECT

FROM
EMP@SALES


;
COMMIT;
FIGURE
25.9
Oracle
distributed
database
systems. Source: From
Oracle
(1997a).
Copyright
©
Oracle
Corporation 1997. All rights reserved.
• Advanced (symmetric)
replication:
This
extends beyond basic replication by allowing
applications to
update
table replicas
throughout
a replicated DDBS.
Data
can
be read
and
updated at any site.
This

requires additional software called Oracle's advanced
replication option. A
snapshot
generates a copy of a
part
of
the
table by means of a
query called
the
snapshot definingquery. A simple snapshot definition looks like this:
CREATE
SNAPSHOT
sales.orders
AS
SELECT
*
FROM
;
832
IChapter 25 Distributed Databases
and
Client-Server Architectures
Oracle groups snapshots
into
refresh groups. By specifying a refresh interval, the
snapshot is automatically refreshed periodically at
that
interval by up
to

ten
Snapshot
Refresh
Processes
(SNPs). If
the
defining query of a snapshot
contains
a distinct or
aggregate function, a
GROUP
BY
or CONNECT
BY
clause, or
join
or set operations, the
snapshot is termed a complex
snapshot
and
requires additional processing. Oracle (up to
version 7.3) also supports
ROWID snapshots
that
are based on physical row identifiers of
rows in
the
master table.
Heterogeneous Databases in
Oracle.

In a heterogeneous
DDBS,
at least one
database is a
non-Oracle
system.
Oracle
Open
Gateways
provides access to a non-Oracle
database from an
Oracle
server, which uses a database link to access
data
or to execute
remote procedures in
the
non-Oracle
system.
The
Open
Gateways feature includes the
following:
• Distributed
transactions:
Under
the
two-phase
commit
mechanism, transactions

may
span
Oracle
and
non-Oracle
systems.
• Transparent SQL
access:
SQL
statements
issued by an application are transparently
transformed
into
SQL
statements
understood by
the
non-Oracle
system.

Pass-through
SQL and
stored
procedures:
An
application
can
directly access a non-
Oracle
system using

that
system's version of
SQL.
Stored
procedures in a non-Oracle
SQL-based system are treated as if
they
were PL!SQL remote procedures.
• Global query optimization:
Cardinality
information, indexes, etc., at
the
non-Oracle
system are
accounted
for by
the
Oracle
Server query optimizer to perform global
query optimization.

Procedural
access:
Procedural systems like messaging or queuing systems are
accessed
by
the
Oracle
server using PL!SQL remote procedure calls.
In addition to

the
above,
data
dictionary references are translated
to
make the non-
Oracle
data
dictionary appear as a
part
of
the
Oracle
Server's dictionary. Character set
translations are
done
between
national
language
character
sets to
connect
multilingual
databases.
25.8
SUMMARY
In this chapter we provided an introduction to distributed databases. This is a very
broad
topic, and we discussed only some of
the

basic techniques used with distributed databases.We
first discussed the reasons for distribution and the potential advantages of distributed
databases
over centralized systems. We also defined the concept of distribution transparency and the
related concepts of fragmentation transparency and replication transparency. We
discussed
the design issues related to data fragmentation, replication, and distribution, and we
distin-
guished between horizontal and vertical fragments of relations. We discussed the use of data
replication to improve system reliability and availability. We categorized
DDBMSs
by usingcri-
teria such as degree of homogeneity of software modules and degree of local autonomy. We
dis-
Review Questions I
833
cussed the issues of federated database management in some detail focusing on the needs of
supporting various types of autonomies and dealing with semantic heterogeneity.
We illustrated some of
the
techniques used in distributed query processing,
and
discussed
the
cost of
communication
among
sites,
which
is considered a major factor in

distributed query optimization. We compared different techniques for executing joins
and
presented
the
semijoin
technique
for joining relations
that
reside on different sites. We
briefly discussed
the
concurrency
control
and
recovery techniques used in
DDBMSs.
We
reviewed some of
the
additional problems
that
must be dealt
with
in a distributed
environment
that
do
not
appear in a centralized
environment.

We
then
discussed
the
client-server architecture concepts
and
related
them
to
distributed databases,
and
we described some of
the
facilities in
Oracle
to support
distributed databases.
Review Questions
25.1.
What
are
the
main
reasons for
and
potential
advantages of distributed databases?
25.2.
What
additional functions does a

DDBMS
have
over a centralized
DBMS?
25.3.
What
are
the
main
software modules of a
DDBMS?
Discuss
the
main
functions of
each
of these modules in
the
context
of
the
client-server
architecture.
25.4.
What
is a fragment of a relation?
What
are
the
main

types of fragments?
Why
is
fragmentation a useful
concept
in distributed database design?
25.5.
Why
is
data
replication useful in
DDBMSs?
What
typical units of
data
are
replicated?
25.6.
What
is
meant
by data allocation in distributed database design?
What
typical
units
of
data
are distributed
over
sites?

25.7.
How
is a horizontal
partitioning
of a relation specified? How
can
a relation be put
back
together
from a complete horizontal partitioning?
25.8.
How
is a vertical
partitioning
of a
relation
specified? How
can
a relation be
put
back
together
from a complete vertical partitioning?
25.9. Discuss
what
is
meant
by
the
following terms:

degree
of homogeneity of a
DDBMS,
degree
of
local
autonomy of a
DDBMS,
federated
DBMS,
distribution transparency,
frag-
mentation transparency,
replication
transparency, multidatabase system.
25.10. Discuss
the
naming
problem in distributed databases.
25.11. Discuss
the
different techniques for executing an equijoin of two files located at
different sites.
What
main
factors affect
the
cost of
data
transfer?

25.12. Discuss
the
semijoin
method
for executing an equijoin of two files located at dif-
ferent sites.
Under
what
conditions is an equijoin strategy efficient?
25.13. Discuss
the
factors
that
affect query decomposition. How are guard conditions
and
attribute
lists of fragments used during
the
query decomposition process?
25.14.
How
is
the
decomposition of an update request different from
the
decomposition
of a query?
How
are guard
conditions

and
attribute lists of fragments used during
the
decomposition of an update request?
25.15. Discuss
the
factors
that
do
not
appear in centralized systems
that
affect concur-
rency
control
and
recovery in distributed systems.
834
I
Chapter
25 Distributed
Databases
and
Client-Server Architectures
25.16.
Compare
the
primary site
method
with

the
primary copy
method
for distributed
concurrency
control.
How
does
the
use
of
backup
sites affect each?
25.17.
When
are
voting
and
elections
used in distributed databases?
25.18.
What
are
the
software
components
in a
client-server
DDBMS?
Compare

the two-
tier
and
three-tier
client-server
architectures.
Exercises
25.19.
Consider
the
data
distribution
of
the
COMPANY
database,
where
the
fragments at
sites
2
and
3 are as
shown
in Figure 25.3
and
the
fragments
at
site 1 are as shown

in Figure
5.6. For
each
of
the
following queries, show at least two strategies of
decomposing
and
executing
the
query.
Under
what
conditions
would
each
of your
strategies work well?
a. For
each
employee in
department
5, retrieve
the
employee
name
and the
names
of
the

employee's
dependents.
b.
Print
the
names
of all employees
who
work in
department
5
but
who
work on
some
project
not
controlled
by
department
5.
25.20.
Consider
the
following relations:
BOOKS
(Book#,
Primary_author,
Topic,
Total_stock,

$price)
BOOKSTORE
(Store#,
City,
State,
Zip,
Inventory_value)
STOCK
(Store#,
Book#, Qty)
TOTAL_STOCK
is
the
total
number
of
books in stock,
and
INVENTORY_VALUE
is the total
inventory
value for
the
store in dollars.
a.
Give
an
example
of
two

simple predicates
that
would be meaningful for the
BOOKSTORE
relation
for
horizontal
partitioning.
b.
How
would a derived
horizontal
partitioning
of
STOCK
be defined based on the
partitioning
of
BOOKSTORE?
c.
Show
predicates by
which
BOOKS
may be horizontally
partitioned
by topic.
d.
Show
how

the
STOCK
may be
further
partitioned
from
the
partitions
in (b)
by
adding
the
predicates in (c).
25.21.
Consider
a distributed database for a bookstore
chain
called
National
Books with
3 sites
called
EAST,
MIDDLE,
and
WEST.
The
relation
schemas are
given

in question
24.20.
Consider
that
BOOKS
are fragmented by
$PRICE
amounts
into:
B
1
:
BOOK!:
up to $20.
B
z:
BOOK2:
from $20.01
to
$50.
B
3
:
BOOK3:
from $50.01 to $100.
B
4
:
BOOK4:
$100.01

and
above.
Similarly,
BOOKSTORES
are divided by Zi
pcodes
into:
SI:
EAST:
Zi
pcodes
up to 35000.
s,
MIDDLE:
Zipcodes
35001 to 70000.
S3:
WEST:
Zi
pcodes
70001 to 99999.
Assume
that
STOCK
is a derived
fragment
based
on
BOOKSTORE
only.

Selected Bibliography I
835
a. Consider
the
query:
SELECT
Book#,
Total_stock
FROM
Books
WHERE
$price
> 15 and
$price
< 55;
Assume
that
fragments of
BOOKSTORE
are non-replicated
and
assigned based on
region. Assume further
that
BOOKS
are allocated as:
EAST: 8
1
,
B

4
MIDDLE:
B
1
,
8
2
WEST:
8
1
,
B
2
,
B
3
,
B
4
Assuming
the
query was submitted in
EAST,
what
remote subqueries does it
generate? (write in
SQL).
b. If
the
bookprice of

BOOK#=
1234 is updated from $45 to $55 at site
MIDDLE,
what
updates does
that
generate?
Write
in English
and
then
in
SQl.
c.
Given
an example query issued at
WEST
that
will generate a subquery for
MIDDLE.
d.
Write
a query involving selection
and
projection on
the
above relations
and
show two possible query trees
that

denote
different ways of execution.
25.22.
Consider
that
you
have
been
asked to propose a database architecture in a large
organization,
General
Motors, as an example, to consolidate all
data
including
legacy databases (from Hierarchical
and
Network
models,
which
are explained in
Appendices
C
and
D;
no
specific knowledge of these models is needed) as well as
relational databases,
which
are geographically distributed so
that

global applica-
tions
can
be supported. Assume
that
alternative
one
is to keep all databases as
they
are, while
alternative
two is to first
convert
them
to relational
and
then
sup-
port
the
applications over a distributed integrated database.
a. Draw two schematic diagrams for
the
above alternatives showing
the
linkages
among
appropriate schemas. For alternative one, choose
the
approach of pro-

viding
export
schemas for
each
database
and
constructing unified schemas for
each
application.
b. List
the
steps
one
has to go
through
under
each
alternative from
the
present
situation
until
global applications are viable.
c.
Compare
these from
the
issues of: (i) design time considerations, and (ii) run-
time considerations.
Selected

Bibliography
The
textbooks by
Ceri
and
Pelagatti (1984a)
and
Ozsu
and
Valduriez (1999) are devoted
to distributed databases. Halsaal (1996),
Tannenbaum
(1996),
and
Stallings (1997) are
textbooks
on
data
communications
and
computer
networks.
Comer
(1997) discusses
net-
works
and
internets. Dewire (1993) is a
textbook
on client-server computing. Ozsu et at.

(1994) has a collection of papers on distributed object management.
836
I
Chapter
25 Distributed
Databases
and
Client-Server Architectures
Distributed database design has
been
addressed in terms of horizontal and vertical
fragmentation, allocation,
and
replication. Ceri et
a1.
(1982) defined
the
concept of
minterm
horizontal fragments.
Ceri
et
a1.
(1983) developed an integer programming
based optimization model for horizontal fragmentation and allocation. Navathe et
'11.
(1984) developed algorithms for vertical fragmentation based on attribute affinity and
showed a variety
of
contexts

for vertical fragment allocation. Wilson and
Navathe
(1986)
present an analytical model for optimal allocation of fragments. Elmasri et
a1.
(1987)
discuss fragmentation for
the
EeR model; Karlapalem et
a1.
(1994) discuss issues for
distributed design of object databases.
Navathe
et
a1.
(1996) discuss mixed fragmentation
by combining horizontal and vertical fragmentation; Karlapalem et
a1.
(1996) present a
model for redesign of distributed databases.
Distributed query processing, optimization,
and
decomposition are discussed in
Hevner
and Yao (1979), Kerschberg et
a1.
(1982), Apers et
a1.
(1983), Ceri and Pelagatti
(1984), and Bodorick et

a1.
(1992). Bernstein and
Goodman
(1981) discuss the theory
behind
semijoin processing.
Wong
(1983) discusses
the
use of relationships in relation
fragmentation. Concurrency control
and
recovery schemes are discussed in Bernstein and
Goodman
(1981a). Kumar and Hsu (1998) have some articles related
to
recovery in
distributed databases. Elections in distributed systems are discussed in Garcia-Molina
(1982). Lamport (1978) discusses problems with generating unique timestamps in a
distributed system.
A concurrency
control
technique for replicated data
that
is based on voting is
presented by
Thomas
(1979). Gifford (1979) proposes
the
use of weighted voting, and

Paris (1986) describes a
method
called voting with witnesses. ]ajodia and Mutchler
(1990) discuss dynamic voting. A technique called
available
copy
is proposed by Bernstein
and
Goodman
(1984), and
one
that
uses
the
idea of a group is presented in EIAbbadi and
Toueg (1988).
Other
recent
work
that
discusses replicated data includes Gladney (1989),
Agrawal
and
E1Abbadi (1990), E1Abbadi and Toueg (1990), Kumar and Segev (1993),
Mukkamala (1989), and Wolfson and Milo (1991). Bassiouni (1988) discusses optimistic
protocols for
DDB
concurrency control. Garcia-Molina (1983) and Kumar and
Stonebraker (1987) discuss techniques
that

use
the
semantics of
the
transactions.
Distributed concurrency
control
techniques based
on
locking and distinguished copies are
presented by Menasce et
a1.
(1980)
and
Minoura and Wiederhold (1982). Obermark
(1982) presents algorithms for distributed deadlock detection.
A survey of recovery techniques in distributed systems is given by Kohler (1981).
Reed (1983) discusses atomic actions on distributed data. A book edited by
Bhargava
(1987) presents various approaches and techniques for concurrency and reliability in
distributed systems.
Federated database systems were first defined in McLeod and Heimbigner (1985).
Techniques for schema integration in federated databases are presented by Elmasri et al.
(1986), Batini et
a1.
(1986), Hayne and Ram (1990), and
Motro
(1987). Elmagarmid and
Helal (1988)
and

Gamal-Eldin et
a1.
(1988) discuss
the
update problem in heterogeneous
DDBSs.
Heterogeneous distributed database issues are discussed in Hsiao and
Kamel
(1989).
Sheth
and
Larson (1990) present an exhaustive survey of federated database
management.
Selected Bibliography I 837
Recently, multidatabase systems
and
interoperability
have
become
important
topics.
Techniques for dealing
with
semantic incompatibilities among multiple databases are
examined in DeMichiel (1989), Siegel
and
Madnick
(1991), Krishnamurthy et al.
(1991),
and

Wang
and
Madnick
(1989).
Castano
et al. (1998) present an
excellent
survey of techniques for analysis of schemas. Pitoura et al. (1995) discuss object
orientation
in multidatabase systems.
Transaction processing in multidatabases is discussed in
Mehrotra
et al. (1992),
Georgakopoulos et al. (1991), Elmagarmid et al. (1990),
and
Brietbart et al. (1990),
among others. Elmagarmid et al. (1992) discuss transaction processing for advanced
applications, including engineering applications discussed in Heiler et a1.(1992).
The
workflow systems,
which
are becoming popular to manage information in
complex organizations, use multilevel
and
nested transactions in
conjunction
with
distributed databases.
Weikum
(1991) discusses multilevel transaction management.

Alonso
et al. (1997) discuss limitations of
current
workflow systems.
A
number
of experimental distributed
DBMSs
have
been
implemented. These include
distributed
INGRES
(Epstein et al., 1978),
DDTS
(Devor
and
Weeldreyer, 1980), SDD-l
(Rothnie
et al., 1980), System R* (Lindsay et al., 1984),
SIRIUS-DELTA
(Ferrier
and
Stangret, 1982),
and
MULTIBASE
(Smith
et al., 1981).
The
OMNIBASE

system
(Rusinkiewicz et al., 1988)
and
the
Federated Information Base developed using
the
Candide
data
model
(Navathe
et al., 1994) are examples of federated
DDBMS.
Pitoura et al.
(1995) present a comparative survey of
the
federated database system prototypes. Most
commercial
DBMS
vendors
have
products using
the
client-server approach
and
offer
distributed versions of
their
systems. Some system issues concerning client-server
DBMS
architectures are discussed in Carey et al. (1991),

DeWitt
et al. (1990), and Wang
and
Rowe (1991). Khoshafian et al. (1992) discuss design issues for relational
DBMSs
in
the
client-server
environment.
Client-server
management
issues are discussed in many books,
such as Zantinge
and
Adriaans (1996).
8
EMERGING TECHNOLOGIES
XML
and Internet
Databases
We
now
turn
our
attention
to how databases are used
and
accessed from
the
Internet.

Many
electronic commerce (e-commerce)
and
other
Internet
applications provide
Web
interfaces to access information stored in
one
or more databases.
These
databases are
often
referred to as
data
sources.
It is
common
to use two-tier
and
three-tier clientserver
architectures for
Internet
applications (see
Section
2.5). In some cases,
other
variations of
the
clientserver model are used. E-commerce

and
other
Internet
database applications are
designed to
interact
with
the
user through
Web
interfaces
that
display
Web
pages.
The
common
method
of
specifying
the
contents
and
formatting of
Web
pages is through
the
use of
hyperlink
documents.

There
are various languages for writing these documents,
the
most
common
being
HTML
(Hypertext
Markup Language).
Although
HTML
is widely
used for formatting
and
structuring
Web
documents, it is
not
suitable for specifying struc-
tured data
that
is
extracted
from databases. Recently, a new
language-namely,
XML
(Extended Markup
Language)-has
emerged as
the

standard for structuring and exchang-
ing
data
over
the
Web. XML
can
be used to provide information about
the
structure and
meaning of
the
data
in
the
Web
pages
rather
than
just specifying
how
the
Web
pages are
formatted for display
on
the
screen.
The
formatting aspects are specified

separately-for
example, by using a formatting language such as XSL (Extended Stylesheet Language).
This
chapter
describes
the
basics of accessing
and
exchanging information over
the
Internet. We
start
in
Section
26.1 by discussing
how
traditional Web pages differ from
structured databases,
and
discuss
the
differences between structured, semistructured,
and
unstructured data.
Then
in
Section
26.2 we
turn
our

attention
to
the
XML standard
and
841
842
I Chapter 26
XML
and Internet Databases
its tree-structured (hierarchical)
data
model.
Section
26.3 discusses XMLdocuments and
the
languages for specifying
the
structure of these documents, namely,
XML
DTD
(Document
Type Definition)
and
XML
schema.
Section
26.4 presents
the
various

approaches for storing
XML
documents,
whether
in
their
native
(text)
format, in a
compressed form, or in relational
and
other
types of databases.
Section
26.5 gives an
overview of
the
languages proposed for querying XML data.
Section
26.6 summarizes the
chapter.
26.1 STRUCTURED,
SEMISTRUCTURED,
AND
UNSTRUCTURED DATA
The
information stored in databases is
known
as
structured

data
because it is represented
in a strict format. For example,
each
record in a relational database
table-such
as the
EMPLOYEE
table in Figure
S.6-follows
the
same format as
the
other
records in
that
table.
For structured data, it is
common
to carefully design
the
database using techniques suchas
those described in
Chapters
3, 4, 7, 10,
and
11 in order to create
the
database schema.
The

DBMS
then
checks to ensure
that
all
data
follows
the
structures
and
constraints
spec-
ified in
the
schema.
However,
not
all data is collected and inserted into carefully designed structured
databases. In some applications,
data
is collected in an ad-hoc
manner
before it is known
how it will be stored and managed.
This
data may have a certain structure, but
not
all the
information collected will
have

identical structure. Some attributes may be shared
among
the
various entities, but
other
attributes may exist only in a few entities.
Moreover,
additional attributes
can
be introduced in some of
the
newer data items at any time, and
there is no predefined schema. This type of data is known as semistructured data. A
number
of
data
models have been introduced for representing semistructured data, often
based on using tree or graph data structures rather
than
the flat relational model structures.
A key difference
between
structured
and
semistructured
data
concerns how the
schema constructs (such as
the
names of attributes, relationships,

and
entity types) are
handled. In semistructured data,
the
schema information is mixedin
with
the
data
values,
since
each
data
object
can
have different attributes
that
are
not
known
in advance.
Hence,
this type of
data
is sometimes referred to as self-describing data. Consider the
following example. We
want
to collect a list of bibliographic references related to a
certain
research project. Some of these may be books or technical reports, others maybe
research articles in journals or conference proceedings,

and
still others may refer to
complete journal issues or conference proceedings. Clearly,
each
of these may have
different attributes
and
different types of information. Even for
the
same type of
reference-say,
conference
articles-we
may
have
different information. For example,
one
article
citation
may be quite complete,
with
full information about author
names,
title, proceedings, page numbers,
and
so on, whereas
another
citation
may
not

have all
the
information available.
New
types of bibliographic sources may appear in the
future-
for example, references
to
Web
pages or
to
conference
tutorials-and
these may have new
attributes
that
describe
them.
26.1 Structured, Semistructured,
and
Unstructured
Data
I
843
Company Projects
Name

"Product X"
Project
• •

"123456789" "Smith"
Project
• •
32.5 "435435435"

"Joyce"

20.0
FIGURE 26.1 Representing semistructured
data
as a graph.
Semistructured
data
may be displayed as a directed graph, as shown in Figure 26.1.
The
information
shown
in Figure 26.1 corresponds to some of
the
structured
data
shown
in Figure 5.6. As we
can
see, this model somewhat resembles
the
object model (see Figure
20.1) in its ability to represent complex objects
and
nested structures. In Figure 26.1,

the
labels or tags on
the
directed edges represent
the
schema names:
the
names of attributes,
object
types (or entity types or classes),
and
relationships.
The
internal nodes represent
individual objects or composite attributes.
The
leaf nodes represent actual
data
values of
simple
(atomic)
attributes.
There
are two
main
differences
between
the
semistructured model
and

the
object
model
that
we discussed in
Chapter
20:
1.
The
schema
information-names
of attributes, relationships,
and
classes (object
types) in
the
semistructured model is intermixed with
the
objects
and
their
data
values in
the
same
data
structure.
2.
In
the

semistructured model,
there
is
no
requirement for a predefined schema to
which
the
data
objects must conform.
In addition to structured
and
semistructured data, a
third
category exists,
known
as
unstructured
data
because
there
is very limited indication of
the
type of data. A typical
example is a
text
document
that
contains
information embedded
within

it. Web pages in
HTML
that
contain
some
data
are considered to be unstructured data. Consider part of
an
HTML
file,
shown
in Figure 26.2.
Text
that
appears
between
angled brackets, < >, is
an
HTML
tag. A tag
with
a backslash, «] >, indicates an
end
tag,
which
represents
the
844
I
Chapter

26 XML
and
Internet Databases
<html>
<head>
</head>
<body>
<H1>List
of
company
projects
and
the
employees
in
each project<\H1>
<H2>The
ProductX
project:</H2>
<table
width="100%" border=O cellpadding=O cellspacing=O>
<TR>
<TO
width="50%"><font
size="2"
face="Arial">John
Smith:</font></TO>
<TO>32.5
hours
per

week</TO>
</TR>
<TR>
<TO
width="50%%"><font
size="2"
face="Arial">Joyce
English:</font></TO>
<TO>20.0
hours
per
week</TD>
</TR>
</table>
<H2>The
ProductY
project:</H2>
<table
width="100%" border=O cellpadding=O cellspacing=O>
<TR>
<TO
width="50%"><font
size="2"
face="Arial">John
Smith:</font></TO>
<TO>7.5
hours
per
week</TO>
</TR>

<TR>
<TO
width="50%%"><font
size="2"
face="Arial">Joyce
English:</font></TO>
<TO>20.0
hours
per
week</TO>
</TR>
<TR>
<TO
width="50%%"><font
size="2"
face="Arial">Franklin
Wong:</font></TO>
<TO>10.0
hours
per
week</TO>
</TR>
</table>
</body>
</html>
FIGURE
26.2
Part of an HTML
document
representing unstructured data.

ending
of
the
effect of a
matching
start
tag.
The
tags
mark
up
the
document! in order to
instruct an
HTML
processor
how
to
display
the
text
between a start tag and a matching
end
tag.
Hence,
the
tags specify
document
formatting
rather

than
the
meaning of the
various
data
elements in
the
document.
HTML
tags specify information, such as font
size
and
style (boldface, italics,
and
so
on),
color, heading levels in documents, and so on.
Some
tags provide
text
structuring in documents, such as specifying a numbered or
1.
That
is why it is
known
as
Hypertext
Markup
Language.
26.1 Structured, Semistructured,

and
Unstructured
Data
I
845
unnumbered
list or a table. Even these structuring tags specify
that
the
embedded textual
data
is to be displayed in a
certain
manner,
rather
than
indicating
the
type of
data
represented in
the
table.
HTML
uses a large
number
of predefined tags,
which
are used to specify a variety of
commands for formatting

Web
documents
for display.
The
start
and
end
tags specify
the
range of
text
to be formatted by
each
command. A few examples of
the
tags
shown
in
Figure 26.2 follow:

The
<html>

</html>
tags specify
the
boundaries of
the
document.


The
document
header
information-within
the
<head>

</head>
tags-specifies
various
commands
that
will be used elsewhere in
the
document. For example, it may
specify various
script
functions
in a language such as JAVA Script or PERL, or
certain
formatting
styles (fonts, paragraph styles,
header
styles,
and
so
on)
that
can
be used

in
the
document.
It
can
also specify a title to indicate
what
the
HTML
file is for,
and
other
similar information
that
will
not
be displayed as
part
of
the
document.

The
body
of
the
document-specified
within
the
<body>


</body>
tags-includes
the
document
text
and
the
markup tags
that
specify how
the
text
is to be formatted
and
displayed. It
can
also include references to
other
objects, such as images, videos,
voice messages,
and
other
documents.

The
<HI>

</HI>
tags specify

that
the
text
is to be displayed as a level I heading.
There
are
many
heading levels
«H2>,
<H3>,
and
so
on),
each
displaying
text
in a
less
prominent
heading format.

The
<table>

</table>
tags specify
that
the
following
text

is to be displayed as a
table.
Each
row in
the
table is enclosed
within
<TR>

</TR>
tags,
and
the
actual
text
data
in a row is displayed
within
<TD>

</TD>
tags.
2

Some
tags may
have
attributes,
which
appear

within
the
start tag
and
describe addi-
tional
properties of
the
tag." In Figure 26.2,
the
<table>
start tag has four attributes
describing various characteristics of
the
table.
The
following
<TD>
and
<font>
start
tags
have
one
and
two attributes, respectively.
HTML
has a very large
number
of predefined tags,

and
whole books are devoted
to
describing
how
to use these tags. If designed properly,
HTML
documents
can
be formatted
so
that
humans
are able to easily
understand
the
document
contents,
and
are able to
navigate
through
the
resulting
Web
documents. However,
the
source
HTML
text

documents
are very difficult
to
interpret automatically by computer
programs
because they
do
not
include
schema
information about
the
type of
data
in
the
documents. As e-
commerce
and
other
Internet
applications become increasingly automated, it is becoming
crucial to be able to
exchange
Web
documents among various
computer
sites
and
to

interpret
their
contents
automatically.
This
need
was
one
of
the
reasons
that
led to
the
development
of XML,
which
we discuss in
the
next
section.
2.
<TR>
stands for table row,
and
<TO>
for table data.
3.
This
is how

the
term
attribute
is used in
document
markup languages, which differs from how it is
used in database models.
846
I Chapter 26 XML and Internet Databases
26.2
XMl
HIERARCHICAL (TREE)
DATA
MODEL
We
now
introduce
the
data
model used in XML.
The
basic object is XMLin
the
XML docu-
ment.
Two
main
structuring concepts are used to
construct
an XML document: elements

and
attributes.
It
is
important
to
note
right away
that
the
term
attribute in XMLis
not
used
in
the
same
manner
as is customary in database terminology,
but
rather
as it is used in
document
description languages
such
as HTML
and
SGML.
4
Attributes

in
XML
provide
additional information
that
describes elements, as we shall see.
There
are additional con-
cepts in XML,
such
as entities, identifiers,
and
references,
but
we first concentrate on
describing elements
and
attributes
to
show
the
essence of
the
XMLmodel.
Figure 26.3 shows an example of an
XML
element
called <projects>. As in HTML,
elements are identified in a
document

by
their
start
tag
and
end
tag.
The
tag names are
enclosed
between
angled brackets <

>,
and
end
tags are further identified by a
backslash, </. >.
5
Complex
elements
are constructed from
other
elements hierarchically,
whereas simple
elements
contain
data
values. A major difference between XMLand HTML
is

that
XML
tag names are defined to describe
the
meaning
of
the
data
elements in the
document,
rather
than
to describe
how
the
text
is to be displayed.
This
makes it possible
to process
the
data
elements in
the
XML
document
automatically by
computer
programs.
It

is straightforward to see
the
correspondence between
the
XML
textual representation
shown in Figure 26.3 and
the
tree structure shown in Figure 26.1. In
the
tree representation,
internal nodes represent complex elements, whereas leaf nodes represent simple elements.
That
is why
the
XML
model is called a
tree
model or a hierarchical model. In Figure
26.3,
the
simple elements are
the
ones with
the
tag names <Name>, <Number>, <Location>,
<DeptNo>,
<SSN>,
<LastName>, <FirstName>, and <hours>.
The

complex elements are
the
ones
with
the
tag names <projects>, <project>,
and
<Worker>. In general, there isno
limit on
the
levels of nesting of elements.
In general, it is possible to characterize
three
main
types of
XML
documents:
• Data-centric
XML
documents:
These
documents
have
many small
data
items that
fol-
Iowa
specific structure
and

hence
may be extracted from a structured database. They
are formatted as
XMLdocuments in order
to
exchange
them
or display
them
over the
Web.
• Document-centric XML documents:
These
are documents
with
large amounts of text,
such as news articles or books.
There
are few or
no
structured
data
elements in these
documents.
• Hybrid XMLdocuments:
These
documents may
have
parts
that

contain
structured data
and
other
parts
that
are predominantly textual or unstructured.
It is
important
to
note
that
data-centric XMLdocuments
can
be considered either as
semistructured
data
or as structured data. If an XML
document
conforms to a predefined
4. SGML (Standard Generalized Markup Language) is a more general language for describing docu-
ments and provides capabilities for specifying new tags. However, it is more complex
than
HTML
and XML.
5.
The
left
and
right angled bracket characters «

and»
are reserved characters, as are the
amper-
sand
(&),
apostrophe e), and single
quotation
marks ('). To include
them
within
the
text of a doc-
ument, they must be encoded as &It;, &gt;, &amp;, &apos;, and &quot;, respectively.
26.2
XML
Hierarchical
(Tree)
Data
Model
I 847
<?xml
version="l.O"
standalone="yes"?>
<projects>
<project>
<Name>ProductX</Name>
<Number>l</Number>
<Location>Bellaire</Location>
<DeptNo>5</DeptNo>
<Worker>

<SSN>123456789</SSN>
<LastName>Smith</LastName>
<hours>32.5</hours>
</Worker>
<Worker>
<SSN>453453453</SSN>
<FirstName>]oyce</FirstName>
<hours>20.0</hours>
</Worker>
«project>
</project>
<Name>ProductY</Name>
<Number>2</Number>
<Location>Sugarland</Location>
<DeptNo
>5</DeptNo >
<Worker>
<SSN>123456789</SSN>
<hours>7.5</hours>
</Worker>
<Worker>
<SSN>453453453</SSN>
<hours>20.0</hours>
</Worker>
<Worker>
<SSN>333445555</SSN>
<hours>10.0</hours>
</Worker>
</project>
</projects>

FIGURE
26.3
A
complex
XML
element
called
<projects>.
XML
schema or
DTD
(see Section 26.3),
then
the document can be considered as
structured
data.
On
the
other
hand,
XML
allows documents
that
do
not
conform to any
schema; and these would be considered as
semistructured
data.
The

latter are also known as
schemaless
XML
documents.
When
the value of the
STANDALONE
attribute in an
XML
document
is
"YES",
as in the first line of Figure 26.3, the document isstandalone and schemaless.
XML
attributes are generally used in a manner similar
to
how they are used in
HTML
(see Figure 26.2), namely,
to
describe properties and characteristics of the elements (tags)
within which they appear.
It is also possible to use
XML
attributes
to
hold the values of
848
I
Chapter

26
XML
and
Internet
Databases
simple
data
elements; however this is definitely
not
recommended. We discuss
XML
attributes further in
Section
26.3
when
we discuss XMLschema
and
DTD.
26.3
XML
DOCUMENTS, DTD, AND
XML
SCHEMA
26.3.1 Well-Formed and Valid
XML
Documentsand
XML
DTD
In Figure 26.3, we saw
what

a simple XML
document
may look like.
An
XMLdocument is
well formed if it follows a few conditions. In particular, it must start with an
XML declara-
tion
to
indicate
the
version of XMLbeing used as well as any
other
relevant
attributes, as
shown
in
the
first line of Figure 26.3.
It
must also follow
the
syntactic guidelines of the
tree model.
This
means
that
there
should be a
single

rootelement,
and
every element must
include a
matching
pair of start
and
end
tags
within
the
start
and
end
tags of the
parent
ele-
ment.
This
ensures
that
the
nested elements specify a well-formed tree structure.
A well-formed
XML
document
is syntactically correct.
This
allows it to be processed
by generic processors

that
traverse
the
document
and
create an internal tree
representation. A standard set of
API (application programming interface) functions
called
DOM
(Document
Object
Model)
allows programs to manipulate
the
resulting tree
representation corresponding to a well-formed
XML
document. However, the whole
document
must be parsed beforehand
when
using DOM.
Another
API called SAX
allows
processing of XML documents
on
the
fly by notifying

the
processing program whenever a
start or
end
tag is
encountered.
This
makes it easier to process large documents and
allows
for processing of so-called
streaming
XML
documents,
where
the
processing program can
process
the
tags as they are
encountered.
A well-formed
XML
document
can
have
any tag names for
the
elements within the
document.
There

is
no
predefined set of elements (tag names)
that
a program processing
the
document
knows to expect.
This
gives
the
document
creator
the
freedom to
specify
new elements,
but
limits
the
possibilities for automatically interpreting the elements
within
the
document.
<!DOCTYPE
projects
[
<!ELEMENT
projects
(project+»

<!ELEMENT
project
(Name,
Number,
Location, DeptNo?, Workers»
<!ELEMENT
Name
(#PCDATA»
<!ELEMENT
Number
(#PCDATA»
<!ELEMENT
Location
(#PCDATA»
<!ELEMENT
DeptNo
(#PCDATA»
<!ELEMENT
Workers (Worker*»
<!ELEMENT
Worker
(SSN,
LastName?, FirstName?, hours»
<!ELEMENT
SSN
(#PCDATA»
<!ELEMENT
LastName
(#PCDATA»
<!ELEMENT

FirstName
(#PCDATA»
<!ELEMENT
hours
(#PCDATA»
] >
FIGURE
26.4
An
XML
DTD file
called
projects.
26.3
XML
Documents, DTD, and
XML
Schema
I
849
A stronger
criterion
is for an XML
document
to be valid. In this case,
the
document
must be well formed,
and
in

addition
the
element
names used in
the
start
and
end
tag
pairs must follow
the
structure specified in a separate XML
DTD
(Document
Type
Definition)
file or XML schema file. We first discuss XML DTD here,
then
give an overview
of
XML
schema
in
Section
26.3.2. Figure 26.4 shows a simple XML DTD file,
which
specifies
the
elements
(tag names)

and
their
nested
structures.
Any
valid documents conforming
to this
DTD should follow
the
specified structure. A special syntax exists for specifying
DTD files, as illustrated in Figure 26.4. First, a
name
is given to
the
root
tag of
the
document,
which
is called projects in
the
first line of Figure 26.4.
Then
the
elements
and
their
nested structure are specified.
When
specifying elements,

the
following
notation
is used:
• A
* following
the
element
name
means
that
the
element
can
be repeated zero or
more times in
the
document.
This
kind
of
element
is
known
as an optional multivalued
(repeating)
element.
• A + following
the
element

name
means
that
the
element
can
be repeated
one
or
more times in
the
document.
This
kind
of
element
is a
required
multivalued
(repeating)
element.
• A ?following
the
element
name
means
that
the
element
can

be repeated zero or
one
times.
This
kind
is an optional single-valued (nonrepeating) element.

An
element
appearing
without
any of
the
preceding
three
symbols
must
appear
exactly
once
in
the
document.
This
kind
is a
required
single-valued (nonrepeating)
element.


The
type of
the
element
is specified via parentheses following
the
element. If
the
parentheses include names of
other
elements, these latter elements are the
children
of
the
element
in
the
tree structure. If
the
parentheses include
the
keyword
#PCDATA
or
one
of
the
other
data
types available in XML DTD,

the
element
is a leaf node. PCDATA
stands for
parsed
character
data,
which
is roughly similar to a string
data
type.
• Parentheses
can
be
nested
when
specifying elements.
• A bar symbol
(e\
I ez ) specifies
that
either
e\ or ez
can
appear in
the
document.
We
can
see

that
the
tree structure in Figure 26.1
and
the
XML
document
in Figure
26.3 conform
to
the
XML DTD in Figure 26.4. To require
that
an XML
document
be
checked
for
conformance
to a DTD, we
must
specify this in
the
declaration of
the
document.
For example, we could
change
the
first line in Figure 26.3 to

the
following:
<?xml
version="1.0"
standalone="no"?>
<!DOCTYPE
projects
SYSTEM
"proj.dtd">
When
the
value of
the
standalone
attribute
in an XML
document
is "no",
the
document
needs to be
checked
against a separate
DTD
document.
The
DTD file shown in
Figure
26.4 should be stored in
the

same file system as
the
XML
document,
and
should be
given
the
file
name
"proj
.
dtd".
Alernatively, we could include
the
DTD
document
text
at
the
beginning
of
the
XML
document
itself to allow
the
checking.
Although
XML DTD is quite adequate for specifying tree structures with required,

optional,
and
repeating elements, it has several limitations. First,
the
data
types in DTD
850
I
Chapter
26
XML
and
Internet Databases
are
not
very general. Second, DTD has its own special syntax
and
thus requires specialized
processors.
It would be advantageous to specify XMLschema documents using the syntax
rules of
XML itself so
that
the
same processors used for XMLdocuments could process
XML
schema
descriptions.
Third,
all DTD elements are always forced to follow

the
specified
ordering of
the
document,
so unordered elements are
not
permitted.
These
drawbacks led
to
the
development
of XML schema, a more general language for specifying
the
structure
and
elements of XMLdocuments.
26.3.2
XML
Schema
The
XML
schema
language is a standard for specifying
the
structure of
XML
documents. It
uses

the
same syntax rules as regular XML documents, so
that
the
same processors can be
used on
both.
To distinguish
the
two types of documents, we will use
the
term
XML
instance document or XML documentfor a regular
XML
document,
and
XML
schema
document
for a
document
that
specifies an
XML
schema. Figure 26.5 shows an
XML
schema
docu-
ment

corresponding
to
the
COMPANY
database
shown
in Figures 3.2
and
5.5. Although it is
unlikely
that
we would
want
to display
the
whole database as a single document, there
have
been
proposals to store
data
in
native
XML format as an alternative
to
storing the
data
in relational databases.
The
schema in Figure 26.5 would serve
the

purpose of
speci-
fying
the
structure of
the
COMPANY
database if it were stored in a
native
XML
system. We
dis-
cuss this topic further in
Section
26.4.
As
with
XML DTD, XML schema is based on
the
tree
data
model,
with
elements and
attributes as
the
main
structuring concepts. However, it borrows additional concepts
from
<7xml

version="l.O"
encoding="UTF-8" 7>
<xsd:schema xmlns:xsd='' /><xsd:annotation>
<xsd:documentation xml:lang="en">Company Schema (Element Approach) -
Prepared
by Babak
Hojabri</xsd:documentation>
</xsd:annotation>
<xsd:element name="company">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="department" type="Department" minOccurs="O"
maxOccurs="unbounded"
/>
<xsd:element name="employee" type="Employee" minOccurs="O"
maxOccurs="unbounded">
<xsd:unique name="dependentNameUnique">
<xsd:selector
xpath="employeeDependent" />
<xsd:field
xpath="dependentName" />
</xsd:unique>
</xsd:element>
<xsd:element name="project"
type="Project"
minOccurs="O"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
FIGURE

26.5
An
XML
schema
file called
company.
26.3
XML
Documents,
DTD,
and
XML
Schema
I 851
<xsd:unique name:"departmentNameUnique">
<xsd:selector
xpath:"department" />
<xsd:field
xpath:"departmentName" />
</xsd:unique>
<xsd:unique name:"projectNameUnique">
<xsd:selector
xpath:"project"
/>
<xsd:field
xpath:"projectName" />
</xsd:unique>
<xsd:key name:"projectNumberKey">
<xsd:selector
xpath:"project"

/>
<xsd:field
xpath:"projectNumber" />
</xsd:key>
<xsd:key
name:"departmentNumberKey">
<xsd:selector
xpath:"department" />
<xsd:field
xpath:"departmentNumber" />
</xsd:key>
<xsd:key
name:"employeeSSNKey">
<xsd:selector
xpath:"employee" />
<xsd:field
xpath:"employeeSSN" />
</xsd:key>
<xsd:keyref
name:"departmentManagerSSNKeyRef" refer:"employeeSSNKey">
<xsd:selector
xpath:"department" />
<xsd:field
xpath:"departmentManagerSSN" />
</xsd:keyref>
<xsd:keyref
name:"employeeDepartmentNumberKeyRef"
refer:"departmentNumberKey">
<xsd:selector
xpath:"employee" />

<xsd:field
xpath:"employeeDepartmentNumber" />
</xsd:keyref>
<xsd:keyref
name:"employeeSupervisorSSNKeyRef" refer:"employeeSSNKey">
<xsd:selector
xpath:"employee" />
<xsd:field
xpath:"employeeSupervisorSSN" />
</xsd:keyref>
<xsd:keyref
name:"projectDepartmentNumberKeyRef"
refer:"departmentNumberKey">
<xsd:selector
xpath:"project"
/>
<xsd:field
xpath:"projectDepartmentNumber" />
</xsd:keyref>
<xsd:keyref
name:"projectWorkerSSNKeyRef" refer:"employeeSSNKey">
<xsd:selector
xpath:"project/projectWorker" />
<xsd:field
xpath:"SSN" />
</xsd:keyref>
<xsd:keyref
name:"employeeWorksOnProjectNumberKeyRef"
refer:"projectNumberKey">
<xsd:selector

xpath:"employee/employeeWorksOn" />
<xsd:field
xpath:"projectNumber" />
</xsd:keyref>
</xsd:element>
FIGURE
26.5(CONTINUED)
An
XML
schema
file called. company.
852
I
Chapter
26
XML
and
Internet
Databases
<xsd:complexType name="Department">
<xsd:sequence>
<xsd:element name="departmentName"
type="xsd:string"
/>
<xsd:element name="departmentNumber"
type="xsd:string"
/>
<xsd:element name="departmentManagerSSN"
type="xsd:string"
/>

<xsd:element name="departmentManagerStartDate"
type="xsd:date"
/>
<xsd:element name="departmentLocation"
type="xsd:string"
m;nOccurs="O" maxOccurs="unbounded"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Employee">
<xsd:sequence>
<xsd:element name="employeeName" type="Name" />
<xsd:element name="employeeSSN"
type="xsd:string"
/>
<xsd:element name="employeeSex"
type="xsd:string"
/>
<xsd:element name="employeeSalary"
type="xsd:unsignedlnt"
/>
<xsd:element name="employeeBirthDate"
type="xsd:date"
/>
<xsd:element name="employeeDepartmentNumber"
type="xsd:string"
/>
<xsd:element name="employeeSupervisorSSN"
type="xsd:string"
/>

<xsd:element name="employeeAddress" type="Address" />
<xsd:element name="employeeWorksOn" type="WorksOn" m;nOccurs="I"
maxOccurs="unbounded" />
<xsd:element name="employeeDependent" type="Dependent" m;nOccurs="O"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Project">
<xsd:sequence>
<xsd:element name="projectName"
type="xsd:string"
/>
<xsd:element name="projectNumber"
type="xsd:string"
/>
<xsd:element name="projectLocat;on"
type="xsd:string"
/>
<xsd:element name="projectDepartmentNumber"
type="xsd:string"
/>
<xsd:element name="projectWorker" type="Worker" m;nOccurs="I"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Dependent">
<xsd:sequence>
<xsd:element name="dependentName"
type="xsd:string"
/>

<xsd:element name="dependentSex"
type="xsd:string"
/>
<xsd:element name="dependentBirthDate"
type="xsd:date"
/>
<xsd:element name="dependentRelationship"
type="xsd:string"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Address">
<xsd:sequence>
<xsd:element name="number"
type="xsd:string"
/>
<xsd:element
name="street"
type="xsd:string"
/>
<xsd:element name="city"
type="xsd:string"
/>
<xsd:element name="state"
type="xsd:string"
/>
</xsd:sequence>
FIGURE
26.5(CONTINUED)
An

XML
schema
file
called
company.
26.3
XML
Documents,
DTD,
and
XML
Schema
I
853
</xsd:complexType>
<xsd:complexType name="Name">
<xsd:sequence>
<xsd:element
name="firstName"
type="xsd:string"
/>
<xsd:element
name="middleName"
type="xsd:string"
/>
<xsd:element
name="lastName"
type="xsd:string"
/>
</xsd:sequence>

</xsd:complexType>
<xsd:complexType name="Worker">
<xsd:sequence>
<xsd:element
name="SSN"
type="xsd:string"
/>
<xsd:element
name="hours"
type="xsd:float"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="WorksOn">
<xsd:sequence>
<xsd:element
name="projectNumber"
type="xsd:string"
/>
<xsd:element
name="hours"
type="xsd:float"
/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
FIGURE
26.5(CONTINUED)
An XML
schema

file
called
company.
database
and
object
models, such as keys, references,
and
identifiers. We here describe
the
features of
XML
schema in a step-by-step manner, referring to
the
example
XML
schema
document
of Figure 26.5 for illustration. We introduce
and
describe some of
the
schema
concepts in
the
order in
which
they are used in Figure 26.5.
1. Schema descriptions and
XML

namespaces:
It
is necessary
to
identify
the
specific set
ofXML
schema
language elements (tags) being used by specifying a file stored at a
Web
site location.
The
second line in Figure 26.5 specifies
the
file used in this
example,
which
is />This
is
the
most
commonly
used standard for
XML
schema
commands. Each such definition is
called an
XML
namespace, because it defines

the
set of commands (names)
that
can
be used.
The
file
name
is assigned to
the
variable xsd
(XML
schema descrip-
tion)
using
the
attribute
xml
ns
(XML
narnespace},
and
this variable is used as a
prefix to all
XML
schema
commands (tag names). For example, in Figure 26.5,
when
we write
xsd:

el
ement or
xsd:
sequence,
we are referring
to
the
definitions
of
the
element
and
sequence
tags as defined in
the
file
'' />200l/XMLSchema".
2. Annotations, documentation, and language used:
The
next
couple of lines in Figure
26.5 illustrate
the
XML
schema elements (tags)
xsd:
annotati
on
and
xsd:

documentati
on,
which
are used for providing
comments
and
other
descrip-
tions in
the
XML
document.
The
attribute
xml:1ang of
the
xsd:
documentati
on
element
specifies
the
language being used, where "en" stands for
the
English
language.
854
I Chapter 26
XML
and

Internet Databases
3. Elements and
types:
Next,
we specify
the
root element of
our
XML schema. In
XML
schema,
the
name
attribute
of
the
xsd:
element
tag specifies
the
element
name,
which
is called company for
the
root
element
in
our
example

(see Figure 26.5).
The
structure of
the
company
root
element
can
then
be specified,
which
in our
example
is
xsd:
complexType.
This
is
further
specified to be a sequence of depart-
ments,
employees,
and
projects using
the
xsd:
sequence
structure
of
XML

schema.
It
is
important
to
note
here
that
this is
not
the
only way to specify
an
XML
schema
for
the
COMPANY
database. We will discuss
other
options
in
Section
26.4.
4.
First-level
elements in the
COMPANY
database:
Next,

we specify
the
three
first-level ele-
ments
under
the
company
root
element
in Figure 26.5.
These
elements
are named
employee,
department,
and
proj
ect,
and
each
is specified in an
xsd:
element
tag.
Notice
that
if a tag has
only
attributes

and
no
further
subelements
or data within
it, it
can
be
ended
with
the
backslash symbol
C/»
directly instead of having a
separate
matching
end
tag.
These
are called
empty
elements;
examples are the
xsd:
el
ement
elements
named
department
and

project
in Figure 26.5.
5. Specifying element typeand minimum andmaximum
occurrences:
In
XML
schema, the
attributes
type,
minOccu
rs
,
and
maxOccu
rs
in
the
xsd:
element
tag specify the
type
and
multiplicity of
each
element
in any
document
that
conforms to the
schema

specifications. If we specify a
type
attribute
in
an
xsd:
element,
the
struc-
ture
of
the
element
must
be described separately, typically using the
xsd :comp
1exType
element
of XML schema.
This
is illustrated by
the
employee,
department,
and
project
elements
in Figure 26.5.
On
the

other
hand,
if no type
attribute
is specified,
the
element
structure
can
be defined directly following the
tag, as illustrated by
the
company
root
element
in Figure 26.5.
The
mi
nOccurs and
maxOccurs tags are used for specifying lower
and
upper
bounds
on
the
number of
occurrences of
an
element
in any

document
that
conforms to
the
schema
specifi-
cations. If
they
are
not
specified,
the
default is exactly
one
occurrence. These
serve a similar role
to
the
", +,
and?
symbols of XMLDTD,
and
to
the
(min, max)
constraints
of
the
ER
model

(see
Section
3.7.4).
6. Specifying keys: In XMLschema, it is possible to specify
constraints
that
correspond
to
unique
and
primary key
constraints
in a
relational
database (see
Section
5.2.2),
as well as foreign keys (or referential integrity)
constraints
(see
Section
5.2,4).
The
xsd:
uni que tag specifies
elements
that
correspond to
unique
attributes in a

relational
database
that
are
not
primary keys. We
can
give
each
such uniqueness
constraint
a
name,
and
we must specify
xsd:
sel
ector
and
xsd:
fi
e1d tags for it
to identify
the
element
type
that
contains
the
unique

element
and
the
element
name
within
it
that
is
unique
via
the
xpath
attribute.
This
is illustrated by the
departmentNameUni que
and
proj
ectNameUni que
elements
in Figure 26.5. For
specifying
primary
keys,
the
tag
xsd:
key is used instead of
xsd:

uni que, as
illus-
trated
by
the
projectNumberKey, departmentNumberKey,
and
employeeSSNKey
elements
in Figure 26.5. For specifying
foreign
keys,
the
tag
xsd:
keyref
is
used,
as illustrated by
the
six
xsd:
key
ref
elements
in Figure 26.5.
When
specifying a
foreign key,
the

attribute
refer
of
the
xsd:
key
ref
tag specifies
the
referenced
primary key, whereas
the
tags
xsd:
se
1
ector
and
xsd:
fi
e1d specify
the
referenc-
ing
element
type
and
foreign key (see Figure 26.5).
26.4
XML

Documents and Databases I 855
7. Specifying the structures of complex elements via complex types:
The
next
part of our
example specifies
the
structures of
the
complex elements Department, Employee,
Project,
and
Dependent, using the tag xsd:complexType (see Figure 26.5). We
specify
each
of these as a sequence of subelements corresponding to
the
database
attributes of
each
entity type (see Figures 3.2
and
5.7) by using
the
xsd:
sequence
and
xsd:
element
tags of

XML
schema. Each
element
is given a
name
and type via
the
attributes name
and
type
of
xsd:
element.
We
can
also specify
mi
nOccurs and
maxOccu
rs attributes if we
need
to change
the
default of exactly
one
occurrence.
For (optional) database attributes where null is allowed, we need to specify
mi
nOccurs = 0, whereas for multivalued database attributes we
need

to specify
maxOccurs
= "unbounded" on
the
corresponding element.
Notice
that
if we were
not
going to specify any key constraints, we could have embedded
the
subelernents
within
the
parent
element
definitions directly without having to specify complex
types. However,
when
unique, primary key, and foreign key constraints need to be
specified, we must define complex types to specify
the
element structures.
8. Composite (compound) attributes: Composite attributes from Figure 3.2 are also
specified as complex types in Figure 26.5, as illustrated by
the
Address,
Name,
Worker,
and

WorksOn
complex types.
These
could
have
been
directly embedded
within
their
parent
elements.
This
example illustrates some of
the
main
features of
XML
schema.
There
are
other
features,
but
they are beyond
the
scope of our presentation. In
the
next
section, we discuss
the

different approaches to creating XML
documents
from relational databases
and
storing
XMLdocuments.
26.4
XML
DOCUMENTS
AND
DATABASES
We now discuss
how
various types of
XML
documents
can
be stored
and
retrieved.
Section
26.4.1 gives an overview of
the
various approaches for storing
XML
documents.
Section
26.4.2 discusses
one
of these approaches, in

which
data-centric XML documents are
extracted
from existing databases, in more detail. In particular, we show how tree struc-
tured
documents
can
be created from graph-structured databases.
Section
26.4.3 discusses
the
problem of cycles
and
how it
can
be dealt with.
26.4.1 Approaches
to
Storing
XML
Documents
Several approaches to organizing
the
contents
of XMLdocuments
to
facilitate
their
subse-
quent

querying
and
retrieval
have
been
proposed.
The
following are
the
most
common
approaches:
1. Using a
DBMS
to store the documents as text: A relational or object
DBMS
can
be
used to store whole
XML documents as
text
fields
within
the
DBMS
records or
objects.
This
approach
can

be used if
the
DBMS
has a special module for
document
processing,
and
would work for storing schemaless
and
document-centric
XML
856
IChapter 26
XML
and
Internet Databases
documents.
The
keyword indexing functions of
the
document
processing module
(see
Chapter
22)
can
be used to index
and
speed up search and retrieval of the
documents.

2. Usinga
DBMS
to
store
the documentcontentsas data elements:
This
approach would
work for storing a collection of documents
that
follow a specific
XML
DTD or
XML
schema. Because all
the
documents have
the
same structure,
one
can
design a
relational (or object) database to store
the
leaf-level data elements within the
XML documents.
This
approach would require mapping algorithms to design a
database schema
that
is compatible with

the
XML
document
structure as specified
in
the
XML schema or DTD
and
to recreate
the
XML documents from
the
stored
data.
These
algorithms
can
be implemented
either
as an internal
DBMS
module or
as separate middleware
that
is
not
part
of
the
DBMS.

3.
Designing
a
specialized
system for
storing
native XML
data:
A new type of database
system based on
the
hierarchical (tree) model could be designed and
imple-
mented.
The
system would include specialized indexing
and
querying techniques,
and would work for all types of
XML documents. It could also include data com-
pression techniques to reduce
the
size of
the
documents for storage.
4. Creatingor
publishing
customized
XML
documents from preexisting

relational
databases:
Because there are enormous amounts
of
data already stored in relational data-
bases, parts of this
data
may
need
to be formatted as documents for exchanging or
displaying over
the
Web.
This
approach would use a separate middleware
software
layer
to
handle
the
conversions needed between
the
XML
documents and the
rela-
tional database.
All
four of these approaches have received considerable
attention
over the past

few
years. We focus on approach 4 in
the
next
subsection, because it gives a good conceptual
understanding
of
the
differences between
the
XML
tree data model
and
the
traditional
database models based
on
flat files (relational model) and graph representations
(ER
model).
26.4.2 Extracting
XML
Documents from Relational
Databases
This
section discusses
the
representational issues
that
arise

when
converting data froma
database system
into
XML documents. As we have discussed, XML uses a hierarchical
(tree) model to represent documents.
The
database systems with
the
most widespread
use
follow
the
flat relational
data
model.
When
we add referential integrity constraints, a
relational schema
can
be considered to be a graph structure (for example, see Figure 5.7).
Similarly,
the
ER model represents
data
using graphlike structures (for example, see
Figure
3.2). We saw in
Chapter
7

that
there are straightforward mappings between the
ER
and
relational models, so we
can
conceptually represent a relational database schema
using
the
corresponding ER schema.
Although
we will use
the
ER model in our discussion and
examples to clarify
the
conceptual differences between tree and graph models, the
same
issues apply to converting relational
data
to
XML.

×