首页 > 试题

象集

更新时间:2022-12-03 11:23:54 阅读: 评论:0

冬款卫衣-什么化


2022年12月3日发(作者:新年第一天)

【数据库原理】关系代数篇——除法讲解

陈宇超编辑总结:

除法运算的一般形式示意图

如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理

关系R和关系S拥有共同的属性B、C,R÷S得到的属性值就是关系R包含而关

系S不包含的属性,即A属性

在R关系中A属性的值可以取{a1,a2,a3,a4}

a1值对应的象集为{(b1,c2),(b2,c1),(b2,c3)}

a2值对应的象集为{(b3,c7),(b2,c3)}

a3值对应的象集为{(b4,c6)}

a4值对应的象集为{(b6,c6)}

关系S在B、C上的投影为{(b1,c2),(b2,c1),(b2,c3)}

只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中

所以R÷S为

A

a1

【例题一】为了更好的理解除法的实际作用,请看下面的例题

设有教学数据库有3个关系(以下四小问均用除法的思想解决)

学生信息关系student(sno,sname,age,x)

学生选课关系sc(sno,cno,score)

学校课程关系cour(cno,cname)

Student表

snosnameagex

S001

陈晓

16

S002

周倩

21

S003

华南

19

S004

曹匀

21

S005

郑威

20

Cour表

cnocname

C001

计算机科学

C002

诗歌鉴赏

C003

资本论

SC表

snocnoscore

S001C00188

S001C00295

S001C00399

S002C00197

S002C00384

S003C00269

S005C00277

S005C00398

SQL语言中没有全称量词,具体实现时可以把带有全称量词的谓词转换为等

价的带有存在量词的谓词。

解决这类的除法问题一般采用双嵌套notexists

解决所谓forall的问题。

(1)检索所学课程包含了C002课程的学生学号

解关系代数表达式:∏sno(sc÷∏cno(σcno=’C002’(cour))

Sql语句

从略

(2)求至少选择了C001和C003两门课程的学生学号

解关系代数表达式:∏sno(sc÷∏cno(σcno=’C001’orcno=’C003’(cour))

Sql语句

lectdistinctsnofromscAwherenotexists

(

lect*fromcourBwherecnoin('C002','C003')and

notexists

(

lect*==

)

)

也可以采用自连接

from(lect*fromscwherecno='C001')ass1,

(lect*fromscwherecno='C003')ass2

=

(3)求至少学习了学生S003所学课程的学生学号

解关系代数表达式:∏sno(sc÷∏cno(σsno=’S003’(sc))

lectdistinctsnofromscAwherenotexists

(

lect*fromscBwheresno='S003'andnotexists

(

lect*==

)

)

(4)求选择了全部课程的学生的学号

解此例的等价自然语义是,输出这样的学号,不存在某门课程在他的选课记录

里没有选这门课

关系代数表达式:∏sno(sc÷∏cno(cour))

Sql语句

lectdistinctsnofromscAwherenotexists

(

lectcnofromcourBwherenotexists

(

lect*=

=

)

)

(5)求选择了全部课程的学生的学号和姓名

解关系代数表达式:∏sno,sname((student∞sc)÷∏cno(cour))

Sql语句

lectsno,snamefromstudentAwherenotexists

(

lectcnofromcourBwherenotexists

(

lect*=

=

)

)

以上小问用groupby结合count语句也是可以实现的,也更好理解一

些。

例如

求选择了全部课程的学生学号

SELECTsnoFROM(SELECTCOUNT(*)cnt,Sno

FROMSC

GROUPBYsno)T

WHEREcnt>=(SELECTCOUNT(Cno)

FROMCOURSE)

求至少选择了C002和C003两门课程的学生学号

lectsnofromscwherecnoin('C002','C003')groupby

snohavingCOUNT(cno)=2

但该方法对于一个学生多次选修一门课程的情况无法处理,需要对其

中的SC关系用distinct进行一定预处理,所以groupby+count有

一定的局限性

本文发布于:2022-12-03 11:23:54,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/44085.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:茶壶英文
下一篇:带小数
标签:象集
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图