关系模式的无损分解.doc_第1页
关系模式的无损分解.doc_第2页
关系模式的无损分解.doc_第3页
关系模式的无损分解.doc_第4页
关系模式的无损分解.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、已知关系模式R(ABC),F=AC,BC,求F+。 可以直接通过自反律、增广律、传递律加以推广: F+=,A,B,C,AC,BC,AB,ABA,ABB,ABC,ABBC,ABAB,ABABC,BC,BCC,BCB,BCBC,AC,ACC,ACA,ACAC,ABC,ABCA,ABCB,ABCC,ABCBC,ABCAB,ABCABC4.6 试分析下列分解是否具有无损联接和保持函数依赖的特点: (1)设R(ABC),F1=AB 在R上成立,1=AB,AC。 首先,检查是否具有无损联接特点: 第1种解法-算法4.2: ABCABa1a2b13ACa1b22a3ABCa1a2b13a1a2a3(1) 构造表(2)根据AB进行处理结果第二行全是a行,因此分解是无损联接分解。 第2种解法:(定理4.8) 设 R1=AB,R2=AC R1R2=A R2- R1=B AB,该分解是无损联接分解。 然后,检查分解是否保持函数依赖 R1(F1)=AB,以及按自反率推出的一些函数依赖 R2(F1)=按自反率推出的一些函数依赖 F1被R1(F1)所蕴涵,所以该分解保持函数依赖。 2、设R(ABC),F2=AC,BC在R上成立,2=AB,AC 首先,检查是否具有无损联接特点: 第1种解法(略) 第2种解法:(定理4.8) 设 R1=AB,R2=AC R1R2=A R2- R1=C AC,该分解是无损联接分解。 然后,检查分解是否保持函数依赖 R1(F2)=按自反率推出的一些函数依赖 R2(F2)=AC,以及按自反率推出的一些函数依赖 F1中的BC没有被蕴涵,所以该分解没有保持函数依赖。 3、设R(ABC),F3=AB,在R上成立,3=AB,BC. 首先,检查是否具有无损联接特点: 第1种解法: ABCABa1a2b13BCb21a2a3ABCa1a2a3a1b22a3(1) 构造表(2)根据AB进行处理没有一行全是a行。因此这个分解不具有无损联接特性。 第2种解法:(定理4.8) 设 R1=AB,R2=BC R1R2=B R2- R1=C,R1- R2=A BC,BA不在F3中 该分解不具有无损联接特性。 然后,检查分解是否保持函数依赖 R1(F3)=AB,以及按自反率推出的一些函数依赖 R2(F3)=按自反率推出的一些函数依赖 F1被R1(F3)所蕴涵,所以该分解保持函数依赖。 4、设R=ABCD,R上的函数依赖集F=AB,BC,AD,DC,R的一个分解=AB,AC,AD,求:(1)F在的每个模式上的投影。(2)相对于F是无损联接分解吗?(3)保持依赖吗? (2) ABCDABa1a2b13b14ACa1b22a3b24ADa1b32b33a4ABCDa1a2a3a4a1a2a3a4a1a2a3a4(1) 构造表(2)根据AB,BC,AD,DC进行处理每一行都是a,相对于F是无损联接分解。4.8 设R=ABCD,R上的F=AC,DC,BDA, 试证明=AB,ACD,BCD相对于F不是无损联接分解。 根据算法4.2 ABCDABa1a2b13b14ACDa1b22a3a4BCDb31a2a3a4ABCDa1a2a3b14a1b22a3a4b31a2a3a4(1) 构造表(2)根据AC,DC,BDA进行处理没有一行都是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 (AGE23) 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 FROMSC X,SC Y WHERE X.SNO=Y.SNO AND X.CNOY.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 SWHERE S# NOT IN (SELECT * FROM SC WHERE SC.C#=C.C#)或者SELECT *FROM SWHERE NOT EXISTS (SELECT * FROM SC WHERE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论