2006年下期中南大学《数据库原理及程序设计》试题及答案 一、判断题(判断下列各题是否正确,正确的划√,错误的划×,每小题1分,共25分) 1.数据库模型或数据模型是一个描述现实世界如何表示成计算机信息的定义集合。 ( ) 2.在数据库系统中,核心的部分是应用程序。 ( ) 3.码可以选作主码,但一个主码不总是候选码. ( ) 4.视图、表、同义词是一样,可以进行更新操作的。 ( ) 5.在关系的规则中,不允许出现重复的元组,而在ORACLE的表中却可以输入多条所有字段值都相同的记录。 ( ) 6.表T中仅有两个元组,我们可以说T一定是BCNF. ( ) 7.在数据表定义时设置Primary key是数据库的实体完整性控制。 ( ) 8.R.A(R.B, R.A(R.C与R.A(R.(B,C)等价 (其中A,B,C为R的属性) (  ) 9. 模式是数据库局部逻辑结构。 ( ) 10.数据库是整个数据库系统的基础 ( ) 11. 已知关系模式 TEACH2( C, T, H),其中 C表示课程,T表示教员, H表示参考书,假设每一门课程可由多个教员讲授,每个教员可使用不同的参考书,并且可讲授不同的课,则TEACH2为全码关系。( ) 12.已知关系模式R(A, B, C),满足函数依赖集F={A->B,B->C,C->A},则R不存在非主属性,因此,一定属于BCNF 。 ( ) 13. 在数据表定义时设置主键(Primary key)则不允许插入全为空的记录。( ) 14、若R.A(R.B, R.A(R.C,则R.A(R.(B,C) (其中A,B,C为R的属性) ( ) 15、若R.(B,C,D)(R.(A,D), 则R.(B,C)(R.(A,D)(其中A,B,C,D为R的属性) ( ) 16、VFP是关系统数据库系统,而且是完备式的关系系统。( ) 17、在ORACLE的表中可以直接输入空值记录。( ) 18、关系模式R属性的属性或属性集如果具有唯一性,叫关系模式R的码。( ) 19、关系的优化是将表尽可能地变小(列数与行数都少)。( ) 20、外模式是数据库全局逻辑结构。 ( ) 21、现实世界的对象在数据库中用实体描述 ( ) 22、在基于有数据库的软件系统设计与实施中,只有程序编制是最主要的。 ( ) 23、对于数据量大的系统都应该采用数据库技术进行开发( ) 24、基于数据库的编程工具一般通过ODBC与数据库相联 ( ) 25、关系数据库已经是最好的了,现在的应用都能得到满足 ( ) 二、填空题(请把答案填在题中的横线上,每空1分,共30分) (1) 在数据库的三级模式,包括内模式、 、与___________。 (2) 在关系数据库中,表(table)是三级模式结构中的 。 (3) SQL的四种功能为操纵、_______________、_________________、________________。 (4) 数据库保护包括安全性、________________、________________与恢复。 (5) 数据库设计的一般步骤有:需求分析、___________、____________、 _______________、________________、运行与维护等。 (6) 关系系统的完整性控制包括实体完整性、____________、____________。 (7) DB设计中优化设计的目标是_______________、____________________。 (8) E-R图的主要元素是实体型、____________、____________。 (9) 常用的关系运算是关系_______与关系演算,其中关系演算包括_______演算与域演算。 (10) 数据库中的数据一般包括 数据与媒体数据. (11) 关系模式R的码都为单属性,则R一定是第 _ 范式。 (12) 数据库系统一般包括数据库、___________、___________、___________与用户。 (13) 现在流行的数据库管理系统有ORACLE、___________、___________、___________、___________、___________、iBase等。 三、简要回答下列问题(每小题3分,共12分) 1.为什么说DB2是关系系统,试举例说明。 2.试比较文件系统与数据库系统的优缺点。 3.SQL怎样实现关系系统的完整性约束的? 4.完备式关系系统与最小关系系统的主要区别? 四、(共15分)现有如下E-R图, 实体的主要属性如下,其中下划线部分为主码: 仓库(仓库号、仓库名、面积、货位数、…) 零件(零件号、零件名称、规格型号、计量单位、供货商号、价格、…) 库存(?,?,库存量) 试用SQL表示(即定义)上述E-R图所有的实体及联系,其中实体只需表示列出的主要属性,要求反映主码与联系(外码),其中的类型长度可以根据需要确定。?,?处需要填上相应的属性。 在上述定义的每个表中输入一个有代表性的记录,体现相互间的联系。 用SQL与关系代数、元组演算表示查询: 找出职工“张明亮”的职工号、部门号、工作日期 找出零件名为“镙丝II”的零件号与规格型号,计量单位 试用SQL表示查询: 1)找出“张明亮”所管理仓库的总面积与总货位数。 2)找出所管理零件总价值(价格*总数量)超过50万的职工号及职工名。 5、删除价格大于10万的零件及库存记录。 6、建立视图表示关系(仓库号、仓库名、零件号、零件名、计划价格、库存量) 五、(每小题5分,供10分) 1.已知关系模式R(A、B、C 、D、E)满足的函数依敕为: F={A—>B、B—>D、C—>B、DE—>A } (1)求R所有的码,并写出求解过程。 (2)判断R的最高范式,,并说明理由 2.已知关系模式R(A、B、C 、D、E)满足的函数依敕为: F={AB—>C、B—>D,D—>B,BD—>E } (1)求R所有的码,并写出求解过程。 (2)判断R的最高范式,,并说明理由 六、程序填空(共8分) 以下程序表示产生以’i3011’开头的第7位不为4而第8位固定为3的多个学号,请将程序中的空格补充完整(其中的数字与()只是作为第几空说明,不作程序) DECLARE v_LoopCounter (1___________):= 1; BEGIN while v_LoopCounter< 36 LOOP If v_LoopCounter <10 and (2________________) then INSERT INTO temp_table (sno) select ‘i30110’||to_char(v_LoopCounter)||’3’ from dual; Else if (3________________) then INSERT INTO temp_table (sno) Select ‘i3011’||to_char(v_LoopCounter)||’3’ from dual; (4_________) v_LoopCounter := v_LoopCounter + 1; end loop; END; 程序运行完成后,一共产生了(5_________)个学号。 参考答案 判断题: 1 ╳ 数据是描述事物的符号记录。2 √ 3 √ 4 ╳ 某些视图是不能更新数据的,例如使用DISTINCT函数的视图等。 5 √ 6 ╳不存在非主属性并不一定是BCNF。 7 √ 8 ╳ 9 √ 10 √ 11 √ 12 √ 13 √ 14 √ 15 ╳ R.(B,C)(R.(A,D)不一定 16 ╳ VFP只是最小关系系统。 17 √ 18 ╳ 还需要最小性。 19 ╳ 关系的优化是进行极小化处理,消除冗余的联系。 20 ╳ 外模式是局部数据逻辑结构。 21 ╳ 现实世界的对象在数据库中用表及其联系描述。 22 ╳ 最主要的应该是根据用户需要构造最优的数据库模式 23 ╳ 不一定 24 √ 25 ╳ 随着数据库技术的发展,又有新的数据库系统出现,如对象—关系。 填空题: (1) 外模式 内模式 (2) 内模式 (3) 查询 定义 控制 (4) 完整性 备份 (5) 概念结构设计 逻辑结构设计 数据库物理设计 数据库实施 (6) 参照完整性 用户定义的完整性 (7) 确定数据依赖 对关系模式进行必要的分解 (8) 属性 联系 (9) 代数 元组关系 数字 2 (12) 数据库管理系统(及其开发工具) 应用系统 数据库管理员 (13) ACCESS SQL Sybase DB2 Mysql 简要回答下列问题 1. 因为支持SQL,而SQL是表示表结构的,支持选择、投影、联接,而且不依赖于任何物理路径。如建表create table ..,选择、投影、联接分别可表示为:select,满足关系系统的定义,所以说DB2是关系系统。 文件系统的优点: ⑴数据可以长期保存 ⑵由文件系统管理数据 缺点: ⑴数据共享性差,冗余度大 ⑵数据独立性差 与文件系统相比,数据库系统有以下优点: ⑴数据库系统实现整体数据的结构化,是数据库系统与文件系统的本质区别 ⑵数据的共享性高,冗余度低,易扩充 ⑶数据独立性高 ⑷数据由数据库管理系统统一管理和控制 3. 关系数据库系统包含六类完整性约束:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束和动态关系约束。 SQL语言定义完整性约束条件的功能主要体现在CREATE TABLE语句和ALTER TABLE中,可以在这些语句中定义码、取值唯一的列、不允许空值的列、外码(参照完整性)及其他一些约束条件。 4. 最小关系系统仅支持数据结构和三种关系操作,而关系完备的系统支持数据结构和所有的关系代数操作(功能上与关系代数等价),主要是增加了对集合运算的支持。 四、 1. 建立仓库表Create table warehouse( wno varchar2(10) primary key, wname varchar2(20), guard varchar2(20), square number(10,2), cou int); 建立零件表Create table material( mno varchar2(10) primary key, mname varchar2(20), type varchar2(10), unit varchar2(10), cusnum varchar2(10), price number(10,2)); 建立库存表Create table storage( wno varchar2(10) references warehouse(wno), mno varchar2(10) references material(mno), store number(10,2), primary key(wno,mno)); insert into employee values(‘k10001' ,’计划科’,‘张明',2003-11-14); insert into warehouse values(‘w001',‘仓库1',’刘成’,1000,100); insert into material values(‘030001',‘螺母',‘中号’,‘只’,‘c1001’,5); insert into storage values(‘w001',‘030001',2000); 用SQL表示 select eno, dno, edate from employee where ename=’张明亮’; select mno, type, unit from material where mname=’螺丝II’; 用关系代数表示   用元组演算表示 GET W (employee.eno,employee.dno,employee.edate):employee.ename=’张明亮’; GET W (material.mno,material.type,material.unit):material.mname=’螺丝II’; 4. 1)找出“张明亮”所管理仓库的总面积与总货位数。 Select sum(size), sum(num) from warehouse, store, emp where warehouse.wno=store.wno and emp.emo=store.emo and ename=‘张明’ group by ename 2)找出所管理零件总价值(单价用计划价格)超过50万的职工号及职工名。 Select eno, ename from emp where eno in (select eno from store, part where store.pno=part.pno group by eno having sum(l_price*num)>=500000) 5. delete from storage where storage.mno=material.mno and material.price>100000; delete from material where price>100000; 6. Create view IS_M As Select warehouse.wno, wname, material.mno, mname, price, store From warehouse, material, storage Where warehouse.wno=storage.wno and material.mno=storage.mno; 五、1.⑴由已知条件可知:函数关系的右属性不包含E,所以码中必包含E 易知E不能推出所有其它属性,所以不是码 同理考虑两个属性的组合,分析知只有{BE}和{CE}能推出所有其它属性 依此考虑三个属性的组合{ADE}不能推出其它所有属性 综上可知R的码有{BE}和{CE} ⑵若码是{CE},不存在部分依赖和传递依赖,但存在决定因素B不包含码,故R是3NF; 若码是{BE},因为存在{B->D}部分依赖,所以R是1NF。 综上R的最高范式是3NF。 2.⑴由已知条件可知:函数关系的右属性不包含A,所以码中必包含A 易知A不能推出所有其它属性,所以不是码 同理考虑两个属性的组合,分析知只有{AB}和{AD}能推出其它所有属性 因为只有四个属性,因此不存在三个属性的组合 综上可知R的码有{AB}和{AD} ⑵若码是{AB},因为存在{B->D}部分依赖,所以R是1NF; 若码是{AD},因为存在{D->B}部分依赖,所以R是1NF。 综上R的最高范式是1NF。 六、程序填空 1 number 2 mod(v_LoopCounter,10)<>4 3 v_LoopCounter >=10 4 ELSE 5 36