第 1 页:选择题 |
第 3 页:应用题 |
第 4 页:设计与应用题 |
三、设计与应用题(每题12分,共24分)
36[简答题]
设有某商业单位需要建立商务数据库用以处理销售记账,它记录的数据包括:顾客姓名,所在单位及电话号码;商品名称,型号,产地及单价;某顾客购买某商品的数量及日期。假定无同名顾客,无同型号商品,电话公用,顾客可在不同日期买同一商品。
(1)请画出该单位的商务ER图模型并优化。
(2)将ER模型换成关系模型并规范化到3NF。
参考解析:【解题思路】 (1)ER图的画法
建立相应的ER图的过程如下:
笫一,确定实体类型。本题有两个实体类型,即顾客实体和商品实体。
第二,确定联系类型。该题中只有顾客一商品模型。
第三,把实体类型和联系类型组合成ER图。
第四,确定实体类型和联系类型的属性。
顾客实体集属性:姓名、单位、电话号码
商品实体集属性:型号、名称、产地、单价
由顾客和商品两个实体和一个顾客一商品购买关系,并且根据实体的属性可以画出相应ER图。
(2)ER模型转换为关系模式的规则
①把ER模型中的每一个实体集转换为同名的关系,实体集的属性就是关系的属性,实体集的码就是关系的码。
②把ER模型中的每一个联系转换成一个关系,与该联系相连的各实体集的码以及联系的属性转换为关系的属性。关系的码根据下列情况确定:
若联系为1:1(一对一),则每个是实体集码均是该关系的候选码。
若联系为1:n(一对多),则关系的码为n端实体集的码。
若联系为m:n(多对多),则关系的码为各实体集码的组合。
③合并具有相同码的关系。
根据规则,把一个ER模型转换为关系模式,一般经历下面两个步骤:
1)标识ER模型中的联系。
2)依次转换与每个联系相关联的实体集及联系。
3)关系模式满足3NF,则必须满足关系模式中每隔一个非主属性既不部分依赖于码也不传递依赖于码,简而言之,第三范式就是属性不依赖于其他非主属性。
本题中从ER模型转换成关系模型,由两个实体和一个关系分别可以转换成三个关系模式。
【参考答案】
(1)ER模型如下所示:
(2)将ER模型转换为关系模型,并规范到3NF:
顾客(姓名,单位,电话号码),主键:姓名
商品(型号,名称,单价,产地),主键:型号
购买(姓名,型号,数量,日期),主键:姓名+型号
因为转换过来的关系模式中,不存在属性依赖于其他非主属性,因此对转换的结果不需要优化。
37[简答题]
某采购中心采购了一套商品批发查询管理系统,此系统采用SQL Server 2008数据库管理系统,该系统需要经常处理百万级以上的数据查询。同时该系统提供了第三方人员开发的SQL接口,第三方人员可以根据自己的需要开发自己的应用程序来访问数据库中的相关数据。
(1)系统在使用的过程中,业务人员反应系统操作速度很慢。经过工程师检查测试后,数据库系统本身及网络传输过程中存在着一些问题,请给出针对数据库系统本身及网络传输过程中可能的一些调优方案。
(2)工程师在完成数据库系统本身和网络问题的优化后,发现第三方开发人员的SQL查询语句存在很多没有优化的问题,请从第三方开发人员角度给出一些优化方案。
参考解析:【解题思路】 从数据库本身和网络传输的角度出发,数据库性能低下的因素一般有:I/O吞吐量小,形成了瓶颈效应;没有创建计算列导致查询不优化;SQL Server数据库内存不足;网络速度慢;查询出的数据量过大(可以采用多次查询或其他的方法降低数据量)以及锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)。
从SQL查询语句角度来考虑优化响应时间,应该从查询条件、临时表、游标、返回数据量、大事务操作等方面进行调优。
【参考答案】
(1)
①把数据、日志、索引放到不同的I/O设备上,增加读取速度,数据量(尺寸)越大,提高I/O越重要。
②纵向、横向分割表,减少表的尺寸。
③升级硬件,扩大服务器的内存,Windows 2000和SQL Server 2000能支持4~8G的内存。配置虚拟内存,虚拟内存大小应基于计算机上并发运行的服务进行配置。增加服务器CPU个数。
④分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层Web站点的处理需要。
⑤重建索引:DBCC REINDEX,DBCC INDExDEFRAG;收缩数据和日志:DBCC SHRINK-DB,DBCC SHRINKFILE。设置自动收缩日志,对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。
⑥优化锁结构。
(2)
①对查询进行优化,尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。
②应尽量避免在where子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。
③任何地方都不要使用select*from进行全表扫描,用具体的字段列代替“*”,不要返回冗余字段。
④避免频繁创建和删除临时表,以减少系统表资源的消耗。
⑤尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。
⑥尽量避免大事务操作,提高系统并发能力。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: