Database Reference
In-Depth Information
merging of two views as described in this section is as follows:
V 1 =(
S 1
, T
, J 1
, R 1
, Z 1
, )
V 2 =(
S 2
, T
, J 2
, R 2
, Z 2
, )
, R 1 R 2
V 1
V 2 =(
S 1
S 2
, T
, J 1
J 2
, Z 1
Z 2
,
)
{
required
columns
}
We note that all the previous transformations take into account column
equivalences. If both input views contain a join predicate R
.
x
=
S
.
y , then the
.
<
.
<
range predicates R
10 are considered to be the same.
The following example illustrates the ideas described in this section. If V 1
and V 2 are the following materialized views:
x
10 and S
y
V 1 = SELECT x, y
V 2 = SELECT y, z
FROM R, S
FROM R, S
WHERE R.x = S.y AND
WHERE R.x = S.y AND
10 < R.a < 20 AND
15 < R.a < 50 AND
R.b < 10 AND
R.b > 5 AND R.c > 5 AND
R.x + S.d < 8
S.y + S.d < 8 AND
R.d * R.d = 2
the merge of V 1 and V 2 is
V 1
V 2 = SELECT x, y, z, a, b, c, d
FROM R, S
WHERE R.x = S.y AND
10 < R.a < 50 AND
R.x + S.d < 8
8.2.2.2
Case 2: Grouping Columns
We now consider the case of merging views that involve group-by clauses.
Grouping operators partition the input relation into disjoint subsets and
return a representative tuple and some aggregates from each group. Con-
ceptually, we see a GROUP BY operator as a postprocessing step after the
evaluation of the SPJ subquery. Consider the merged view obtained when
the grouping columns are eliminated from the input views. If the group-
ing columns in the input views are different, each view partitions the in-
put relation in different ways. We then need to partition the merged view
in the coarsest way that still allows us to recreate each input view. For
that purpose, the set of grouping columns in the merged view must be the
union of the grouping columns of the input views. Additionally, each column
that is added to the select clause due to predicate relaxation in the input
views must also be added as a grouping column. Note that we need to han-
dle a special case properly. If one of the input views contains no group-by
Search WWH ::

Custom Search