数据库习题答案第14章.docx
《数据库习题答案第14章.docx》由会员分享,可在线阅读,更多相关《数据库习题答案第14章.docx(43页珍藏版)》请在冰豆网上搜索。
数据库习题答案第14章
习题一
一、单项选择题
1.数据管理技术的发展经历了多个理阶段,其中数据独立性最高的是(A)阶段。
A)数据库系统B)文件系统C)人工管理D)数据项管理
2.(B)属于信息世界的模型,是现实世界到机器世界的一个中间层次。
A)数据模型B)概念模型C)E-R图D)关系模型
3.反映现实世界中实体及实体间联系的信息模型是(D)。
A)关系模型B)层次模型C)网状模型D)E-R模型
4.下列条目中,(C)是数据模型的要素。
Ⅰ.数据管理Ⅱ.数据操作Ⅲ.数据完整性约束Ⅳ.数据结构
A)Ⅰ、Ⅱ和ⅢB)Ⅰ、Ⅱ和ⅣC)Ⅱ、Ⅲ和ⅣD)Ⅰ、Ⅲ和Ⅳ
5.数据库的概念模型独立于(B)。
A)E-R图B)具体的机器和DBMS
C)现实世界D)用户需求
6.按所使用的数据模型来分,数据库可分为哪三种模型(A)。
A)层次、关系和网状B)网状、环状和链状
C)大型、中型和小型D)独享、共享和分时
7.层次模型不能直接表示实体间的(C)。
A)1﹕1关系B)1:
n关系C)m﹕n关系D)1﹕1和1:
n关系
8.在对层次数据库进行操作时,如果删除双亲节点,则相应的子女节点值也被同时删除。
这是由层次模型
的(B)决定的。
A)数据结构B)完整性约束C)数据操作D)缺陷
9.下列条目中,(D)是数据库应用系统的组成成员。
Ⅰ.操作系统Ⅱ.数据库管理系统Ⅲ.用户
Ⅳ.数据库管理员Ⅴ.数据库Ⅵ.应用系统
A)仅Ⅱ、Ⅳ和ⅤB)仅Ⅰ、Ⅱ、Ⅲ、Ⅳ和Ⅴ
C)仅Ⅰ、Ⅱ、Ⅳ和ⅤD)都是
10.在数据库中,产生数据不一致性的根本原因是(C)。
A)数据存储量过大B)访问数据的用户数太多
C)数据冗余D)数据类型太复杂
11.关系模型的完整性规则不包括(D)。
A)实体完整性规则B)参照完整性规则
C)用户自定义的完整性规则D)数据操作性规则
12.数据库管理系统中数据操纵语言DML所实现的操作一般包括(A)。
A)查询、插入、修改、删除B)排序、授权、删除
C)建立、插入、修改、排序D)建立、授权、修改
13.关系模型中,一个关键字(C)。
A)可由多个任意属性组成B)至多由一个属性组成
C)可由一个或多个其值能唯一标识该关系模式或任何元组的属性组成
D)以上都不是
14.现有学生关系模式:
学生(宿舍编号,宿舍地址,学号,姓名,性别,专业,出生日期),这个关系
模式的主关键字是(B)。
A)宿舍编号B)学号C)宿舍地址,姓名D)宿舍编号,学号
15.在关系数据库中,用来表示实体之间联系的是(D)。
A)树形结构B)网状结构C)线性表D)二维表
1
16.逻辑数据独立性是指(D)。
A)概念模式改变,外模式和应用程序不变B)概念模式改变,内模式不变
C)内模式改变,概念模式不变D)内模式改变,外模式和应用程序不变
17.数据库三级模式体系结构的划分,有利于保持数据库的(A)。
A)数据独立性B)数据安全性C)结构规范化D)操作可行性
18.在数据库的三级模式结构中,内模式的个数(A)。
A)只有1个B)与用户个数相同C)由系统参数决定D)有任意多个
19.在数据库的三级模式结构中,当模式改变时,通过修改外模式/模式的映像而使外模式不变,从而不
必修改应用程序,这是保证了数据与程序的(D)。
A)存储独立性B)物理独立性C)用户独立性D)逻辑独立性
20.数据库系统的体系结构是(C)。
A)二级模式结构和一级映像B)三级模式结构和一级映像
C)三级模式结构和二级映像D)三级模式结构和三级映像
二、设计题
1.已知某图书销售数据库由图书、出版商、作者、书店、订单等实体集(对象)组成,各个实体的
属性如下:
1)出版商:
出版商编码、名称、地址、所在城市、联系电话
2)图书:
书编码、书名、类型、单价、出版日期
3)作者:
作者编码、姓名、出生日期、地址、联系电话
4)书店:
书店编码、名称、地址、联系电话
5)订单:
订单编号、订单日期、订购数量。
数据库语义如下:
1)一个出版商可以出版多本图书,但一本图书只能由一个出版商出版;
2)一个作者可以写多本书,一本书可以有多个作者编写;
3)图书销售情况以订单形式加以存储,一张订单可以有多本图书,一本图书可以在多个订单中出现,
但同一订单中同一本图书只能出现一次;
4)一个订单只属于一个书店,一个书店可以有多张订单;
画出该数据库的E-R图。
参考答案:
作者编码书号书名类型单价出版日期
姓名
n
出版商图书
出版编写
1n
m
作者出生日期
地址
n
编码名称地址城市电话
电话
包含
编码
m
名称
n1
订单书店地址
销售
城市
订单号订单日期订购数量
电话
2
2.某工厂(包括厂名和厂长名)需要建立一个数据库,其语义如下:
1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话;
2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;
3)一个车间生产多种产品,产品有产品编号、产品名称、规格型号和价格;
4)一个车间生产多种零件,一个零件也可能为多个车间制造。
零件有零件号、零件名、重量和价格;
5)一个产品由多种零件组成,一种零件也可装配出多种产品;
6)产品与零件均存入仓库中;
7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
画出该数据库的E-R图。
参考答案:
职工号姓名年龄性别电话
厂名厂长名
员工
1n
工厂包含n
1
组成
拥有
产品号产品名
规格型号单价
1
仓库号车间号
n
仓库名车间主任
1
n
车间仓库存储产品生产
1n
仓库主任地址
m
电话电话
装配
n
nm
零件
制造
存放
n
1
零件号零件名规格型号单价
3
习题二
一、单项选择题
21.关系模型中,候选码(C)。
A)可由多个任意属性组成
B)至多由一个属性组成
C)可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
D)以上说法都不正确
22.一个关系数据库中的各个元组(B)。
A)前后顺序不能任意颠倒,一定要按照输入的顺序排列
B)前后顺序可以任意颠倒,不影响数据库中的数据关系
C)前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D)前后顺序不能任意颠倒,一定要按照码段值的顺序排列
23.外码必须为空值或等于被参照表中某个元组的主码。
这是(B)。
A)实体完整性规则B)参照完整性规则
C)用户自定义完整性规则D)域完整性规则
24.在关系代数运算中,不属于基本运算的是(C)。
A)差B)并C)交D)乘积
25.设关系R和S的属性个数分别是3和4,元组个数分别是100和300,关系T是R和S的广义笛卡尔积,
则T的属性个数和元组个数分别是(D)。
A)4,300B)4,400C)7,400D)7,30000
26.在关系代数的连接操作中,(A)操作需要取消重复列。
A)自然连接B)笛卡儿积C)等值连接D)θ连接
27.下列哪一种关系运算不要求:
R和S具有相同的元数,且它们对应属性的数据类型也相同”?
(C)。
A)R∪SB)R∩SC)R-SD)R×S
28.设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则R-(R-S)等于(B)。
A)R∪SB)R∩SC)R×SD)R-S
29.在关系代数的专门关系运算中,从关系中取出若干属性的操作称为(B);从关系中选出满足某种条件
的元组的操作称为(A);将两个关系中具有共同属性的值的元组连接到一起构成新关系的操作称为
(C)。
A)选择B)投影C)连接D)扫描
30.在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为(A)。
A)外码B)候选码C)主码D)超码
31.等值连接和自然连接相比较,正确的是(C)。
A)等值连接和自然连接的结果完全相同
B)等值连接的属性个数大于自然连接的属性个数
C)等值连接的属性个数小于自然连接的属性个数
D)等值连接的属性个数等于自然连接的属性个数
32.有两个关系R(A,B,C)和S(B,C,D),则R÷S结果的属性个数是(C)。
A)3B)2C)1D)不一定
R
33.设关系R(A,B,C)和关系S(B,C,D),那么与2=1
S
等价的关系代数表达式是(B)。
A)σ2=4(RS)B)σ2=4(R×S)C)σ2=1(RS)B)σ2=1(R×S)
4
34.设关系X和Y的属性相同,分别有m和n个元组,那么X-Y操作的结果中元组个数为(C)。
A)等于m-nB)等于mC)小于等于mD)小于等于m-n
35.设关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是(B)。
A)R÷SB)Π2,3(R)∪Π1,2(S)C)R∩SD)RS
36.设W=RS,且W、R、S的属性个数分别为w、r和s,那么三者之间应满足(B)。
A)w<=r+sB)wr+s
37.有两个关系R(A,B,C)和S(B,C,D),则RS结果的属性个数是(B)。
A)3B)4C)5D)6
38.在四元关系R中,属性分别是A、B、C、D,下列叙述中正确的是(C)。
A)ΠB,C(R)表示取值为B、C的两列组成的关系
B)Π2,3(R)表示取值为2、3的两列组成的关系
C)ΠB,C(R)和Π2,3(R)表示的是同一个关系
D)ΠB,C(R)和Π2,3(R)表示的不是同一个关系
39.设有关系SC(Sno,Cno,Grade),主码是(Sno,Cno)。
遵照实体完整性规则(D)。
A)只有Sno不能取空值B)只有Cno不能取空值
C)只有Grade不能取空值D)Sno与Cno都不能取空值
40.设关系R=(A,B,C),与SQL语句SelectDistinctAFromRWhereB=17等价的关系代数表达式是(A)。
A)ΠA(σB=17(R))B)σB=17(ΠA(R))
C)σB=17(ΠA,C(R))D)ΠA
,C(σB=17(R))
41.设有关系R(A,B,C)和关系S(B,C,D),那么与RS等价的关系代数表达式是(C)。
A)Π1,2,3,4(σ2=1∧3=2(R×S))B)Π1,2,3,6(σ2=1∧3=2(R×S))
C)Π1,2,3,6(σ2=4∧3=5(R×S))D)Π1,2,3,4(σ2=4∧3=5(R×S))
下面第22~25题,基于“学生—选课—课程”数据库中的3个关系:
S(Sno,Sname,Gender,Department),主码是Sno
C(Cno,Cname,Teacher),主码是Cno
SC(Sno,Cno,Grade),主码是(Sno,Cno)
42.下列关于保持数据库完整性的叙述中,哪一个是不正确的?
(D)。
A)向关系SC插入元组时,Sno和Cno都不能是空值(NULL)
B)可以任意删除关系SC中的元组
C)向任何一个关系插入元组时,必须保证该关系主码值的唯一性
D)可以任意删除关系C中的元组
43.为了提高特定查询的速度,对SC关系创建唯一索引,应该创建在哪一个(组)属性上?
(A)。
A)(Sno,Cno)B)(Sno,Grade)C)(Cno,Grade)D)Grade
44.查找每个学生的学号、姓名、选修的课程名和成绩,将使用关系(D)。
A)只有S,SCB)只有SC,CC)只有S,CD)S,SC,C
45.查找学生号为"D07540102"的学生的“数据库”课程的成绩,至少将使用关系(B)。
A)S和SCB)SC和CC)S和CD)S、SC和C
5
二.解答题
1.设有如下关系:
图书(书号,书名,作者,出版社);
读者(借书证号,读者名,读者地址);
借阅(读者名,书号,借书日期,归还日期)。
①指出每个关系模式的候选码,主码,外码,主属性。
参考答案:
图书(书号,书名,作者,出版社):
候选码、主码={书号};主属性={书号};无外键。
读者(借书证号,读者名,读者地址):
候选码={借书证号,读者名}、主码={读者名};主属性={读
者名};无外键。
借阅(读者名,书号,借书日期,归还日期):
候选码、主码={读者名+书号+借书日期};主属性={读
者名,书号};外键=读者名和书号。
②试用关系代数表达式查询2010年12月31日以前借书未还的读者姓名和图书书名。
参考答案:
Π1,3(Π1,2(σ3<=’2010-12-31’^4=’(借’阅)Π1,2(图书))或
Π读者名,书名(Π读者名,书号(σ
借书日期<=’2010-12-31’癸^亥日期=’(’借阅)Π
书号,书名(图书))
2.设关系R、W和D如下,计算下列关系代数:
关系R关系W关系D
PQTYTYBTY
2bcd
cdmcd
9aefcdn
ef
2bef
dfn
9ade
7gef
7gcd
①R1=∏Y,T(R)
参考答案:
YT
dc
fe
ed
②R2=σP>5∧T=e(R)
参考答案:
PQTY
9aef
7gef
③R3=RW
PQTYB
2bcdm
2bcdn
6
④R4=∏2,1,6(σ3=5(R×D))
参考答案:
设X=(σ3=5(R×D))=
PQR.TR.YD.TD.Y
2bcdcd
9aefef
2befef
7gefef
7gcdcd
得到R4=∏2,1,6(X)=
QPY
b2d
a9f
b2f
g7f
g7d
⑤R5=R÷D
参考答案:
在关系R中,属性P的取值:
(2,7,9)。
其中:
2的像集为{(c,d),(e,f)}
7的像集为{(e,f),(c,d)}
9的像集为{(e,f),(d,e)}
关系D在(T,Y)上的投影为{(c,d),(e,f)}
只有关系R中2的像集和7的像集包含D在(T,Y)属性组上的投影,即
R5=R÷D={2,7}
3.给定一个有关学生选课数据库Education,它包含学生、课程、教师、选课和授课等5个关系模式,
分别用Students,Courses,Teachers,StudCourses,Instructions表示。
各个关系模式表示如下:
Students(Sno,Sname,Gender,Major)=学生(学号,姓名,性别,所属专业)
Courses(Cno,Cname,Pno,Credit)=课程(课程编号,课程名称,前修课程,学分)
Teachers(Tno,Tname,Title,Major)=教师(教师编号,姓名,职称,所属专业)
StudCourses(Cno,Cno,Period,Grade)=选课(学号,课程编号,选课学期,成绩)
Instructions(Tno,Cno,Period)=授课(教师编号,课程编号,授课学期)
用关系代数完成下列查询:
①查询选修过“数据库”和“数据结构”这两门课程的学生姓名。
解题步骤:
1)通过StudCourses与Courses的自然连接,求出选修过“数据库”的学生学号
T1=∏Sno(σCname='数据库'(StudCoursesCourses))
2)通过StudCourses与Courses的自然连接,求出选修过“数据结构”的学生学号
T2=∏Sno(σCname='数据结构'(StudCoursesCourses))
3)求出选修过“数据库”和“数据结构”这两门课程的学生学号
T3=T1∩T2
7
4)在已知学号的情况下,与Students进行自然连接,求出选课学生的姓名
T=∏Sname(T3Students)最终答案:
∏Sname((∏Sno(σCname='数据库'(StudCoursesCourses))∩
∏Sno(σCname='数据结构'(StudCoursesCourses)))
Students)
②查询姓名为“李平”这个学生所选修的全部课程的名称。
解题步骤:
1)从Students中取“李平”这个学生的学号
T1=∏Sno(σSname='李平'(Students))
2)从StudCourses中取学号与课程号两个属性的投影,并与Courses作自然连接,得到学号、课程号
和课程名称这3个属性
T2=∏Sno,Cno(StudCourses)∏Cno,Cname(Courses)
3)将T1与T2作自然连接,并求课程名称Cname上的投影。
T3=∏Cname(T1T2)最终答案:
∏Cname(∏Sno(σSname='李平'(Students))(∏Sno,Cno(StudCourses)Courses))
③查询没有选修过“数据库”这门课程的学生姓名。
解题步骤:
1)先查询选修过“数据库”这门课程的学生学号
T1=∏Sno(σCname='数据库'(StudCourseCourses))
2)使用减法,求出没有选修数据库的学生学号
T2=∏Sno(Students)-T1
3)将T2与Students作自然连接,求出没有选修“数据库”的学生的姓名
T3=∏Sname(T2Students)最终答案:
∏Sname((∏Sno(Students)-∏Sno(σCname='数据库'(StudCourseCourses)))Students)
④查询选修过“数据库”但没有选修其先行课的学生学号。
解题步骤:
1)先查询选修过“数据库”这门课程的所有学生的学号
T1=∏Sno(σCname='数据库'(StudCourseCourses))
2)求“数据库”这门课程的前修课程的编号(假设为T2)
T2=∏Pno(σCname='数据库'(Courses))
3)求T1这些学生中选修过T2这门课程的所有学生的学号
T3=∏Sno(T1σCno=T2(StudCourses))或
8
T3=∏Sno(StudCoursesT2)
4)从选修“数据库”课程的学生中减去同时选修了其前修课程的学生,最终得到没有选修其先行课
的学生学号T4
T4=T1-T3
⑤查询所有课程成绩全部及格的学生姓名。
解题步骤:
1)求出有一门课程考试成绩不及格的学生的学号
T1=∏Sno(σGrade<60(StudCourses))
2)从所有选课学生中减去T1中的学生,得到所有考试成绩都及格的学生的学号
T2=∏Sno(StudCourses)-T1
3)T2与Students自然连接,得到这些学生的姓名
T3=∏Sname(T2Students))
⑥查询选修过教师“达尔文”所授的全部课程的学生姓名。
解题步骤:
1)求出教师“达尔文”所授的全部课程T1
T1=∏Cno(∏Tno(σGTname=='达尔文'(Teachers))∏Cno,Tno(Instructions))
2)使用除法,求出选修了这些课程的学生学号T2,然后将T2与Students自然连接,得到这些学生的
姓名T3
T2=∏Sno,Cno(studcourses)T1÷
T3=∏Sname(T2Students))
⑦查询哪些学生选修的课程中其前修课程还没有选修过。
解题步骤(举例说明):
1)设R=∏Sno,Cno(StudCourses)∏Cno,Pno(Courses),设S=R。
假设实例如下:
CoursesStudCourses
CnoPnoSnoCno
C1S1C1
C3C2S1C3
C4C3S1C4
C1S2C1
C2C1S2C2
C4C3S2C4
C6C5S2C6
C1S3C1
C2C1S3C2
C5S4C5
9
则得到R、S如下:
RS
SnoCnoPnoSnoCnoPno
S1C1S1C1
S1C3C2S1C3C2
S1C4C3S1C4C3
S2C1S2C1
S2C2C1S2C2C1
S2C4C3S2C4C3
S2C6C5S2C6C5
S3C1S3C1
S3C2C1S3C2C1
S4C5S4C5
K=∏1,2,3(RS)
R.Pcno=S.Cno
2)设
,求出选修课程中包含前修课程的学生和课程信息
SnoCnoPno
S1C4C3
S2C2C1
S3C2C1
3)设T=R-K,排除已有前修课程的学生及课程信息
SnoCnoPno
S1C1
S1C3C2
S2C1
S2C4C3
S2C6C5
S3C1
S4C5
4)设P=σPno<>''(T),排除那些本身没有前修课程的选修记录,得到没有选修前修课程的课程及
学号信息。
SnoCnoPno
S1C3C2
S2C4C3
S2C6C5
5)将P与Students自然连接,得到没有选修前修课程的学生姓名
X=∏Sname(∏Sno(P)Students)
10
最终答案:
R=∏Sno,Cno(StudCourses)∏Cno,Pno(Courses)
K=∏1,2,3(RS)
R.Pcno=S.Cno
T=R-K
P=σPno<>''(T)
X=∏Sname(∏Sno(P)Students)
⑧查询哪些学生与学号为“S1”的学生选修了完全相同的课程。
解题步骤(举例说明)。
假设:
StuCourses
SnoCnoGrade
S1C160
S1C270
S1C380
S2C190
S2C265
S2C375
S2C485
S3C195
S3C270
S3C375
S4C480
S4C685
S5C190
S5C272
S5C375
S5C678
S5C778
1)求出学号为S1的这个学生选修的全部课程编码T1
T1=∏Cno(σSno='S1'(StudCourses))
Cno
C1
C2
C3
11
2)利用除法,求出至少选修了全部T1课程的学生学号T2。
但T2中有一部分学生选修的课程比S1
还要多,也就是说与S1选修的课程不完全相同。
T2=∏Sno,Cno(StudCourses)T÷1
Sno
S1
S2
S3
S5
3)在StudCourses中提取T2这些学生选修的全部课程,得到T3
T3=∏Sno,Cno(StudCoursesT2)
4)将T3与T1×T2(笛卡尔积)相减,得到那些比S1选的课还要多的学生及课程信息T4。
T4=T3-T1×T2
SnoCno
S2C4
S5C6
S5C7
5)在T2中剔除比S1选课还要多的那些学生,当然还要去掉S1自己本身。
T5=σSno='S1'(T2)-∏Sno(T4)
最终答案:
T1=∏Cno(σSno='S1'(StudCourses))
T2=∏Sno,Cno(StudCourses)T÷1
T3=∏Sno,Cno(StudCoursesT2)
T4=T3-T1×T2
T5=σSno='S1'(T2)-∏Sno(T4)
⑨查询哪些学生没有选修过教师“达尔文”所授的任何一门课程。
解题步骤:
1)求出教师“达尔文”所授的所有课程T1
T1=∏Cno(σTname='达尔文'(InstructionsTeachers))
2)通过T1与StudCourses的自然连接,求出选修过“达尔文”所授任一课程的学生T2,从全部学生
中减去T2,得到没有选修过教师“达尔文”所授课程的学