一、单选题(20分,每题1分)1.A.2.A.3.A.4.A.关系数据模型的基本数据结构是( )。树B.图C.索引D.关系提供数据库定义、数据操纵、数据控制和数据库维护功能的软件称为( )。OSB.DSC.DBMSD.DBS元数据是指( )。数据结构的描述B.数据项的描述C.数据的来源D.基本数据下面对关系中属性的描述,错误的是( )。属性的次序可以任意交换B.D.允许多值属性每个属性中所有数据来自同一属性域C.属性名唯一5.超码、候选码和主码之间的关系是( )。B.D.超码主码候选码主码超码候选码A.超码候选码主码C.6.A.7.主码候选码超码关系数据库实现数据之间联系的方法是( )。主码B.外码C.候选码D.超码如下所示关系R(A,B,C,D)中,可以作为主码的属性组是( )。A1221B2112BCC.CDC1111D.D1212AD或BDA.8.ABB.设有如下所示关系R(A,B)和S(C,D,A),R的主码是A,S的主码是C、外码是A(参照R.A),则能够插入关系S的元组是( )。RA123A.C.9.(1,2,3)(1,2,1)B456B.D.(3,2,1)(4,5,6)SC12D34A12将上题中的2个关系R和S(未插入元组前)进行R*∞S后的运算结果包含( )个元组。A.5B.6C.3D.210.对第8题中的关系R和S,若将属性A定义为S的外码时使用了ONUPDATECASCADE短语(级联更新),将R中第一个元组的A属性值更新为4时,S中第一个元组A属性的值(A.息11.设有一个关系R(A,B),如果要找出B属性的最后一个字母为A,并且至少包含2个字母的查询条件子句应写成WHERE B LIKE ( )。A.‘_A%’B.‘_A’C.‘_%A’D.‘%A’不变B.变为4)。C.变为NULLD.拒绝更新,返回错误信12.SQL中谓词EXIST可用来测试一个集合是否( )。A.有重复元组B.有重复列名C.为非空集合D.有空值13.条件子句WHERE工资ALL(SELECT工资FROM职工WHERE部门号=1)的含义为()。A.B.C.D.比1号部门中某个职工的工资高比1号部门中所有职工的工资都高比1号部门中所有职工的工资总和高无法比较,返回错误信息14.下列关于数据库系统中空值的描述错误的是( )。A.包含空值的算术表达式的运算结果为NULLB.C.D.COUNT(*)将统计包含空值的行空值就是0或者空字符串可通过IS NULL运算符测试是否为空值15.在视图上不能完成的操作是( )。A.C.更新视图在视图上定义新的基本表B.D.查询在视图上定义新视图16.数据库设计的( )阶段的主要任务是调查和分析用户的应用需要,为概念结构设计做好充分准备。A.需求分析B.逻辑设计C.物理设计D.运行设计17.下列关于触发器的描述错误的是( )。A.B.C.D.触发器是一种实现复杂完整性约束的特殊存储过程触发器必须创建在一个特定的表上触发器通过EXECUTE语句调用触发器中使用了两张专用的临时表inserted和deleted18.事务使数据库“从一个一致状态转变到另一个一致状态”的性质称为事务的( )。A.原子性B.一致性C.隔离性D.持久性19.下列关于封锁的描述错误的是( )。A.B.C.D.封锁可以避免数据的不一致性,但可能会引起系统死锁加锁协议中规定“先申请先服务”的原则,可以避免数据库系统出现活锁封锁对象的大小称为封锁的粒度两段锁协议能够预防死锁20.以下不属于服务器端脚本语言的是( )。A.JSPB.PHPC.ASPD.ADO二、填空题(16分,每空2分)1.2.3.B/S结构是( )结构的简称。( )管理机制可以简化授权的工作量。( )是用于协调SQL的集合处理方式与单记录处理方式的机制。4.设有3个关系模式:职工(职工号,姓名,年龄,性别)公司(公司号,名称,地址)工作(职工号,公司号,工资)在定义表结构时,用SQL子句实现下列完整性约束:(1)职工表中职工号非空且唯一( )。(2)工作表中职工号的值必须是职工表中的有效职工号( )。(3)职工的工资不能低于800元( )。(4)男职工的年龄在18~55岁之间( )。5.对上题中的3个关系,写出检索金山公司所有职工的姓名和工资的关系代数表达式( )。三、简答题(14分)1.2.3.试述文件系统的主要缺陷。(4分)简述数据库恢复的基本原理和REDO/UNDO恢复策略。(4分)设有如下两个事务:T1:读B;A=B+1;写回AT2:读A;B=A+1;写回B(1)设A、B的初值均为2,若某一并发调度的执行结果为A=3、B=3,则该调度是否正确?为什么?(3分)(2)利用封锁的方法给出一个可串行化调度,并给出执行结果。(3分)四、设计题(50分)1.某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每个职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名。(1)请根据上述规则设计此数据库的E-R模型,要求在E-R图中注明属性和联系的类型。(6分)(2)将E-R模型转换成关系模型,并指出每个关系模式的主码。(6分)2.设有关系模式R(运动员编号,比赛项目,成绩,比赛类别,比赛主管),如果规定:每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。试完成以下题目:(1)写出关系模式R的基本函数依赖集,并找出候选码。(4分)(2)判断R最高达到第几范式,并说明理由。(2分)(3)如果有必要,将R分解成3NF模式集。(6分)3.设有图书关系BOOK(BID,BNAME,QTY),属性依次是书号、书名、库存数量。规定当一批图书出库时,首先判断库存数量,如果大于或等于出库数量,则执行出库操作,并通知客户库存余量;否则,不执行出库操作,并发出“库存不足”警告信息。设计一个存储过程来实现此功能,该存储过程有书号(@bid)和出库数量(@s)2个参数。同时,要求设计一个SQL程序验证存储过程的作用。(10分)4.设有4个关系模式:供应商关系:S(SNO,SNAME,CITY),属性依次是供应商号、供应商名称和所在城市;零件关系:P(PNO,PNAME,COLOR),属性依次是零件号、零件名和颜色;工程关系:J(JNO,JNAME,CITY),属性依次是工程号、工程名和所在城市;供应关系:SPJ(SNO,PNO,JNO,QTY),属性依次是供应商号、零件号、工程号和数量。用SQL语句实现下列操作:(1)查询S1号供应商所在城市。(2分)(2)查询为J1号工程提供P1号零件的供应商号和供应数量,查询结果按供应数量降序排列。(2分)(3)查询为J1号工程提供红色零件的供应商号。(2分)(4)查询与其提供零件的供应商所在城市为同一城市的工程号。(2分)(5)统计杭州供应商的数量。(2分)(6)统计每个工程的零件总数。(2分)(7)查询比S1号供应商供应的零件数量多的供应商号。(2分)(8)删除为J1号工程提供零件的供应商信息。(2分)标准答案及评分标准一、单选题(20分)1D11C2C2C13B3A14C4B15C5C16A6B17C7D18B8B19D9C10D10B2二、填空题(16分)1234(1)4(2)4(3)4(4)5浏览器/服务器角色游标PRIMARYKEY(职工号)FOREIGNKEY(职工号)REFERENCES职工(职工号)CHECK(工资=800)CHECK(性别=‘男’AND年龄=18AND年龄=55)π姓名,工资(σ公司名=‘金山’(职工∞工作∞公司))三、简答题(14分)1.答:(1)数据很难共享(1分)(2)数据冗余(1分)(3)数据独立性差(1分)(4)数据控制困难(1分)。2.答:数据库恢复的基本原理是利用后备副本将数据恢复到转储时的一致状态,利用事务日志将数据库恢复到故障前事务成功提交时的一致状态。(2分)DBMS的恢复子系统根据事务日志的记载重做(REDO)已提交的事务,撤销(UNDO)未提交的事务,确保事务的原子性,使数据库恢复到某个一致状态,这种恢复的方法称为REDO/UNDO恢复策略。(2分)3.答:(1)T1、T2的串行执行结果为A=3、B=4,T2、T1的串行执行结果为B=3、A=4,T1、T3并发执行的结果与任一串行执行结果均不相同,所以该调度不正确。(3分)(2)最后结果为A=3、B=4,是可串行化的调度。(3分)T1SLOCKBY=B=2XLOCKASLOCKAA=Y+1写回A(=3)UNLOCKBUNLOCKA等待等待等待等待X=A=3XLOCKBB=X+1写回B(=4)UNLOCKAUNLOCKBT2四、设计题(50分)1.(1)(6分)工厂编号厂名地址工厂m计划数量n产品生产1聘用n职工工资聘期产品编号(2)产品名规格职工号姓名工厂(工厂编号,厂名,厂址)(1分)职工(职工号,姓名,聘期,工资,工厂编号)(2分)产品(产品编号,产品名,规格)(1分)生产(工厂编号,产品编号,计划数量)(2分)2.(1)FD={(运动员编号,比赛项目)→成绩,比赛项目→比赛类别,比赛类别→比赛主管}(2分)候选码为(运动员编号,比赛项目)(2分)(2)比赛类别属性部分函数依赖于候选码,故R为1NF。(2分)(3)R1(比赛项目,比赛类别)(2分)R2(比赛类别,比赛主管)(2分)R3(运动员编号,比赛项目,成绩)(2分)3.存储过程:CREATEPROCEDUREBOOK_QTY@bidINT,@sINTASDECLARE@bsINTSELECT@bs=QTYFROMBOOKWHEREBID=@bid--(2分)IF@bs=@sBEGINUPDATEBOOKSETQTY=QTY-@sWHEREBID=@bid--(2分)--(1分)--(2分)PRINT‘库存余量’+STR(@bs-@s)ENDELSEPRINT‘库存不足’GO验证程序:(2分)INSERTINTOBOOKVALUES(1,‘A’,100)INSERTINTOBOOKVALUES(2,‘B’,200)EXECUTEBOOK_QTY1,50EXECUTEBOOK_QTY2,2504.(1)SELECTCITYFROMSWHERESNO=‘S1’(2分)(2)SELECTSNO,QTYFROMSPJWHEREJNO=‘J1’ANDPNO=‘P1’ORDERBYQTYDESC(2分)(3)SELECTSNOFROMPJOINSPJON(P.PNO=SPJ.PNO)WHERECOLOR=‘红’ANDJNO=‘J1’(2分)(4)SELECTJ.PNOFROMJJOINSPJON(J.PNO=SPJ.PNO)JOINSON(S.SNO=SPJ.SNO)WHEREJ.CITY=S.CITY(2分)(5)SELECTCOUNT(SNO)FROMSWHERECITY=‘杭州’(2分)(6)SELECTJNO,SUM(QTY)FROMSPJGROUPBYJNO(2分)(7)SELECTSNOFROMSPJGROUPBYSNOHAVINGSUM(QTY)(SELECTSUM(QTY)FROMSPJWHERESNO=‘S1’)(2分)(8)DELETEFROMSWHERESNOIN(SELECTSNOFROMSPJWHEREJNO=‘J1’)(2分)--(1分)