1、计算机三级数据库技术-86 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:3,分数:100.00)设有高校选课系统,需要对学校的系信息、教师信息、课程信息、学生信息、学生选课信息进行管理。已知系(DEPT)信息包括系编号(DeptNO)、系名称(DeptName);教师(Teacher)信息包括教师号(TNO)、教师名(Tname);课程(Course)信息包括课程号(CNO)、课程名(CName)、课程学分(Credit);学生(Student)信息包括学号(SNO)、学生姓名(Sname)、学生性别(Sex)。 选课系统的管理规则如下: . 一个系可
2、聘用多名教师,一个教师只受聘于一个系; . 一个系可有多名学生,一个学生只属于一个系; . 一名教师可讲授多门课程,一门课程可由多名教师讲授; . 一名学生可选修多门课程,一门课程可被多名学生选修; . 学生选修完课程后,可获得相应课程的成绩。 针对以上描述,完成下列设计内容:(分数:40.00)(1).构建选修课系统的 ER 图。(要求图中的实体集名用试卷中给出的英文名,联系所关联的实体集名的首字母,字母间用“-“或“_“连接,大小写不限)。(分数:20.00)_(2).根据所构建的 ER 图,设计满足 3NF 的关系模式,并标出每个关系模式的主码和外码。(要求关系模式名同实体集名或联系名,
3、属性名用试卷中给出的英文名,大小写不限)(分数:20.00)_1.某书店采用了 SQL Server 2008 数据库管理系统,该书店有一个需求,需要统计指定年份中每一本书的销售总额,例如:查询 2012 年所有书的销售总额。 已知图书结构如下: 图书表(书号 BOOK_ID,书名 BOOK_NAME,单价 BOOK_PRICE) 销售表(书号 BOOK_ID,销售时间 SALE_TIME,销售数量 SALE_NUM)。 假设单价和销售数量均为 int 型,书号和书名均为 varchar(50)类型,销售时间为 datetime 型。请给出满足如下要求的多语句表值函数,该函数统计指定年份中每本
4、书的销售总额。 设函数名为:BOOK_PROFIT(year int),函数的返回结果格式如下: 书号 销售总额 B001 60000 A004 50000 (分数:20.00)_某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用 SQL Server 2008 数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用 SQL Server 2000,数据结构与新系统不完全一致。因此需要把数据从 SQL Server 2000 导入到SQL Server 2008 中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在
5、3 小时内完成。(分数:40.00)(1).在原有数据导入新系统的过程中,实施人员发现原有数据量很大,导入数据需要四小时,业务无法接受。经分析某工程师认为,数据导入过程中的数据库 I/O 很高,但导入数据的程序本身对系统资源占用率很低。该工程师建议将数据导入过程中的数据恢复模式从“完整”模式改为“简单”模式以提高数据导入速度;而另一位工程师则认为此方法未必能提高数据导入速度,而且还可能导致数据丢失,不建议使用此方法。 请分析此方法是否能够提高数据导入速度并给出理由,同时分析此操作的数据丢失风险。(分数:20.00)_(2).在成功导入历史数据后,此系统顺利上线运行。在上线运行的第一周,发现数据
6、库服务器的 CPU 使用率很高,达到近 90%,高峰期间达到 100%,且系统内存占用率达到 90%,但系统 I/O 很轻。业务人员反应系统操作速度很慢。为了提高系统运行速度。在不修改应用程序的前提下,两位工程师提出了不同的解决办法: 为服务器增加 2 颗 CPU,缓解 CPU 使用率很高的问题; 为服务器增加一倍内存,缓解内存使用率很高的问题。 考虑成本,现阶段只能按照一种方案实施。请指出在现有情况下,哪种方案更合理并给出理由。(分数:20.00)_计算机三级数据库技术-86 (1)答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:3,分数:100.00)设有高校
7、选课系统,需要对学校的系信息、教师信息、课程信息、学生信息、学生选课信息进行管理。已知系(DEPT)信息包括系编号(DeptNO)、系名称(DeptName);教师(Teacher)信息包括教师号(TNO)、教师名(Tname);课程(Course)信息包括课程号(CNO)、课程名(CName)、课程学分(Credit);学生(Student)信息包括学号(SNO)、学生姓名(Sname)、学生性别(Sex)。 选课系统的管理规则如下: . 一个系可聘用多名教师,一个教师只受聘于一个系; . 一个系可有多名学生,一个学生只属于一个系; . 一名教师可讲授多门课程,一门课程可由多名教师讲授; .
8、 一名学生可选修多门课程,一门课程可被多名学生选修; . 学生选修完课程后,可获得相应课程的成绩。 针对以上描述,完成下列设计内容:(分数:40.00)(1).构建选修课系统的 ER 图。(要求图中的实体集名用试卷中给出的英文名,联系所关联的实体集名的首字母,字母间用“-“或“_“连接,大小写不限)。(分数:20.00)_正确答案:()解析:ER 图如下所示: (2).根据所构建的 ER 图,设计满足 3NF 的关系模式,并标出每个关系模式的主码和外码。(要求关系模式名同实体集名或联系名,属性名用试卷中给出的英文名,大小写不限)(分数:20.00)_正确答案:()解析:设计 3NF,如下: D
9、EPT(DeptNO,DeptName)主码:DeptNO,无外码 Teacher(TNO,TName,DeptNO)主码 TNO,外码 DeptNO Student(SNO,SName,Sex,DeptNO)主码 SNO,外码 DeptNO Course(CNO,CName,Credit)主码 CNO,无外码 T-C(TNO,CNO)主码(TNO,CNO),外码 TNO,CNO S-C(SNO,CNO,成绩)主码(SNO,CNO),外码 SNO,CNO 解析 ER 模型转换为关系模式的规则 把 ER 模型中的每一个实体集转换为同名的关系,实体集的属性就是关系的属性,实体集的码就是关系的码。
10、把 ER 模型中的每一个联系转换成一个关系,与该联系相连的各实体集的码以及联系的属性转换为关系的属性。关系的码根据下列情况确定。 若联系为 1:1,则每个实体集码均是该关系的候选码。 若联系为 1:n,则关系的码为 n 端实体集的码。 若联系为 m:n,则为各实体集码的组合为关系的码或其中一部分。 合并具有相同码的关系。根据规则,把一个 ER 模型转换为关系模式,一般经历下面两个步骤。 第一,标识 ER 模型中的联系。 第二,依次转换与每个联系项关联的实体集及联系。1.某书店采用了 SQL Server 2008 数据库管理系统,该书店有一个需求,需要统计指定年份中每一本书的销售总额,例如:查
11、询 2012 年所有书的销售总额。 已知图书结构如下: 图书表(书号 BOOK_ID,书名 BOOK_NAME,单价 BOOK_PRICE) 销售表(书号 BOOK_ID,销售时间 SALE_TIME,销售数量 SALE_NUM)。 假设单价和销售数量均为 int 型,书号和书名均为 varchar(50)类型,销售时间为 datetime 型。请给出满足如下要求的多语句表值函数,该函数统计指定年份中每本书的销售总额。 设函数名为:BOOK_PROFIT(year int),函数的返回结果格式如下: 书号 销售总额 B001 60000 A004 50000 (分数:20.00)_正确答案:(
12、)解析:CREATE FUNCTION BOOK_PROFIT (year int) RETURNS f_ BOOK_PROFIT table( 书号 varchar(50), 销售总额 int) AS BEGIN INSERT INTO f_ BOOK_PROFIT SELECT a.书号,SUM(a.单价*b.销售数量) FROM 图书表 a JOIN 销售表 b ON a.书号=b.书号 WHERE year(b.销售时间)=year GROUP BY a.书号 RETURN END 或者 CREATE FUNCTION BOOK_PROFIT (year int) RETURNS f_
13、 BOOK_PROFIT table( BOOK_ID varchar(50), PROFIT int) AS BEGIN INSERT INTO f_ BOOK_PROFIT SELECT a.BOOK_ID,SUM(a.BOOK_PRICE*b.SALE_NUM) FROM BOOK a JOIN SALE b ON a.BOOK_ID=b.BOOK_ID WHERE year(b.SALE_TIME)=year GROUP BY a.BOOK_ID RETURN END 解析 采用 JOIN 联合查询,先用 WHERE 条件查出符合销售时间=year 的记录,再将找出的记录和图书表合并,
14、并采用单价*销售数量计算出联合查询的表数据,最后根据 GROUP BY 统计每种书的销售价格总和。某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用 SQL Server 2008 数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用 SQL Server 2000,数据结构与新系统不完全一致。因此需要把数据从 SQL Server 2000 导入到SQL Server 2008 中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在 3 小时内完成。(分数:40.00)(1).在原有数据导入新系统的过程中,实施人员
15、发现原有数据量很大,导入数据需要四小时,业务无法接受。经分析某工程师认为,数据导入过程中的数据库 I/O 很高,但导入数据的程序本身对系统资源占用率很低。该工程师建议将数据导入过程中的数据恢复模式从“完整”模式改为“简单”模式以提高数据导入速度;而另一位工程师则认为此方法未必能提高数据导入速度,而且还可能导致数据丢失,不建议使用此方法。 请分析此方法是否能够提高数据导入速度并给出理由,同时分析此操作的数据丢失风险。(分数:20.00)_正确答案:()解析:此方法能够提高数据导入速度。 原因:此系统 I/O 很高,修改恢复模式后,系统最大限度减少日志开销,可提高导入速度。 由于仅在数据导入过程中
16、修改恢复模式,所以并无数据丢失风险。 解析 SQL Server 2008 的数据恢复模式有三种: 简单恢复模式,此方法可以最大幅度减少事务日志的管理开销,因为恢复模式不备份事务日志。但是如果数据库损坏,则简单恢复模式将面临极大的数据丢失风险。在这种恢复模式下,数据只能恢复到最新备份状态。因此对于用户数据库,简单恢复模式只适用于测试和开发数据库,或用于主要包含只读数据的数据库。 完整恢复模式,此方法可以完整的记录所有事务,并将事务日志记录保留到对其备份完毕为止。此方法相对简单恢复模式来说,更占用时间。 大容量日志恢复模式,此方法只对大容量操作进行最小记录,使事务日志不会被大容量加载操作所填充。
17、在数据导入过程中,所有的业务都是暂停的,因此可以采用简单恢复模式提高数据导入速度。且只在数据导入的过程中暂时的修改恢复模式,因此数据并不会丢失。(2).在成功导入历史数据后,此系统顺利上线运行。在上线运行的第一周,发现数据库服务器的 CPU 使用率很高,达到近 90%,高峰期间达到 100%,且系统内存占用率达到 90%,但系统 I/O 很轻。业务人员反应系统操作速度很慢。为了提高系统运行速度。在不修改应用程序的前提下,两位工程师提出了不同的解决办法: 为服务器增加 2 颗 CPU,缓解 CPU 使用率很高的问题; 为服务器增加一倍内存,缓解内存使用率很高的问题。 考虑成本,现阶段只能按照一种
18、方案实施。请指出在现有情况下,哪种方案更合理并给出理由。(分数:20.00)_正确答案:()解析:第一种方案比较合理。原因:SQL Server 2008 采用将数据缓冲在内存的方式,因此内存的使用率比较高是正常情况,且现阶段 I/O 并不存在问题,表明内存满足需求。此阶段 CPU 使用率很高,表明 CPU计算资源不足,因此增加 CPU 数量对解决问题有效。解析 提高数据库性能的方法一般是从外部环境、调整内存分配、调整磁盘 I/O、调整竞争资源等几方面着手来改变数据库的参数。SQL Server 2008 采用将数据缓冲在内存的方式,因此在数据库系统运行的过程中会占用一定的内存,又因为 I/O 并不存在问题,说明内存尚满足需求。CPU 使用率很高,表明 CPU 的计算能力不足,应该增加 CPU 的数量。