资源描述:
《关系模式的无损分解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1、已知关系模式R(ABC),F={A→C,B→C},求F+。 可以直接通过自反律、增广律、传递律加以推广:F+={φ→φ,A→φ,B→φ,C→φ,A→C,B→C,AB→φ,AB→A,AB→B,AB→C,AB→BC,AB→AB,AB→ABC,BC→φ,BC→C,BC→B,BC→BC,AC→φ,AC→C,AC→A,AC→AC,ABC→φ,ABC→A,ABC→B,ABC→C,ABC→BC,ABC→AB,ABC→ABC}4.6试分析下列分解是否具有无损联接和保持函数依赖的特点:(1)设R(ABC),F1={A→B}在R上成立,ρ1={AB,AC}。首先,检查是否具有无损联接特点:第
2、1种解法--算法4.2: ABCABa1a2b13ACa1b22a3ABCa1a2b13a1a2a3(1)构造表(2)根据A→B进行处理结果第二行全是a行,因此分解是无损联接分解。第2种解法:(定理4.8)设R1=AB,R2=AC R1∩R2=A R2-R1=B ∵A→B,∴该分解是无损联接分解。然后,检查分解是否保持函数依赖 πR1(F1)={A→B,以及按自反率推出的一些函数依赖} πR2(F1)={按自反率推出的一些函数依赖} F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。2、设R(ABC),F2={A→C,B→C}在R上成立,ρ2={AB,AC}首先
3、,检查是否具有无损联接特点:第1种解法(略)第2种解法:(定理4.8)设R1=AB,R2=AC R1∩R2=A R2-R1=C ∵A→C,∴该分解是无损联接分解。然后,检查分解是否保持函数依赖πR1(F2)={按自反率推出的一些函数依赖}πR2(F2)={A→C,以及按自反率推出的一些函数依赖}∵F1中的B→C没有被蕴涵,所以该分解没有保持函数依赖。3、设R(ABC),F3={A→B},在R上成立,ρ3={AB,BC}.首先,检查是否具有无损联接特点:第1种解法: ABCABa1a2b13BCb21a2a3ABCa1a2a3a1b22a3(1)构造表(2)根据A→B进行处
4、理没有一行全是a行。因此这个分解不具有无损联接特性。 第2种解法:(定理4.8) 设R1=AB,R2=BC R1∩R2=B R2-R1=C,R1-R2=A ∵B→C,B→A不在F3中∴该分解不具有无损联接特性。然后,检查分解是否保持函数依赖 πR1(F3)={A→B,以及按自反率推出的一些函数依赖} πR2(F3)={按自反率推出的一些函数依赖} F1被πR1(F3)所蕴涵,所以该分解保持函数依赖。4、设R=ABCD,R上的函数依赖集F={A→B,B→C,A→D,D→C},R的一个分解ρ={AB,AC,AD},求:(1)F在ρ的每个模式上的投影。(2)ρ相对于F
5、是无损联接分解吗?(3)ρ保持依赖吗?(2) ABCDABa1a2b13b14ACa1b22a3b24ADa1b32b33a4ABCDa1a2a3a4a1a2a3a4a1a2a3a4(1)构造表(2)根据A→B,B→C,A→D,D→C进行处理每一行都是a,ρ相对于F是无损联接分解。4.8设R=ABCD,R上的F={A→C,D→C,BD→A},试证明ρ={AB,ACD,BCD}相对于F不是无损联接分解。根据算法4.2 ABCDABa1a2b13b14ACDa1b22a3a4BCDb31a2a3a4ABCDa1a2a3b14a1b22a3a4b31a2a3a4(1)构造表(2)根据
6、A→C,D→C,BD→A进行处理没有一行都是a,所以,ρ相对于F不是无损联接分解。5.2对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询:(1)检索LIU老师所授课程的课程号和课程名。 SELECTC#,CNAME FROMC WHERETEACHER=‘LIU’(2)检索年龄大于23岁的男学生的学号和姓名。 SELECTS#,SNAME FROMS WHERE(AGE>23)AND(SEX=‘M’
7、)(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECTSNAME FROMS WHERESEX=‘F’ANDS#IN (SELECTS# FROMSC WHEREC#IN (SELECTC# FROMC WHERETEACHER=‘LIU’)NOTICE:有多种写法,比如联接查询写法: SELECTSNAME FROMS,SC,C WHERESEX=‘F’ANDSC.S#=S.S# ANDSC.C#=