E
1
6.(a) Natural join operations are associative:
(E
1 E
2) E
3 = E
1 (E
2 E
3)
(b) Theta joins are associative in the following manner:
(E
1 1
E
2
)
2 3
E
3
= E
1 1 3
(E
2
2
E
3
)
where
2 involves attributes from only E
2 and E
3.
E
1 E
2 = E
2 E
1
9.(set difference is not commutative).
10.Set union and intersection are associative.
(E
1 E
2) E
3 = E
1 (E
2 E
3)
(E
1
E
2
) E
3
= E
1
(E
2
E
3
)
9.The selection operation distributes over , and –.
(E
1 – E
2) =
(E
1) –
(E
2)
and similarly for and in place of –
Also:
(E
1 – E
2) =
(E
1) – E
2
and similarly for in place of –, but not for
12.The projection operation distributes over union
L(E
1 E
2) = (
L(E
1)) (
L(E
2))
((instructor teaches)
course_id, title
(course)))
Second form provides an opportunity to apply the “perform
selections early” rule, resulting in the subexpression
dept_name = “Music” (instructor)
year = 2009
(teaches)
where P
1
and exists (select *
from L
2
where P
2
)
To: create table t
1 as
select distinct V
from L
2
where P
2
1
select …
from L
1,
t
1
where P
1
and P
2
2
P
2
1
contains predicates in P
2
that do not involve any correlation
variables
P
2
2
reintroduces predicates involving correlation variables, with
relations renamed appropriately
V contains all attributes used in predicates with correlation variables
select name
from instructor, t
1
where t
1.ID = instructor.ID
The process of replacing a nested query by a query with a join (possibly
with a temporary relation) is called decorrelation.
Decorrelation is more complicated when
the nested subquery uses aggregation, or
when the result of the nested subquery is used to test for equality, or
when the condition linking the nested subquery to the other
query is not exists,
and so on.