Database Reference
In-Depth Information
FLIGHT(src,dest,airl,dep)
−→
∃
f
#
∃
arr
(
ROUTES(f#,src,dest)
∧
INFO FLIGHT(f#,dep,arr,airl)
)
FLIGHT(city,dest,airl,dep)
∧
GEO(city,country,popul)
−→
∃
phone SERVES(airl,city,country,phone)
∧
−→
FLIGHT(src,city,airl,dep)
GEO(city,country,popul)
∃
phone SERVES(airl,city,country,phone)
.
The source-to-target dependencies guide the construction of target instances. For exam-
ple, given the source instance
S
=
{
FLIGHT
(
Paris
,
Santiago
,
AirFrance
,
2320)
}
,
one possible target instance - a solution - is the instance
T
below:
{
ROUTES
(
⊥
1
,
Paris
,
Santiago
)
,
INFO FLIGHT
(
⊥
1
,
2320
,
⊥
2
,
AirFrance
)
}
,
where
⊥
1
,
⊥
2
are null values.
To reiterate, in data exchange we have source and target schemas, and constraints that
relate them. These constitute relational schema mappings defined below.
Definition 4.2 (Relational mappings) A
relational mapping
M
is a tuple (R
s
,
R
t
,
Σ
st
,
Σ
t
),
where:
•
R
s
and R
t
are relational schemas - R
s
is called the
source
schema, R
t
is called the
target
schema;
•
Σ
st
is a finite set of
source-to-target
dependencies (i.e., dependencies over the relations
in R
s
and R
t
);
•
Σ
t
is a finite set of
target
dependencies (i.e., dependencies over R
t
).
If the set
Σ
t
is empty, i.e., there are no target dependencies, we write
M
=(R
s
,
R
t
,
Σ
st
).
We always assume that R
s
and R
t
do not have any relation names in common. If both
use the same relation name
R
, we simply rename
R
as
R
in the target schema.
The intuition behind the different components of these mappings is as follows:
•
Source-to-target dependencies in
Σ
st
are a tool for specifying conditions on the source
that entail a condition that must be satisfied by the target. Thinking operationally, one
can view them as a tool for specifying how source data gets translated into target data.
•
The translated data must satisfy usual database constraints. This is represented by means
of the target dependencies in
Σ
t
.
Source instances - that is, instances of R
s
- are assumed to take values from the domain
C
ONST
, usually referred to as constants. On the other hand, target instances - that is,
instances of R
t
- may use both constants from C
ONST
and null values, or nulls from the set