收藏 分销(赏)

关系模式的无损分解.doc

上传人:pc****0 文档编号:7204070 上传时间:2024-12-27 格式:DOC 页数:6 大小:70.50KB 下载积分:10 金币
下载 相关 举报
关系模式的无损分解.doc_第1页
第1页 / 共6页
关系模式的无损分解.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
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}。 首先,检查是否具有无损联接特点: 第1种解法--算法4.2:   A B C AB a1 a2 b13 AC a1 b22 a3 A B C a1 a2 b13 a1 a2 a3 (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} 首先,检查是否具有无损联接特点: 第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种解法:   A B C AB a1 a2 b13 BC b21 a2 a3 A B C a1 a2 a3 a1 b22 a3 (1) 构造表 (2)根据A→B进行处理 没有一行全是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是无损联接分解吗?(3)ρ保持依赖吗? (2)   A B C D AB a1 a2 b13 b14 AC a1 b22 a3 b24 AD a1 b32 b33 a4 A B C D a1 a2 a3 a4 a1 a2 a3 a4 a1 a2 a3 a4 (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   A B C D AB a1 a2 b13 b14 ACD a1 b22 a3 a4 BCD b31 a2 a3 a4 A B C D a1 a2 a3 b14 a1 b22 a3 a4 b31 a2 a3 a4 (1) 构造表 (2)根据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老师所授课程的课程号和课程名。     SELECT C#,CNAME     FROM C     WHERE TEACHER=‘LIU’ (2)检索年龄大于23岁的男学生的学号和姓名。     SELECT S#,SNAME     FROM S     WHERE (AGE>23) AND (SEX=‘M’) (3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。     SELECT SNAME     FROM S     WHERE SEX=‘F’ AND S# IN      (SELECT S#      FROM SC      WHERE C# IN       (SELECT C#       FROM C       WHERE TEACHER=‘LIU’) NOTICE:有多种写法,比如联接查询写法:     SELECT SNAME     FROM S,SC,C     WHERE SEX=‘F’ AND SC.S#=S.S#     AND SC.C#=C.C#     AND TEACHER='LIU' 但上一种写法更好一些。 (4)检索WANG同学不学的课程的课程号。     SELECT C#     FROM C     WHERE C# NOT IN      (SELECT C#      FROM SC      WHERE S# IN       (SELECT S#       FROM S       WHERE SNAME='WANG')) (5)检索至少选修两门课程的学生学号。     SELECT DISTINCT X.SNO     FROM SC X,SC Y     WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO Notice:对表SC进行自连接,X,Y是SC的两个别名。 (6)检索全部学生都选修的课程的课程号与课程名。     SELECT C#,CNAME     FROM C     WHERE NOT EXISTS      (SELECT *      FROM S      WHERE S# NOT IN       (SELECT *       FROM SC       WHERE SC.C#=C.C#)) 要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。    其中,“不选这门课的同学”可以表示为: SELECT * FROM S WHERE S# NOT IN    (SELECT *        FROM SC          WHERE SC.C#=C.C#)   或者 SELECT * FROM S WHERE   NOT EXISTS    (SELECT *        FROM SC         WHERE S.S#=C.S# AND SC.C#=C.C# )          (7)检索选修课程包含LIU老师所授课的学生学号。          SELECT DISTINCT S#      FROM SC      WHERE C# IN       (SELECT C#       FROM C       WHERE TEACHER='LIU'))   
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服