三、设计与应用题(共30分)
1.现有论文和作者两个实体,论文实体的属性包括题目、期刊名称、年份、期刊号;作者实体的属性包括姓名、单位、地址;一篇论文可以有多个作者,且每一位作者写过多篇论文,在每一篇论文中有作者的顺序号。请完成以下操作:(10分)
(1)画出E-R图。
(2)将E-R图转换成关系模式,并指出每个关系模式的主键(加下划线)和外键(加波浪线)。
2.设有图书管理数据库,包含三张表:
图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);
读者表(借书证号,姓名,系别,*日期);
借出信息表(借出编号,借书证号,图书编号,借书日期);
完成下列操作:(10分)
定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。设函数名为:f_BorrowBook(@jszh char(20))。
3.某采购中心采购了一套商品批发查询管理系统,此系统采用SQL Server 2008数据库管理系统,该系统需要经常处理以上的数据查询。同时该系统提供了第三方人员开发的SQL接口,第三方人员可以根据自己的需要开发自己的应用程序来访问数据库中的相关数据。(10分)
(1)系统在使用的过程中,业务人员反应系统操作速度很慢。经过工程师检查测试后,数据库系统本身及网络传输过程中存在着一些问题,请给出针对数据库系统本身及网络传输过程中可能的一些调优方案。
(2)工程师在完成数据库系统本身和网络问题的优化后,发现第三方开发人员的SQL查询语句存在很多没有优化的问题,请从第三方开发人员角度给出一些优化方案。
三、设计与应用题
1.【解题思路】
(1)ER图的设计原则
在设计ER图时,首先应根据需求分析,确认实体、属性和联系这三种ER图的基本要素。需要强调的三条设计原则如下:
①相对原则
建模的过程实际上是对对象抽象的过程。实体、属性和联系是对同一个对象抽象过程的不同解释和理解。在同一情况下不同的人,或同一人在不同的情况下,对事物抽象的结果可能是不同的。在ER图的整个设计过程中,实体、属性和联系不是一成不变,而是可能会被不断的调整和优化。
②一致原则
同一对象在同一个管理系统中的不同子系统抽象的结果要求保持一致。
③简单原则
为简化ER图,现实世界中的事物能作属性对待时,应尽量作为属性处理。属性与实体和联系之间,并无一定界限。当属性满足如下两个条件时,就不能作实体或关系对待:不再具有需要进一步描述的性质,因为属性在含义上是不可再分的数据项;属性不能再与其它实体具有联系,即ER图中的联系只能是实体之间的联系。
(2)ER图的组成元素是实体、属性和联系
①实体
把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事件。如一个职工、一场比赛等。
②属性
描述实体的特性称为属性。如职工的职工号,姓名,性别,出生日期,职称等。
③联系
联系是实体间有意义的相互作用,即实体问存在的关联。
在ER图中,分别用矩形框表示实体,椭圆表示属性,菱形框表示联系。
(3)联系的类型
实体之间的联系分为三种类型:一对一(1:1)、一对多(1:n)和多对多(n:m)。
题目给出了两个实体论文和作者,并且指明了论文实体的属性包括题目、期刊名称、年份、期刊号,作者实体的属性包括姓名、单位、地址。实体问的关系包括:一篇论文可以有多个作者,且每一位作者写过多篇论文,在每一篇论文中有作者的顺序号,可以知道论文和作者是多对多的关系。同时可知论文题目和期刊号的联合是论文关系模式的主键,姓名是作者关系模式的主键,而需要作者姓名和论文题目才能确定发表的关系模式。
【参考答案】
(1)
(2)关系模式:
论文(题目,期刊名称,年份,期刊号)
作者(姓名,单位,地址)
发表(姓名,题目,顺序号)
2.【解题思路】
SQL Server 2008多语句表值函数的格式为:
CREATE FUNCTION[schema_name.]function_name
([{@parameter_name[As][type_schema_name.]parameter data_type
[=default]}
[….n]
]
)
RETURNS@return_variable TABLE
[AS]
BEGIN
function_body
RETURN
END
[;]
({
[table_constraint][,...n])
采用三表联合查询,通过传入的借书证号查出借出信息表中的图书编号,然后查出图书明细表的信息。
【参考答案】
CREATE FUNCTION BorrowBook(@jszh char(20))
RETURNS@jsqkb TABLE(书籍编号char(20),书籍名称char(50),定价float,借书日期datetime)
AS
BEGIN
INSERT@jsqkb
SELECT图书明细表.图书编号,图书名称,定价,借出信息表.借书日期FROM借出信息表,图书明细表
WHERE借出信息表.图书编号=图书明细表.图书编号AND借出信息表.借书证号=@jszh
RETURN
END
3.【解题思路】
从数据库本身和网络传输的角度出发,数据库性能低下的因素一般有:I/O吞吐量小,形成了瓶颈效应;没有创建计算列导致查询不优化;SQL Server数据库内存不足;网络速度慢;查询出的数据量过大(可以采用多次查询或其他的方法降低数据量)以及锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)。
从SQL查询语句角度来考虑优化响应时间,应该从查询条件、临时表、游标、返回数据量、大事务操作等方面进行调优。
【参考答案】
(1)①把数据、日志、索引放到不同的I/O设备上,增加读取速度,数据量(尺寸)越大,提高I/O越重要。
②纵向、横向分割表,减少表的尺寸。
③升级硬件,扩大服务器的内存,Windows 2000和SQL Server 2000能支持4-8G的内存。配置虚拟内存,虚拟内存大小应基于计算机上并发运行的服务进行配置。增加服务器CPU个数。
④分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层Web站点的处理需要。
⑤重建索引:DBCC REINDEX,DBCC INDEXDEFRAG;收缩数据和日志:DBCC SHRINKDB,DBCCSHRINKFILE。设置自动收缩日志,对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。
⑥优化锁结构。
(2)①对查询进行优化,尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。
②应尽量避免在where子句中使用!=或< >操作符,否则引擎将放弃使用索引而进行全表扫描。
③任何地方都不要使用select*from进行全表扫描,用具体的字段列代替“*”,不要返回冗余字段。
④避免频繁创建和删除临时表,以减少系统表资源的消耗。
⑤尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。
⑥尽量避免大事务操作,提高系统并发能力。
正在阅读:
2017年计算机三级《网络技术》设计与应用试题及答案208-08
成长的蜕变作文700字10-15
介绍热干面的作文600字12-19
《信仰者》观后感600字07-28
2021年天津东丽专升本考试时间安排公布10-05
2022年黑龙江省退役军人事务厅所属事业单位招聘公告【17人】04-24
2019年陕西宝鸡中考历史试卷(已公布)04-11