关系模型课后习题

更新时间:2024-05-29 19:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

关系模型课后习题 2.1 名词解释

(1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。

(2)关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。 关系模式不涉及到物理存储方面的描述,仅仅是对数据特性的描述。 (3)关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4)属性:实体的一个特征。在关系模型中,字段称为属性。

(5)域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6)元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7)超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 (8)候选键:不含有多余属性的超键称为候选键。

(9)主键:用户选作元组标识的一个候选键为主键。(单独出现,要先解释“候选键”)

(10)外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键, 如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。

(11)实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。 如果出现空值,那么主键值就起不了唯一标识元组的作用。

(12)参照完整性规则:这条规则要求“不引用不存在的实体”。 其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2的关系中, K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主键值。 这条规则在使用时有三点应注意: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可。 2)R1和R2也可以是同一个关系模式,表示了属性之间的联系。 3)外键值是否允许空应视具体问题而定。

(13)过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和“怎么干”。如Pascal和C语言等。

(14)非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。 各种关系查询语言均属于非过程性语言。

(15)无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。 如元组表达式{t|┐R(t)}表示所有不在关系R中的元组的集合,这是一个无限关系。

(16)无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。 如验证公式(u)(P(u))的真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 2.2 为什么关系中的元组没有先后顺序?

因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。

2.3 为什么关系中不允许有重复元组?

因为关系是一个元组的集合,而集合中的元素不允许重复出现,因此在关系模型中对关系作了限制, 关系中的元组不能重复,可以用键来标识唯一的元组。 2.4 关系与普通的表格、文件有什么区别?

关系是一种规范化了的二维表格,在关系模型中,对关系作了下列规范性限制: 1)关系中每一个属性值都是不可分解的。

2)关系中不允许出现相同的元组(没有重复元组)。

3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序。

4)元组中,属性在理论上也是无序的,但在使用时按习惯考虑列的顺序。 2.5 笛卡尔积、等值联接、自然联接三者之间有什么区别?

笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。 等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组;

自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。 当两个关系没有公共属性时,自然连接就转化我笛卡尔积。 2.6 设有关系R和S(如下:) 计算:

2.7 设有关系R和S(如下:)

计算:

2.8 如果R是二元关系,那么下列元组表达式的结果是什么? {t|(u)(R(t)∧R(u)∧(t[1]≠u[1]∨t[2]≠u[2]))}

这个表达式的意思是:从关系R中选择元组,该元组满足:第1分量值或第2分量值至少有一个不等于其他某元组。 由于R是二元关系,只有两个分量,由于没有重复元组,上述条件显然满足。 所以,这个表达式结果就是关系R。

2.9 假设R和S分别是三元和二元关系,试把表达式π1,5(σ2=4∨3=4(R×S))转换成等价的:(1)汉语查询句子;(2)元组表达式;(3)域表达式。 (1)汉语表达式:

从R×S关系中选择满足下列条件的元组:

第2分量(R中第2分量)与第4分量(S中第1分量)值相等,或第3分量(R中第3分量)与第4

分量(S中第1分量)值相等;并取第1列与第5列组成的新关系。

(2)元组表达式:{t|(u)(v)(R(u)∧S(v)∧(u[2]=v[1]∨u[3]=v[1])∧t[1]=u[1]∧t[2]=v[2])} (3)域表达式:{xv|(y)(z)(u)(R(xyz)∧S(uv)∧(y=u∨z=u))} 2.10 假设R和S都是二元关系,试把元组表达式{t|R(t)∧(u)(S(u)∧u[1]≠t[2])}转换成等价的: (1)汉语查询句子;(2)域表达式:(3)关系代数表达式。

(1)汉语表达式:选择R关系中元组第2分量值不等于S关系中某元组第1分量值的元组。 (2)域表达式:{xy|(u) (v)(R(xy)∧S(uv)∧(u≠y))} (3)关系代数表达式:π1,2(σ2≠3(R×S))

2.11 试把域表达式{ab|R(ab)∧R(ba)}转换成等价的: (1)汉语查询句子;(2)关系代数表达式;(3)元组表达式。

(1)汉语查询句子:选择R中元组第1分量值与第2分量值互换后仍存在于R中的元组。 (2)关系代数表达式:π1,2(σ1=4∧2=3(R×R));

(3)元组表达式:{t|(u)(R(t)∧R(u)∧t[1]=u[2]∧t[2]=u[1])}

2.12 设有两个关系R(A,B,C)和S(D,E,F),试把下列关系代数表达式转换成等价的元组表达式: (1)πA(R);(2)σB='17'(R);(3)R×S;(4)πA,F(σC=D(R×S)) (1){t|(u)(R(u)∧t[1]=u[1])} (2){t|R(t)∧t[2]='17')}

(3){t|(u)(v)(R(u)∧S(v)∧t[1]=u[1]∧t[2]=u[2]∧t[3]=u[3]∧t[4]=v[1]∧t[5]=v[2]∧t[6]=v[3])}

(4){t|(u)(v)((R(u)∧S(v)∧u[3]=v[1]∧t[1]=u[1]∧t[2]=v[3])} 2.13 设有三个关系: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用关系代数表达式表示下列查询语句。(见下一题) 2.14 试用元组表达式表示上题中各个查询语句。 (1)检索LIU老师所授课程的课程号、课程名。 πC#,CNAME(σTEACHER='LIU'(C))

{t|(u)(C(u)∧C[3]='LIU'∧t[1]=u[1]∧t[2]=u[2])}

(2)检索年龄大于23岁的男学生的学号与姓名。 πS#,SNAME(σAGE>'23'∧SEX='男'(S))

{t|(u)(S(u)∧u[3]>'23'∧u[4]='男'∧t[1]=u[1]∧t[2]=u[2])}

(3)检索学号为S3学生所学课程的课程名与任课教师名。 πCNAME,TEACHER(σS#='S3'(SCC))

{t|(u)(v)(SC(u)∧C(v)∧u[1]='S3'∧v[1]=u[2]∧t[1]=v[2]∧t[2]=v[3])}

(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名。 πSNAME(σSEX='女'∧TEACHER='LIU'(SSCC))

{t|(u)(v)(w)(S(u)∧SC(v)∧C(w)∧u[4]='女'∧v[1]=u[1]∧v[2]=w[1]∧w[3]='LIU'∧t[1]=u[2])}

(5)检索WANG同学不学的课程号。 πC#(C)-πC#(σSNAME='WANG'(SSC)) 或者,

πC#(SC)-πC#(σSNAME='WANG'(SSC)) (全部课程号减去WANG同学所学的课程号)

{t|(u)(v)(C(u)∧SC(v)∧(u[1]=v[2]=>(w)(s(w)∧w[1]=v[1]∧W[2]≠'wang'))∧t[1]=u[1])} (从C中选择满足条件的元组:SC中的所有元组,如果学号与C中所选元组相同的话,其在S中对应的姓名肯定不是'wang'。)

Notice:\的含义是:如果p1为真,则p2为真。

(6)检索至少选修两门课程的学生学号。 πS#(σ1=4∧2≠5(SC×SC))

SC自乘之后,再选择(同一个学号中两个课程号不同的元组),投影。 {t|(u)(v)(SC(u)∧SC(v)∧u[1]=v[1]∧u[2]≠v[2])∧t[1]=u[1]}

(7)检索全部学生都选修的课程的课程号与课程名。

πC#,CNAME(C(πS#,C#(SC)÷πS#(S))) (涉及到全部值时,应用除法,“除数”是\全部\

{t|(u)(v)(w)(S(u)∧SC(v)∧C(w)∧u[1]=v[1]∧v[2]=w[1]∧t[1]=v[1]∧t[2]=V[2])}

(8)检索选修课程包含LIU老师所授课程的学生学号。 πS#(σTEACHER='LIU'(SCC))

{t|(u)(v)(SC(u)∧C(v)∧u[2]=v[1]∧v[3]='LIU'∧t[1]=u[1])}

如果LIU老师有多门课程,则选修课程包含LIU老师所授全部课程的学生学号为: πS#,C#(SC)÷πC#(σTEACHER='LIU'(C))

2.15 在教学数据库S、SC、C中,用户有一查询语句:检索女同学选修课程的课程名和任课教师名。(1)试写出该查询的关系代数表达式;(2)试写出查询优化的关系代数表达式。 (1)πCNAME,TEACHER(σSEX='女'(SSCC))

(2)优化为:πCNAME,TEACHER(CπC#(πS#,C#(SC)πS#(σSEX='女'(S))))

(基本思路:尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值。

2.16 在2.15题中,

(1)画出该查询初始的关系代数表达式的语法树。

(2)使用2.4.4节的优化算法,对语法树进行优化,并画出优化后的语法树。

该查询初始的关系代数表达式的语优化后的语法树

法树

2.17 为什么要对关系代数表达式进行优化? 在关系代数运算中,各个运算所费时间和空间是不一样的。如何安排若干关系的运算操作步骤, 直接影响到整个操作所需要的时间和空间。对关系代数表达式进行优化, 可以提高系统的操作效率,达到执行过程即省时间又省空间的目的。 二.单项选择题(第一部分)

1. 下面的选项不是关系数据库基本特征的是( )。 A.不同的列应有不同的数据类型 B.不同的列应有不同的列名 C.与行的次序无关 D.与列的次序无关

2. 一个关系只有一个( ) 。

A.候选码 B. 外码 C. 超码 D. 主码

3. 关系模型中,一个码是( )。 A.可以由多个任意属性组成 B.至多由一个属性组成

C.可有多个或者一个其值能够唯一表示该关系模式中任何元组的属性组成 D.以上都不是

4. 现有如下关系:

患者(患者编号,患者姓名,性别,出生日起,所在单位)

医疗(患者编号,患者姓名,医生编号,医生姓名,诊断日期,诊断结果) 其中,医疗关系中的外码是()。 A. 患者编号 B. 患者姓名

C. 患者编号和患者姓名 D. 医生编号和患者编号

5. 现有一个关系:借阅(书号,书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本,则该关系模式的外码是( )。 A. 书号 B. 读者号 C. 书号+读者号 D. 书号+读者号+借期

6. 关系模型中实现实体间 N:M 联系是通过增加一个( )。

A.关系实现 B. 属性实现 C. 关系或一个属性实现 D. 关系和一个属性实现

7. 关系代数运算是以( )为基础的运算 。

A. 关系运算 B. 谓词演算 C. 集合运算 D. 代数运算

8. 关系数据库管理系统应能实现的专门关系运算包括( )。 A. 排序、索引、统计 B. 选择、投影、连接 C. 关联、更新、排序 D. 显示、打印、制表

9. 五种基本关系代数运算是( )。 A.∪ - × σ π B.∪ - σ π C.∪ ∩ × σ π

D.∪ ∩ σ π

10. 关系代数表达式的优化策略中,首先要做的是( ) 。 A.对文件进行预处理

B.尽早执行选择运算 C.执行笛卡尔积运算 D.投影运算

11. 关系数据库中的投影操作是指从关系中( ) 。 A.抽出特定记录 B. 抽出特定字段 C.建立相应的影像 D. 建立相应的图形

12. 从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是( )操作 。 A.投影 B. 联接 C. 选择 D. 复制

13. 关系代数中的联接操作是由( )操作组合而成 。 A.选择和投影 B. 选择和笛卡尔积

C.投影、选择、笛卡尔积 D. 投影和笛卡尔积

14. 自然联接是构成新关系的有效方法。一般情况下,当对关系R和S是用自然联接时,要求R和S含有一个或者多个共有的( ) 。 A.记录 B. 行 C. 属性 D. 元组

15. 假设有关系R和S,在下列的关系运算中,( )运算不要求:“R和S具有相同的元数,且它们的对应属性的数据类型也相同” 。 A.R∩S B. R∪S C. R-S D. R×S

16. 假设有关系R和S,关系代数表达式R-(R-S)表示的是( )。 A.R∩S B. R∪S C. R-S D. R×S

17. 下面列出的关系代数表达是中,那些式子能够成立( ) 。 ⅰ. σf1 ( σf2 (E)) = σf1∧f2 (E) ⅱ. E1∞E2 = E2∞E1

ⅲ. (E1∞E2)∞E3 = E1∞ (E2∞E3)

ⅳ. σf1 ( σf2 (E)) =σf2 ( σf1(E)) A.全部 B. ⅱ和ⅲ C. 没有 D. ⅰ和ⅳ

18. 下面四个关系表达式是等价的,是判别它们的执行效率( ) 。 E1 =πA (σ B=C ∧ D=E′ (R×S) ) E2 =πA (σ B=C (R× σD=E′ (S) ) E3 =πA (R∞B=CσD=E′(S) ) E3 =πA (σD=E′ (R∞B=C S) )

A. E3最快 B. E2最快 C. E4最快 D. E1最快

19. 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( ) 。

ⅰ. πS_ID,SCORE (σ age>22 (SC) ) ⅱ. σ age>22 (πS_ID,SCORE (SC) )

ⅲ. πS_ID,SCORE (σ age>22 (πS_ID,SCORE,AGE (SC) ) ) A.ⅰ和 ⅱ B. 只有ⅱ正确 C. 只有 ⅰ正确 D. ⅰ和ⅲ正确

选择题答案:

(1) A (2) D (3) C (4) A (5) D (6) A (7) C (8) B (9) A (10) B (11) B (12) C (13) B (14) C (15) D (16) A (17) C (18) A (19) D

三. 简答题

1. 试述关系模型的三个组成部分。 2. 试述关系数据语言的特点和分类。

3.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: S( SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY);

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组

成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。 试用关系代数完成如下查询:

(1) 求供应工程J1零件的供应商号码SNO; (2) 求供应工程J1零件P1的供应商号码SNO; (3) 求供应工程J1零件为红色的供应商号码SNO;

(4) 求没有使用天津供应商生产的红色零件的工程号JNO; (5) 求至少用了供应商S1所供应的全部零件的工程号JNO。

4. 定义并理解下列术语,说明它们之间的联系与区别: (1)域,笛卡尔积,关系,元组,属性 (2)主码,候选码,外码

(3)关系模式,关系,关系数据库

5. 试述关系模型的完整性规则。在参照完整性中,为什么外码属性的值有时也可以为空?什么情况下才可以为空?

6. 试述等值连接与自然连接的区别和联系。 7. 关系代数的基本运算有哪些?

8. 试用关系代数的基本运算来表示其他运算。

四. 填空题及问答题

1 .关系模型的三个组成部分是________,________,________。

2 .关系数据模型中,二维表的列称为________,二维表的行称为________。

3 . 试述关系数据语言的特点和分类。 (填空题)

4 .用户选作元组标识的一个候选码为________,其属性不能取________。

5 .定义并理解下列术语,说明它们之间的联系与区别: (1) 域,笛卡尔积,关系,元组,属性 (2)主码,候选码,外部码 (3)关系模式,关系,关系数据库

6 .关系代数运算中,传统的集合运算有_____,_____,_____,_____。 7 .试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

8 .关系代数运算中,基本的运算是________,________,________,________,________。

9 . 等值连接与自然连接的区别是什么?

10 .关系代数运算中,专门的关系运算有________,________,________。

11 . 代数的基本运算有哪些?如何用这些基本运算来表示其他的关系基本运算?

12 .关系数据库中基于数学上的两类运算是________和________。

13 .关系代数中,从两个关系中找出相同元组的运算称为________运算。

14 .R×S表示R与S的________。

15 .设有学生关系:S(XH,XM,XB,NL,DP)。在这个关系中,XH表示学号,XM表示姓名,XB表示性别,NL表示年龄,DP表示系部。查询学生姓名和所在系的投影操作的关系运算式是________________。 (问答题) 16 .在“学生-选课-课程”数据库中的3个关系如下:S(S#,SNAME,SEX,AGE);SC(S#,C#,GRADE); C(C#,CNAME,TEACHER),查找选修“数据库技术”这门课程学生的学生名和成绩,若用关系代数表达式来表示为________________。 (问答题) 17 .已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是________,系关系的外码是________,学生关系的主码是________,学生关系的外码是________。 (问答题)

五、综合题

1.对下列关系模式分别用关系代数、元组关系演算和SQL实现下列查询: ⑴查询学生95001的所有信息 select * from Student

where Sno=’95001’

⑵查询学生95001的姓名和所在系

select Sname,Sdept from Student

where Sno=’95001’

⑶查询选修了1号课的学生的学号 select Sno from SC

where Cno=’1’

⑷查询选修了1号课的学生的姓名 select Sname

from Student,SC

where Student.Sno=SC.Sno and Cno=’1’

⑸查询至少选修了1号课和3号课的学生的学号

select Sno

from SC X , SC Y

where X.Sno=Y.Sno and X.Cno=’1’ and Y.Cno=’3’

⑹查询至少选修了一门其直接先行课为5号课的学生学号 select *

from SC,Course

where Course.Cno=SC.Cno and Cpno=’5’

⑺查询没有选修1号课程的学生姓名 select Sname

from Student ,SC where not exists (select * from SC

where SC.Sno=Student.Sno and SC.Cno=’1’) ⑻查询选修了全部课程的学生的学号和姓名

select Sno,Sname from Student where not exists (select * from Course

where not exists (select * from SC

where SC.Sno=Student.Sno and SC.Cno=C.Cno)) )

⑼查询最少选修了95002学生所选课程的学生学号 select Sno from SC X

where not exists (select * from SC Y

where Sno=’95002’ and not exists (select * from SC Z

where Z.Sno=X.Sno and Z.Cno=Y.Cno)) )

⑽查询每门课的平均成绩(只要求SQL) select Cno,avg(Grade) from SC

group by Sno

(11)查询每个学生的平均成绩(只要求SQL) select Sno,avg(Grade) from SC

group by Sno

2.对学生-课程数据库有如下查询:select Cname from Student,Course,SC where Student.Sno=SC.Sno and SC.Cno=Course.Cno and Student.Sdept=’IS’,试画出用关系代数表示的语法树,并进行优化,画出优化后的标准语法树。

本文来源:https://www.bwwdw.com/article/fpy6.html

Top