数据库习题答案第14章.docx
《数据库习题答案第14章.docx》由会员分享,可在线阅读,更多相关《数据库习题答案第14章.docx(42页珍藏版)》请在冰豆网上搜索。
![数据库习题答案第14章.docx](https://file1.bdocx.com/fileroot1/2022-11/25/7f7dc520-10d3-4819-a51c-b9c065dbc8d7/7f7dc520-10d3-4819-a51c-b9c065dbc8d71.gif)
数据库习题答案第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)二维表
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图。
参考答案:
2.某工厂(包括厂名和厂长名)需要建立一个数据库,其语义如下:
1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话;
2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;
3)一个车间生产多种产品,产品有产品编号、产品名称、规格型号和价格;
4)一个车间生产多种零件,一个零件也可能为多个车间制造。
零件有零件号、零件名、重量和价格;
5)一个产品由多种零件组成,一种零件也可装配出多种产品;
6)产品与零件均存入仓库中;
7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
画出该数据库的E-R图。
参考答案:
习题二
一、单项选择题
1.关系模型中,候选码(C)。
A)可由多个任意属性组成
B)至多由一个属性组成
C)可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
D)以上说法都不正确
2.一个关系数据库中的各个元组(B)。
A)前后顺序不能任意颠倒,一定要按照输入的顺序排列
B)前后顺序可以任意颠倒,不影响数据库中的数据关系
C)前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D)前后顺序不能任意颠倒,一定要按照码段值的顺序排列
3.外码必须为空值或等于被参照表中某个元组的主码。
这是(B)。
A)实体完整性规则B)参照完整性规则
C)用户自定义完整性规则D)域完整性规则
4.在关系代数运算中,不属于基本运算的是(C)。
A)差B)并C)交D)乘积
5.设关系R和S的属性个数分别是3和4,元组个数分别是100和300,关系T是R和S的广义笛卡尔积,则T的属性个数和元组个数分别是(D)。
A)4,300B)4,400C)7,400D)7,30000
6.在关系代数的连接操作中,(A)操作需要取消重复列。
A)自然连接B)笛卡儿积 C)等值连接D)θ连接
7.下列哪一种关系运算不要求:
R和S具有相同的元数,且它们对应属性的数据类型也相同”?
(C)。
A)R∪SB)R∩SC)R-SD)R×S
8.设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则R-(R-S)等于(B)。
A)R∪SB)R∩SC)R×SD)R-S
9.在关系代数的专门关系运算中,从关系中取出若干属性的操作称为(B);从关系中选出满足某种条件的元组的操作称为(A);将两个关系中具有共同属性的值的元组连接到一起构成新关系的操作称为(C)。
A)选择B)投影C)连接D)扫描
10.在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为(A)。
A)外码B)候选码C)主码D)超码
11.等值连接和自然连接相比较,正确的是(C)。
A)等值连接和自然连接的结果完全相同
B)等值连接的属性个数大于自然连接的属性个数
C)等值连接的属性个数小于自然连接的属性个数
D)等值连接的属性个数等于自然连接的属性个数
12.有两个关系R(A,B,C)和S(B,C,D),则R÷S结果的属性个数是(C)。
A)3B)2C)1D)不一定
13.设关系R(A,B,C)和关系S(B,C,D),那么与
等价的关系代数表达式是(B)。
A)σ2=4(R
S)B)σ2=4(R×S)C)σ2=1(R
S)B)σ2=1(R×S)
14.设关系X和Y的属性相同,分别有m和n个元组,那么X-Y操作的结果中元组个数为(C)。
A)等于m-nB)等于mC)小于等于mD)小于等于m-n
15.设关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是(B)。
A)R÷SB)Π2,3(R)∪Π1,2(S)C)R∩SD)R
S
16.设W=R
S,且W、R、S的属性个数分别为w、r和s,那么三者之间应满足(B)。
A)w<=r+sB)wr+s
17.有两个关系R(A,B,C)和S(B,C,D),则R
S结果的属性个数是(B)。
A)3B)4C)5D)6
18.在四元关系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)表示的不是同一个关系
19.设有关系SC(Sno,Cno,Grade),主码是(Sno,Cno)。
遵照实体完整性规则(D)。
A)只有Sno不能取空值 B)只有Cno不能取空值
C)只有Grade不能取空值D)Sno与Cno都不能取空值
20.设关系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))
21.设有关系R(A,B,C)和关系S(B,C,D),那么与R
S等价的关系代数表达式是(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)
22.下列关于保持数据库完整性的叙述中,哪一个是不正确的?
(D)。
A)向关系SC插入元组时,Sno和Cno都不能是空值(NULL)
B)可以任意删除关系SC中的元组
C)向任何一个关系插入元组时,必须保证该关系主码值的唯一性
D)可以任意删除关系C中的元组
23.为了提高特定查询的速度,对SC关系创建唯一索引,应该创建在哪一个(组)属性上?
(A)。
A)(Sno,Cno) B)(Sno,Grade)C)(Cno,Grade)D)Grade
24.查找每个学生的学号、姓名、选修的课程名和成绩,将使用关系(D)。
A)只有S,SC B)只有SC,CC)只有S,CD)S,SC,C
25.查找学生号为"D07540102"的学生的“数据库”课程的成绩,至少将使用关系(B)。
A)S和SCB)SC和CC)S和CD)S、SC和C
二.解答题
1.设有如下关系:
图书(书号,书名,作者,出版社);
读者(借书证号,读者名,读者地址);
借阅(读者名,书号,借书日期,归还日期)。
1指出每个关系模式的候选码,主码,外码,主属性。
参考答案:
图书(书号,书名,作者,出版社):
候选码、主码={书号};主属性={书号};无外键。
读者(借书证号,读者名,读者地址):
候选码={借书证号,读者名}、主码={读者名};主属性={读者名};无外键。
借阅(读者名,书号,借书日期,归还日期):
候选码、主码={读者名+书号+借书日期};主属性={读者名,书号};外键=读者名和书号。
②试用关系代数表达式查询2010年12月31日以前借书未还的读者姓名和图书书名。
参考答案:
Π1,3(Π1,2(σ3<=’2010-12-31’^4=’’(借阅)
Π1,2(图书))或
Π读者名,书名(Π读者名,书号(σ借书日期<=’2010-12-31’^癸亥日期=’’(借阅)
Π书号,书名(图书))
2.设关系R、W和D如下,计算下列关系代数:
P
Q
T
Y
2
b
c
d
9
a
e
f
2
b
e
f
9
a
d
e
7
g
e
f
7
g
c
d
关系R
关系W
T
Y
B
c
d
m
c
d
n
d
f
n
关系D
T
Y
c
d
e
f
1R1=∏Y,T(R)
参考答案:
Y
T
d
c
f
e
e
d
②R2=σP>5∧T=e(R)
参考答案:
P
Q
T
Y
9
a
e
f
7
g
e
f
③R3=R
W
P
Q
T
Y
B
2
b
c
d
m
2
b
c
d
n
④R4=∏2,1,6(σ3=5(R×D))
参考答案:
设X=(σ3=5(R×D))=
P
Q
R.T
R.Y
D.T
D.Y
2
b
c
d
c
d
9
a
e
f
e
f
2
b
e
f
e
f
7
g
e
f
e
f
7
g
c
d
c
d
得到R4=∏2,1,6(X)=
Q
P
Y
b
2
d
a
9
f
b
2
f
g
7
f
g
7
d
⑤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查询选修过“数据库”和“数据结构”这两门课程的学生姓名。
解题步骤:
1)通过StudCourses与Courses的自然连接,求出选修过“数据库”的学生学号
T1=∏Sno(σCname='数据库'(StudCourses
Courses))
2)通过StudCourses与Courses的自然连接,求出选修过“数据结构”的学生学号
T2=∏Sno(σCname='数据结构'(StudCourses
Courses))
3)求出选修过“数据库”和“数据结构”这两门课程的学生学号
T3=T1∩T2
4)在已知学号的情况下,与Students进行自然连接,求出选课学生的姓名
T=∏Sname(T3
Students)
最终答案:
∏Sname((∏Sno(σCname='数据库'(StudCourses
Courses))∩
∏Sno(σCname='数据结构'(StudCourses
Courses)))
Students)
2查询姓名为“李平”这个学生所选修的全部课程的名称。
解题步骤:
1)从Students中取“李平”这个学生的学号
T1=∏Sno(σSname='李平'(Students))
2)从StudCourses中取学号与课程号两个属性的投影,并与Courses作自然连接,得到学号、课程号和课程名称这3个属性
T2=∏Sno,Cno(StudCourses)
∏Cno,Cname(Courses)
3)将T1与T2作自然连接,并求课程名称Cname上的投影。
T3=∏Cname(T1
T2)
最终答案:
∏Cname(∏Sno(σSname='李平'(Students))
(∏Sno,Cno(StudCourses)
Courses))
3查询没有选修过“数据库”这门课程的学生姓名。
解题步骤:
1)先查询选修过“数据库”这门课程的学生学号
T1=∏Sno(σCname='数据库'(StudCourse
Courses))
2)使用减法,求出没有选修数据库的学生学号
T2=∏Sno(Students)-T1
3)将T2与Students作自然连接,求出没有选修“数据库”的学生的姓名
T3=∏Sname(T2
Students)
最终答案:
∏Sname((∏Sno(Students)-∏Sno(σCname='数据库'(StudCourse
Courses)))
Students)
4查询选修过“数据库”但没有选修其先行课的学生学号。
解题步骤:
1)先查询选修过“数据库”这门课程的所有学生的学号
T1=∏Sno(σCname='数据库'(StudCourse
Courses))
2)求“数据库”这门课程的前修课程的编号(假设为T2)
T2=∏Pno(σCname='数据库'(Courses))
3)求T1这些学生中选修过T2这门课程的所有学生的学号
T3=∏Sno(T1
σCno=T2(StudCourses))或
T3=∏Sno(StudCourses
T2)
4)从选修“数据库”课程的学生中减去同时选修了其前修课程的学生,最终得到没有选修其先行课的学生学号T4
T4=T1-T3
5查询所有课程成绩全部及格的学生姓名。
解题步骤:
1)求出有一门课程考试成绩不及格的学生的学号
T1=∏Sno(σGrade<60(StudCourses))
2)从所有选课学生中减去T1中的学生,得到所有考试成绩都及格的学生的学号
T2=∏Sno(StudCourses)-T1
3)T2与Students自然连接,得到这些学生的姓名
T3=∏Sname(T2
Students))
6查询选修过教师“达尔文”所授的全部课程的学生姓名。
解题步骤:
1)求出教师“达尔文”所授的全部课程T1
T1=∏Cno(∏Tno(σGTname=='达尔文'(Teachers))
∏Cno,Tno(Instructions))
2)使用除法,求出选修了这些课程的学生学号T2,然后将T2与Students自然连接,得到这些学生的姓名T3
T2=∏Sno,Cno(studcourses)÷T1
T3=∏Sname(T2
Students))
7查询哪些学生选修的课程中其前修课程还没有选修过。
解题步骤(举例说明):
1)设R=∏Sno,Cno(StudCourses)
∏Cno,Pno(Courses),设S=R。
假设实例如下:
CoursesStudCourses
Cno
Pno
Sno
Cno
C1
S1
C1
C3
C2
S1
C3
C4
C3
S1
C4
C1
S2
C1
C2
C1
S2
C2
C4
C3
S2
C4
C6
C5
S2
C6
C1
S3
C1
C2
C1
S3
C2
C5
S4
C5
则得到R、S如下:
RS
Sno
Cno
Pno
Sno
Cno
Pno
S1
C1
S1
C1
S1
C3
C2
S1
C3
C2
S1
C4
C3
S1
C4
C3
S2
C1
S2
C1
S2
C2
C1
S2
C2
C1
S2
C4
C3
S2
C4
C3
S2
C6
C5
S2
C6
C5
S3
C1
S3
C1
S3
C2
C1
S3
C2
C1
S4
C5
S4
C5
2)设
,求出选修课程中包含前修课程的学生和课程信息
Sno
Cno
Pno
S1
C4
C3
S2
C2
C1
S3
C2
C1
3)设T=R-K,排除已有前修课程的学生及课程信息
Sno
Cno
Pno
S1
C1
S1
C3
C2
S2
C1
S2
C4
C3
S2
C6
C5
S3
C1
S4
C5
4)设P=σPno<>''(T),排除那些本身没有前修课程的选修记录,得到没有选修前修课程的课程及学号信息。
Sno
Cno
Pno
S1
C3
C2
S2
C4
C3
S2
C6
C5
5)将P与Students自然连接,得到没有选修前修课程的学生姓名
X=∏Sname(∏Sno(P)
Students)
最终答案:
R=∏Sno,Cno(StudCourses)
∏Cno,Pno(Courses)
T=R-K
P=σPno<>''(T)
X=∏Sname(∏Sno(P)
Students)
8查询哪些学生与学号为“S1”的学生选修了完全相同的课程。
解题步骤(举例说明)。
假设:
StuCourses
Sno
Cno
Grade
S1
C1
60
S1
C2
70
S1
C3
80
S2
C1
90
S2
C2
65
S2
C3
75
S2
C4
85
S3
C1
95
S3
C2
70
S3
C3
75
S4
C4
80
S4
C6
85
S5
C1
90
S5
C2
72
S5
C3
75
S5
C6
78
S5
C7
78
1)求出学号为S1的这个学生选修的全部课程编码T1
T1=∏C