和域表达式
{t1t2t3|(u1)(u2)(∀u3)(R(t1t2t3)∧S(u1u2u3)∧t2>u3)}
的具体值。
23.设教学数据库中,有两个基本表:
学生表:
S(S#,SNAME,AGE,SEX)
学习表:
SC(S#,C#,GRADE)
现有一个SQL语句:
SELECTS#
FROMS
WHERES#NOTIN
(SELECTS#
FROMSC
WHEREC#IN('C2','C4'));
试写出与此语句等价的汉语查询语句及关系代数表达式。
24.在嵌入式SQL中,什么情况下的DML语句不必涉及到游标操作?
25.设有关系模式R(A,B,C,D),F是R上成立的FD集,F={AB→C,D→B},试求属性集AD的闭包(AD)+。
并回答所有左部为AD的函数依赖有多少个?
26.在ER模型转换成关系模型时,如果二元联系是1:
N,并在1端实体类型转换成的关系模式中加入N端实体类型的键和联系类型的属性,那末这个关系模式将会有什么问题?
试举例说明。
27.什么是“饿死”问题?
如何解决?
28.与传统的关系模型相比,对象关系模型有哪些扩充?
29.C/S结构为什么要从两层结构发展到三层、多层结构?
30.DDB的体系结构有些什么显著的特点?
四.设计题(本大题共5小题,每小题4分,共20分)
31.设某商业集团为仓库存储商品设计了三个基本表:
仓库STORE(S#,SNAME,SADDR),其属性是仓库编号、仓库名称和地址。
存储SG(S#,G#,QUANTITY),其属性是仓库编号、商品编号和数量。
商品GOODS(G#,GNAME,PRICE),其属性是商品编号、商品名称和单价
现检索仓库名称为“莘庄”的仓库里存储的商品的编号和名称。
试写出相应的关系代数表达式、元组表达式、关系逻辑规则和SELECT语句。
32.在第31题的基本表中,检索存储全部种类商品的仓库的编号及名称。
试写出相应的关系代数表达式、元组表达式、关系逻辑规则和SELECT语句。
33.在第31题的基本表中,检索每个仓库存储商品的总价值。
试写出相应的SELECT语句。
要求显示(S#,SUM_VALUE),其属性为仓库编号及该库存储商品的总价值。
34.在第31题的基本表中,写一个断言,规定每个仓库存储商品的单价为1万元以上的商品种类最多为20种。
35.图8是有关大学(university)和学生(student)信息的对象联系图:
图8
(1)试用ORDB的定义语言,定义这个数据库。
(2)试用ORDB的查询语言写出下列查询的SELECT语句:
检索每个大学里,籍贯为本地的学生,要求显示大学名、城市、学生身份证号和学生姓名。
五.综合题(本大题共4小题,每小题5分,共20分)
36.设有关系模式
R(职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
1试写出关系模式R的基本FD和关键码。
2说明R不是2NF模式的理由,并把R分解成2NF模式集。
3进而把R分解成3NF模式集,并说明理由。
37.设大学里教学数据库中有三个实体集。
一是“课程”实体集,属性有课程号、课程名称;二是“教师”实体集,属性有教师工号、姓名、职称;三是“学生”实体集,属性有学号、姓名、性别、年龄。
设教师与课程之间有“主讲”联系,每位教师可主讲若干门课程,但每门课程只有一位主讲教师,教师主讲课程将选用某本教材;教师与学生之间有“指导”联系,每位教师可指导若干学生,但每个学生只有一位指导教师;学生与课程之间有“选课”联系,每个学生可选修若干课程,每门课程可由若干学生选修,学生选修课程有个成绩。
(1)试画出ER图,并在图上注明属性、联系类型、实体标识符;
(2)将ER图转换成关系模型,并说明主键和外键。
(3)将ER图转换成对象联系图。
(4)将ER图转换成UML的类图。
38.设大学教学数据库中有下面一些数据:
·Dept(系)有属性dno(系编号)和dname(系名);
·Student(学生)有属性sno(学号)和sname(学生姓名);
·Course(课程)有属性cno(课程号)、cname(课程名)和teacher(任课教师);
·学生选修课程有个grade(成绩)。
如果规定:
每个系有若干学生,每个学生只能属于一个系;每个系开设了若干课程,每门课程由一个系开设;每个学生可以选修若干课程,每门课程可以有若干学生选修。
(1)试画出ER图,并在图上注明属性、联系类型、实体标识符;
(2)将ER图转换成关系模型,并说明主键和外键。
39.
(1)试画出第38题数据库的对象联系图。
(2)试画出第38题数据库的UML类图。
模拟试题3答案
一.单项选择题答案
1.A2.B3.C4.C5.B
6.B7.C8.D9.B10.D
二.填空题答案
11.三级结构之间存在着两级映象12.谓词
13.行列子集视图14.对查询结果执行聚合操作
15.2AB和BC16.恢复管理子系统
17.属性联系方法interface18.沿着箭头方向存在一个循环
19.实体集实体联系20.集中式DB分布式DB
三.简答题答案
21.答:
在数据库设计中,概念设计使用的是概念数据模型,逻辑设计中使用的是结构数据模型。
概念模型是一种独立于硬件和软件的模型,完全不涉及信息在系统中的表现,只是用来描述某个特定组织所关心的信息结构。
这种模型是从用户的观点对数据建模,必须充分反映用户的需求,并得到用户的确认才可定下来。
它是现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具,其典型代表是ER模型。
结构模型用于描述数据库的逻辑结构,与DBMS有关。
这种模型是从计算机的观点对数据建模。
它是现实世界的第二层抽象,是数据库设计人员和应用程序员之间进行交流的工具。
其典型代表是层次、网状、关系和面向对象模型。
22.答:
元组表达式的值为:
AF
1
1
12
13
42
43
域表达式的值为:
ABC
456
789
23.答:
查询语句为:
检索至少不选修编号为C2和C4课程的学生学号。
关系代数表达式为:
πS#(S)-πS#(σC#='C2'∨C#='C4'(S⋈SC))
(注意:
此处,“不选修C2和C4课程”的对立面是“选修C2或C4课程”)
24.答:
SQL嵌入式DML语句在下列情况不必涉及游标操作:
1INSERT、DELETE和UPDATE语句;
2对于SELECT语句,如果已知查询结果肯定是单元组值时。
25.答:
从已知D→B可知AD→AB;再据已知AB→C和推理规则可推出AD→ABCD。
所以(AD)+=ABCD。
从AD的闭包为ABCD,可知所有左部为AD的FD有24,即16个。
26.答:
在生成的关系模式的关系中出现冗余和异常现象。
例如部门与职工之间联系是1:
N,若在部门模式中加入职工信息,那么部门模式将是如下形式:
DEPT(D#,DNAME,E#)
如果一个部门有20个职工,那么关系中就要出现20个元组,即该部门的部门名(DNAME)就要重复20次,这就是冗余。
在部门名修改时,稍不谨慎,就会产生数据不一致现象。
27.答:
有可能存在一个事务序列,其中每个事务都申请对某数据项加S锁,且每个事务在授权加锁后一小段时内释放封锁,此时若另有一个事务T1欲在该数据项上加X锁,则将永远轮不上封锁的机会。
这种现象称为“饿死”(starvation)。
可以用下列方式授权加锁来避免事务饿死。
当事务T2中请对数据项Q加S锁时,授权加锁的条件是:
①不存在在数据项Q上持有X锁的其他事务;
②不存在等待对数据项Q加锁且先于T2申请加锁的事务。
28.答:
与传统的关系模型相比,对象关系模型有下列扩充:
(1)在定义语言上有三个扩充:
·数据类型的扩充(引入复合类型);
·在类型一级和表一级实现继承性;
·使用“引用类型”。
(2)在查询语言方面,用户需记住属性值是单值还是多值。
在多值时,需定义新的元组变量。
29.答:
为了减轻集中式系统主机的负担,才产生了两层式C/S结构。
两层C/S结构实现了功能的分布,但还不均衡。
为了减轻客户端的负担,引入了三层C/S结构。
三层结构的思路是使客户机变“瘦”,服务器品种繁多。
为了适应企业业务环境的变化速度,以及新的技术、新的应用。
将应用逻辑集中到中间层,实现了多层结构的C/S(即B/S)。
30.答:
这种分层的模式结构为理解DDB提供了一种通用的概念结构。
它有三个显著的特征:
(1)数据分片和数据分配概念的分离,形成了“数据分布独立型”概念。
(2)数据冗余的显式控制。
数据在各个场地的分配情况在分配模式中一目了然,便于系统管理。
(3)局部DBMS的独立性。
这个特征也称为“局部映射透明性”。
此特征允许我们在不考虑局部DBMS专用数据模型的情况下,研究DDB管理的有关问题。
四.设计题答案
31.解:
关系代数表达式为:
πG#,GNAME(σSNAME='莘庄'(STORE⋈SG⋈GOODS))
元组表达式为:
{t|(u)(v)(w)(GOODS(u)∧SG(v)∧STORE(w)
∧u[1]=v[2]∧v[1]=w[1]∧w[2]='莘庄'∧t[1]=u[1]∧t[2]=u[2])}
关系逻辑规则如下:
W(x,y)GOODS(x,y,a)∧SG(b,x,c)∧STORE(b,'莘庄',d)
SELECT语句为:
SELECTA.G#,GNAME
FROMGOODSASA,SGASB,STOREASC
WHEREA.G#=B.G#ANDB.S#=C.S#ANDSNAME='莘庄';
32.解:
关系代数表达式为:
πS#,SNAME(STORE⋈(πS#,G#(SG)÷πG#(GOODS)))
元组表达式为:
{t|(u)(v)(w)(STORE(u)∧GOODS(v)∧SG(w)∧w[1]=u[1]∧w[2]=v[1]∧t[1]=u[1]∧t[2]=u[2])}
关系逻辑规则如下:
W(x,y)←STORE(x,y,a)∧┐GOODS(b,c,d)∧┐SG(x,b,e)
SELECT语句为:
SELECTS#,SNAME
FROMSTORE
WHERENOTEXISTS
(SELECT*
FROMGOODS
WHERENOTEXISTS
(SELECT*
FROMSG
WHERESG.S#=STORE.S#
ANDSG.G#=GOODS.G#));
33.解:
SELECT语句为:
SELECTS#,SUM(QUANTITY*PRICE)ASSUM_VALUE
FROMSG,GOODS
WHERESG.G#=GOODS.G#
GROUPBYS#;
34.解:
CREATEASSERTIONASSE6CHECK
(20>=ALL(SELECTCOUNT(SG.G#)
FROMSG,GOODS
WHERESG.G#=GOODS.G#ANDPRICE>10000
GROUPBYS#));
35.解:
(1)CREATETYPEMyStringcharvarying;
CREATETABLEuniversity(unameMyString,
cityMyString,
staffsetof(ref(student)));
CREATETABLEstudent(snoMyString,
snameMystring,
cityMyString,
languagessetof(MyString),
studyref(university));
(2)SELECTA.uname,A.city,B.sno,B.sname
FROMuniversityasA,A.staffasB
WHEREA.city=B.city;
也可以用另一种写法:
SELECTB.study.uname,B.study.city,B.sno,B.sname
FROMstudentasB
WHEREB.study.city=B.city;
五.综合题答案
36.解:
⑴R的基本FD有三个:
(职工名,项目名)工资
项目名部门名
部门名部门经理
关键码为(职工名,项目名)。
⑵根据⑴,R中存在下列两个FD:
(职工名,项目名)(部门名,部门经理)
项目名(部门名,部门经理)
其中前一个FD是一个局部依赖,因此R不是2NF模式。
R应分解成两个模式:
R1(项目名,部门名,部门经理)
R2(职工名,项目名,工资)
R1和R2都是2NF模式。
⑶R2已是3NF模式。
在R1中,由于存在两个FD:
项目名部门名
部门名部门经理
即存在一个传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:
R11(项目名,部门名),R12(部门名,部门经理)。
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,ρ={R11,R12,R2}。
37.解:
(1)ER图如图9所示。
图9
(2)转换成的关系模型应具有4个关系模式:
教师(工号,姓名,职称)
学生(学号,姓名,性别,年龄,教师工号)
课程(课程号,课程名称,教师工号)
选课(学号,课程号,成绩)
(3)图9的ER图的对象联系图如图10所示。
三个实体类型转换成三个对象类型,一个M:
N联系类型转换成一个对象类型。
因此对象联系图中共有四个对象类型,如图10所示。
图中未标出基本数据类型属性,具体如下:
教师(工号,姓名,职称)
学生(学号,姓名,性别,年龄)
课程(课程号,课程名称,教材)
选课(成绩)
图10
(4)图9的ER图的UML类图如图11所示。
图中,三个实体类型转换成三个类,一个M:
N联系类型转换成一个关联类。
图11
38.解:
(1)ER图如图12所示。
图12
(2)转换成的关系模型应具有4个关系模式:
Dept(dno,dname)
Course(cno,cname,teacher,dno)
Student(sno,sname,dno)
SC(sno,cno,grade)
39.
(1)图12的ER图的对象联系图如图13所示。
三个实体类型转换成三个对象类型,一个M:
N联系类型转换成一个对象类型。
因此对象联系图中共有四个对象类型,如图13所示。
图中未标出基本数据类型属性,具体如下:
Dept(dno,dname)
Course(cno,cname,teacher)
Student(sno,sname)
SC(grade)
图13
(2)图12的ER图的UML类图如图14所示。
图中,三个实体类型转换成三个类,一个M:
N联系类型转换成一个关联类。
图14