Database Reference
In-Depth Information
we denote
V
M
=
V
1
⊕
V
2
as the merging of
V
1
and
V
2
when the following
properties hold:
1.
C
1
(
V
M
)
≡
V
1
and
C
2
(
V
M
)
≡
V
2
for some
SQL
fragments
C
1
(
V
M
)
and
.
2. If the view-matching algorithm matches
V
1
or
V
2
for a subquery
q
,it
also matches
V
M
for
q
(a view-matching algorithm matches a view
V
for a subquery
q
if
q
can be answered from
V
).
3.
V
M
cannot be further restricted with additional predicates and continue
to satisfy the previous properties.
C
2
(
V
M
)
8.2.2.1
Case 1: No Grouping Columns
Consider merging
V
1
=
(
S
1
,
T
,
J
1
,
R
1
,
Z
1
,
∅
)
and
V
2
=
(
S
2
,
T
,
J
2
,
R
2
,
Z
2
,
∅
)
.If
the merging language were expressive enough, we could define
V
1
⊕
V
2
as
SELECT
S
1
∪
S
2
FROM
T
WHERE (
J
1
AND
R
1
AND
Z
1
)OR(
J
2
AND
R
2
AND
Z
2
)
which satisfies properties 1 and 3. Since
V
1
⊕
V
2
has to be defined in terms
of the view definition language, we have no option but to consider the whole
predicate in the
WHERE
clause as a single conjunctive residual predicate
Z
. The
problem is that now the merged view would not be matched whenever
V
1
or
V
2
are matched (property 2) because of the simple procedures used during
view matching with respect to residual predicates. Instead, we rewrite the
“minimal” predicate as follows:
(
J
1
∧
R
1
∧
Z
1
)
∨
(
J
2
∧
R
2
∧
Z
2
)
≡
(
J
1
∨
J
2
)
∧
(
R
1
∨
R
2
)
∧
(
Z
1
∨
Z
2
)
∧
C
where
C
is the conjunction of all crossed disjuncts (
(
J
1
∨
R
2
)
∧
(
R
1
∨
Z
2
)
∧
...
). The idea is to relax this expression until we obtain a predicate that
can be written in the view definition language and matches any candidate
query that is matched by the original views. Although this procedure seems
to introduce a lot of redundancy and to result in larger views, in real-world
scenarios this is not usually the case.
We first relax the previous expression by removing the conjunct
C
. The
reason is that it leaves us with three conjuncts (
J
1
∨
Z
2
),
which we next map into the three groups of predicates in the view definition
language. First, consider
J
1
∨
J
2
,
R
1
∨
R
2
, and
Z
1
∨
J
2
and recall that each
J
i
is a conjunct of equi-
join predicates. We cannot simply use
J
1
∨
J
2
in the resulting view because
the language specifies that this must be a conjunction of simple equi-joins
(i.e., no disjunctions are allowed). We rewrite
i
,
j
(
J
2
)
J
1
J
1
J
1
J
2
J
2
J
2
J
1
∨
J
1
∨
J
2
≡
(
∧
∧
∧
...)
∨
(
∧
∧
∧
...)
≡
Search WWH ::
Custom Search