填空
35【答案】TOP 3 WITH TIES
【解析】希望选出商品数量最多的前3类商品,并获得相应的商品类别和数量。with ties一般是和Top 、 order by相结合使用,表示包括与最后一行order by后面的参数取值并列的结果。
36在SQL Server 2008中,每个数据页可存储8060字节的数据。设表T有10000行数据,每行占用4031字节,则存储该表数据大约需要 【36】 MB存储空间,其空间利用率大约是 【37】 %。(存储空间和空间利用率均保留到整数,小数点后按四舍五入处理)
【答案】80 50
【解析】在SQL Server 中,数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号),磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。在 SQL Server 中,页的大小为 8 KB,这意味着 SQL Server 数据库中每 MB 有 128 页,每页的开头是 96 字节的标头,用于存储有关页的系统信息,此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。行不能跨页,但是行的部分可以移出行所在的页,因此行实际可能非常大。页的单个行中的最大数据量和开销是 8,060 字节,由于题目中2行数据加起来的存储空间大于数据页,所以每页只能存储一行,因为1M有128页,也就可以存储128行,10000/128得80MB空间。至于空间利用率(实际存储数据量/所占的存储空间),考虑到每行4031字节为8060的一半,所以近似得到50%。
39数据库管理系统一般通过周期性检查 【40】 图来实现死锁检测。
【答案】事务等待
【解析】事务等待图是一个有向图G=(T, U),T为结点的集合,每个结点表示正在运行的事务;U为边的集合,每条边表示事务等待的情况。若事务T1等待事务T2,则T1、T2之间有一条有向边,从 T1 指向 T2。如果发现图中存在回路,则表示系统中出现了死锁。
42【答案】REDO
【解析】系统故障造成数据库不一致状态的原因有两个,一是未完成的事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。对于故障发生前已提交的事务(既有BEGIN Transaction,又有commit)做redo操作,对于故障发生时尚未完成的事务(只有BEGIN Transaction,而没有commit或rollback)做undo操作。
31.数据字典是对系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典在数据库设计中占有很重要的地位,通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分
32.【答案】完整性约束
【解析】数据模型通常由数据结构、数据操作和完整性约束三部分构成。数据的完整性约束是一组完整性规则,它是给定的数据模型中数据及其联系所有的制约和依存的规则,用以限定符合数据模型的数据库状态及状态的变化,以保证数据的正确、有效、相容。实体的完整性规定,主码的任何属性都不能为空,因为概念模型中实体和联系都是可区分的,而且它们以码为唯一性标识。如果主码的属性值可以为空,则意味着在概念模型中存在着不以码为唯一性标识的实体。显然前后矛盾。
33【解析】顺序图主要用于描述系统内对象之间的消息发送和接收序列。它有两个坐标轴:纵向表示时间的持续过程,横向表示对象,每一个对象用矩形框表示,纵向的虚线表示对象在序列中的执行情况。顺序图的第一个消息一般在左边第一个对象的生命线顶端,其他消息按时间顺序相继插入顺序图中,后面发生的消息的线应比前面发生的消息的线画得低一些,以表示它们之间的时间关系。
34两个关系R与S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃,同样,S中某些元组也可能被舍弃。如果把舍弃的元组也保存在结果关系中,而在其它属性上填空值(Null),那么这种连接就叫外连接。题中两个表做外连接,那些没有对应教师的系也会被留下来,方便查看。
41【答案】隔离
【解析】当多个用户并发地存取数据时就会产生多个事务同时存取一个数据的情况,若对并发操作不加控制就可能会存取不正确的数据,破坏事务的一致性和数据库的一致性。并发操作带来的数据不一致性主要包括丢失修改、不可重复读和读"脏"数据,产生上述三类数据的不一致性主要原因就是并发操作破坏了事务的隔离性,所以数据库管理系统必须提供并发控制机制。
43【答案】主题
【解析】数据仓库是为了构建新的分析处理环境而出现的一种数据存储和组织技术,基本特征包括:数据是面向主题的、集成的、非易失的、随时间不断变化的。主题是一个在较高层次上对数据的抽象,这使得面向主题的数据组织可以独立于数据的处理逻辑,因而可以在这种数据环境上方便地开发新的分析型应用。
应用
46
设某教学管理系统,其查询模块需要提供如下功能:
Ⅰ.查询系信息,列出各系编号、系名和系办公电话;
Ⅱ.查询某系教师的信息,列出教师号、教师名、工资和聘用日期;
Ⅲ.查询某教师讲授的课程信息,列出课程号、课程名和学分;
Ⅳ.查询讲授某门课程的教师信息,列出教师名和职称;
Ⅴ.查询某门课程的先修课程信息,列出先修课程号和先修课程名。
系统有如下业务规则:
Ⅰ.一个系可聘用多名教师,一名教师只能受聘于一个系;
Ⅱ.一名教师可讲授多门课程,一门课程可由多名教师讲授;
Ⅲ.一门课程可以有多门先修课程,也可以没有先修课程。
(1)请根据以上查询功能与业务规则,用ER图描述该系统的概念模型。(5分)
(2)将ER图转换为满足3NF的关系模式,并说明每个关系模式的主码和外码。(5分)
【解题思路】
E-R图也称实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。为了简化E-R图的处置,现实世界的事物能作为属性对待的则尽量作为属性对待。实体与属性的划分给出如下两条规则:①作为"属性",不能再具有需要描述的性质,"属性"必须是不可分的数据项,不能包含其它属性。②"属性"不能与其它实体有联系,即E-R图中所表示的联系是实体之间的联系。本题中一个系可以聘用多名教师,一名教师只能受聘于一个系,所以系实体与教师实体有联系;一名教师可以讲授多门课程,一门课程可由多名教师讲授,所以教师实体与课程实体有联系,一门课程可以有多门先修课程,所以课程间也有联系。
(2)【参考答案】
由于题目要求满足3NF范式,ER图向关系模式转换采用方法一,关系名采用实体名或联系名。本题中有两个一对多、一个多对多联系,因此在转换时一对多联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的键构成;主键由多端实体的键组成。m:n(多对多)联系转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。
系(系编号,系名,系办公室电话),无外码
教师(教师号,教师名,职称,工资,聘用日期,系编号),外码:系编号
先修课程(先修课程号,先修课程名)
课程(课程号,课程名,学分,先修课程号),外码:先修课程号
讲授(教师号,课程号)
因为转换过来的关系模式中,不存在属性依赖于其他非主属性,因此对转换的结果不需要优化。
【解题思路】
在将ER图向关系模式转换时规则如下:
①1:1(一对一)联系。
方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的键构成;主键由两个实体中的任意一个键构成。
方法二:联系与一端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内,主键不变。
②1:m(一对多)联系。
方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的键构成;主键由m端实体的键组成。
方法二:与m端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内,主键不变。
③m:n(多对多)联系转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。
关系模式满足3NF,则必须满足关系模式中每一个非主属性既不部分依赖于码也不传递依赖于码,简而言之,第三范式就是属性不依赖于其他非主属性。
47
设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。
请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量×(销售单价-单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。
【参考答案】
CREATE PROCEDURE PRODUCT @商品号 int,@年份 int,@毛利 int output
AS
DECLARE
@某商品销售量 int,@某商品进价 int,@某商品销售单价 int /*中间变量定义*/
BEGIN
Select @某商品进价=单价 from 商品表 where @商品号=商品号
Select @某商品销售单价=销售单价,@某商品销售量=count(*) from 销售表 where
@商品号=商品号 and 销售时间=@年份
IF @某商品进价 is NULL THEN /*判断该商品是否存在*/
ROLLBACK;
RETURN;
END IF
IF @某商品销售单价 is NULL THEN /*判断该商品是否可卖*/
ROLLBACK;
RETURN;
END IF
SET @毛利=(@某商品销售单价-@某商品进价)*@某商品销售量
GO
【解题思路】
存储过程是由PL/SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只要调用即可。使用存储过程具有以下优点:其已经编译和优化过了,所以运行效率高,提供了在服务器端快速执行SQL语句的有效途径;存储过程降低了客户端和服务器之间的通信量;方便实施企业规则,当企业规则发生变化时只要修改存储过程,而无需修改其他应用程序。
创建存储过程:
create procedure 过程名
@[参数名] [类型],@[参数名] [类型] /*过程首部*/
As
Declare/*as下面对应的<PL/SQL>块为过程体*/
.........
begin
.........
end
如上所示,存储过程包括过程首部和过程体。过程名是数据库服务器合法的对象标识;参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数可以是输入参数或输出参数,默认为输入参数。
48
设某全国性的运输企业建立了大型OLTP系统,并在该系统之上建立了数据仓库。OLTP系统和数据仓库中有如下数据表:
运输明细表(运输单ID,发送站ID,终到站ID,货物ID,货物重量,运输价格,发货日期)
汇总表1(发送站ID,终到站ID,货物ID,发货日期,总重,总运价)
汇总表2(发送站ID,终到地区ID,货物ID,发货日期,总重,总运价)
汇总表3(发送站ID,终到站ID,货物ID,发货月份,总重,总运价)
汇总表4(发送地区ID,终到地区ID,货物类别ID,发货日期,总重,总运价)
该企业管理的货运站约有100个,货物约有500种共10类,各汇总表都建有主码,且各表有合理的维护策略,在每次维护后数据能保持一致。设有视图V,该视图的访问频率很高,其查询结果模式为(发送地区ID,终到站ID,发货月份,总重,总运价),该视图现以汇总表1为计算数据源。经监控发现,汇总表1的被访问频率过高,导致系统整体性能下降,而其它汇总表被访问频率较低。在不增加汇总表和索引的情况下,请给出一个改善系统服务性能的优化方案,并简要说明理由。
【参考答案】
由于汇总表1和视图的模式访问频率都很高,而且视图的数据源来自汇总表1,又因为其他汇总表的访问率较低,所以只需要将视图的数据源绑定为汇总表3,因为汇总表3也可以满足视图的输出模式。这样不仅提升了汇总表3的数据访问率,而且降低了汇总表1的数据访问率,系统性能和服务性能得到了很大的优化。又因为货物约有500种,共10类,可以再建立一个视图绑定数据源为汇总表4,这样就可以充分利用汇总表4的数据信息,从而可以进一步完善系统性能的优化。
【解题思路】
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,如查询,插入,修改,删除操作等。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中