3.7 考虑SQL查询
select distinct p.a1
from p, r1, r2
where p.a1 = r1.a1 or p.a1 = r2.a1;
在什么条件下这个查询选择的p.a1值要么在r1中,要么在r2中?仔细考察r1或r2可能为空的情况。
个人觉得
1. r1和r2之间不存在r1.a1=r2.a1的情况,即r1和r2中a1的集合不存在交集的情况;
2. p的a1属性集合值必须是r1中的a1的属性集合的子集或者是r2中的a1的属性集合的子集;
满足以上两个条件应该就可以了。