分布式数据库系统按不同层次提供的分布透明性有:分片透明性、位置透明性、局部数据模型透明性。
其中分片透明性是分布式数据库中最高层次的分布透明性,位于全局概念模型和分片模型之间。
用户编写程序只须对全局关系进行操作,不必考虑数据的分片及存储场地。
当分片模式改变时,只须改变全局概念到分片模式的映象,而不会影响全局概念模式和应用程序,即实现了分片透明性。
– 252页
事务是构成数据库应用中一个独立逻辑工作单元的操作的集合,也是访问并可能更新数据库中各种数据项的一个程序执行单元。
数据库系统通过执行各种事务实现对数据库数据的操作,管理和执行事务是DBMS的基本功能。
事务的四大特性为:
某些情况下,需要把数字数据类型显示为相应的文本名称,这就碰到了多表连接建立记录集的问题。
多表连接的类型主要有 left join、right join 和 inner join。
其主要区别如下:
因此本题采用inner join,结果集将返回包括table_1和table_2都满足条件的行。
触发器(trigger)是SQL Server 提供给程序员和数据分析员用来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它并执行,且经常用于加强数据的完整性约束和业务规则等。
教师表中要求基本工资的取值与教师的职称有关,即当对教师的职称进行操作的时候,要求基本工资的取值随着职称变化而变化,因此采用触发器可以达到要求。
事务日志是一个与数据库文件分开的文件。它存储对数据库进行的所有更改,并记录全部插入、更新、删除、提交、回退和数据库模式变化等操作。
事务日志是数据备份和数据恢复的重要文件,也是使用 SQL Remote 或 [复制代理] 复制数据所必需的。
SELECT {blank}
FROM SCORE
WHERE Degree = {blank}
【答案】
对数据库系统的监控分为手动监控机制和自动监控机制两种。
性价或性能价格
DBAS的性能指标有:
数据流
此题考查活动图的主要作用,在UML中,对于业务流程支持的主要图形是活动图
,活动图主要的目的在于陈述活动与活动之间的流程控制的转移。一般来说,活动图最适合用于描述系统或子系统的主要的工作流程。
其他常用的图还有如下几种:
SELECT DISTINCT 姓名, 所在系, COUNT(*) {blank}AS 选课门数 FROM 学生表 T1 JOIN 选课表 T2 ON T1.学号 = T2.学号
OVER(PARTITION BY T1.学号) 或 OVER(PARTITION BY T2.学号)
开窗函数公式:函数名(列) OVER(选项)
OVER关键字表示把函数当成开窗函数而不是聚合函数。
SQL SERVER 2005/2008支持两种开窗函数,分别为:排名开窗函数和聚集开窗函数。
聚合开窗函数只能使用PARTITION BY子句不带任何语句,ORDER BY不能与聚合开窗函数一同使用。很多聚合函数都可以用作窗口函数的运算,如SUM,AVG,MAX,MIN,COUNT。
FETCH {blank}5 FROM cur1 …
RELATIVE
【解析】FETCH的功能是通过 Transact-SQL 服务器游标检索特定行,具体语法:
FETCH [[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar } | RELATIVE { n | @nvar }] FROM]{{[GLOBAL]cursor_name}|@cursor_variable_name}[INTO@variable_name [ ,...n ]]
参数说明:
CREATE {blank}INDEX idx1 ON T(c1)
UNIQUE NONCLUSTERED
CREATE [UNIQUE|CLUSTERED| NONCLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME)
其中UNIQUE和CLUSTERED为可选项,分别是建立唯一索引和聚簇索引。
SQL Server固定的数据库角色及其权限如下:
在进行数据库模式调整使用分割表进行数据库优化时,一般有两种表分割方式:水平分割和垂直分割。
时间
D:\LogData
目录下(此目录已存在)的 Students_log.bak文件上,请补全下列语句:BACKUP {blank} students TO DISK = 'D:\LogData\Students_log.bak'
备份日志的语法:
BACKUP LOG database_name(数据库名)TO backup_device(备份的地方)。
分布式数据库分片类型(数据分布策略):
数据仓库的结构采用三级数据模型的方式,具体如下:
关联规则反映一个事物与其他事物之间的相互依存性和关联性。
如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物可能存在的行为、特点就能够通过其他事物预测到。
人们希望在海量商业交易记录中发现感兴趣的数据关联关系,借此来帮助商家作出决策。例如,商品分类设计、降价经销分析、生产安排、货架摆放策略等。
ER图向关系模式转换涉及到两方面:
在从ER向关系模式转换规则如下:
由题目可知,该题中有三个实体、一个1:1(一对一)联系、三个1:m(一对多)联系和一个m:n(多对多)联系。三个实体和一个m:n(多对多)联系可以转换为单独的模式,1:1(一对一)联系和一对1:m(一对多)联系需要合并到实体中去。因此可以最终得到四个模式,即三个实体(员工,部门,项目)和一个多对多联系,故选择A选项。
物理设计阶段的主要活动有:
数据库备份与恢复设计属于数据库日常维护活动。
数据流图(Data Flow Diagram):简称DFD,主要组成包括 外部实体(外部项)、处理过程、数据存储和数据流。
Ⅰ.因为很少用到商品描述属性,可以将其单独存储
Ⅱ.因为经常按照商品名查询商品的销售数量,可以在销售表中添加商品名属性
Ⅲ.因为经常执行商品表和销售表之间的连接操作,可以将它们组织成聚集文件
Ⅳ.因为经常按照商品号对销售表执行分组操作,可以将销售表组织成散列文件
以上做法中,正确的是()。
Ⅰ:因为很少用到商品描述属性,系统在查询时也就很少查询。因此可以将其分割,这样虽然破坏了表的整体性,却可以将系统得到优化。
Ⅱ:增加冗余列是指在多个表中增加具有相同语义的列,它常用来在查询时避免连接操作,值得一提的是,主码和外码在多表中重复出现不属于冗余列,这里指得冗余列是非关键字字段在多表的中的出现。由于表的连接操作是比较费时的,如果在表中增加冗余列,则在行上执行查询操作时不需要进行表的连接操作,从而提高了查询效率。
Ⅲ : 一个聚集是一组表,可将经常一起使用的具有同一公共列值的多个表中的数据行存储在一起。对于经常频繁一起查询的表,使用聚集比较方便。
Ⅳ:通常在运行 Order By 和 Group By 语句时会涉及到排序的操作,尤其是对大型的表进行重复的排序,会引起磁盘很大的开销。而散列文件的优点是:文件随机存放,记录不需进行排序;插入、删除方便;存取速度快;不需要索引区,节省存储空间。因此带有Order By和Group By的表可以使用散列文件存储,提高查询效率。
根据瀑布模型6个阶段的任务可知
使用CREATE PROCEDURE
命令所定义的存储过程应属于数据访问层。
分类联系是指两个或者多个实体集之间的联系,且这些实体集中存在一个一般实体集,它的每一个实例恰好与一个且仅一个分类实体集的一个实例相联系。
在本题中,学生是一般实体集,而本科生是他的一个分类。– IDEF1X建模方法 39页
A.反规范化总是会提高查询效率
B.反规范化总是会减少数据冗余
C.反规范化总不会降低更新效率
D.反规范化总不会增加连接操作
数据库的反规范化是为了减少表间的连接,提高查询性能,但并非所有经反规范的数据库都是高效的,这与实际的应用有关,只有满足一定条件的数据库采用反规范方法才能提高性能。故答案为D项。
在数据库设计阶段,主要强调的是高效率利用存储空间,减少数据的冗余,减少数据的不一致,这个过程也就是规范化的过程。
反规范化是将规范化的关系转换为非规范化关系的过程,方法:
第10章 - 数据库运行维护与优化 - 模式调整与优化 - 203页
A.一个数据库可以包含多个主要数据文件
B.主要数据文件的扩展名必须为.mdf
C.日志文件必须属于一个文件组
D.定义数据文件时如果没有指定文件组则其属于默认文件组
A.master数据库记录了SQL Server实例的所有系统级信息
B.SQL Server实例的作业信息存储在master数据库中
C.对model数据库的修改将应用于以后创建的所有用户数据库
D.每次启动SQL Server时都会重新创建tempdb数据库
SQL Server实例的作业信息存储在 msdb 数据库中。作业是在 SQLServer 中定义的自动执行的一系列操作的集合,作业的执行不需要任何人工干预。
橘皮书定义了任意“可信橘色基”应当遵从一系列安全性要求;
紫皮书定义了这些要求在数据库系统中的相应解释。
通用安全性分级模式,共定义了 D、C、B 和 A 四类安全级别,从D类到A类级别依次增高。
第 9 章 - 安全管理 - 178页
建立RAID5后,可用的磁盘空间是2300GB=600GB容量。对于任意三块磁盘,RAID5容量等于最小的一块磁盘容量2。
SQL Server 2008支持三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。 228页
在分布式数据库中,由于数据分布在不同的场地上,使得查询处理中还要考虑站点之间传输数据的通信代价,使得查询处理中还要考虑站点间传输数据的通信代价。
在数据库文件的主码属性集上建立的索引称为主索引。
DBAS总体设计 - 65页
将数据处理功能分解并分布在表示层、功能层和数据层三个层次上:
在UML提供的图中,活动图主要用于描述系统、用例和程序模块中逻辑流程执行次序。
SELECT {blank} FROM T1
COUNT(DISTINCT C1)
在SQL语言中,COUNT是把符合条件的记录条数计算出来,使用DISTINCT关键字去除查询结果重复行的所有记录。题目中要求统计T1表中C1列取值不同的值的个数,查询语句为:SELECT COUNT(DISTINCT C1) FROM T1。故答案为COUNT(DISTINCT C1)。
SELECT 学号 FROM 选课 t1 WHERE {blank}
(SELECT * FROM 选课 t2
WHERE t1.学号 = t2.学号 and t2.课程号 = ‘C01’)
在SQL语言中,使用 NOT EXISTS 表示查询的结果是选课表中没选C01课程的学生学号中的数据记录。故答案为NOT EXISTS。
CREATE TRIGGER tri_cnt ON 选课{blank}INSERT
AS … …
建立DML触发器SQL语句为 CREATE TRIGGER,其语法格式为:
CREATE TRIGGER < Trigger_name >
ON{table|view}
{FOR|AFTER|INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS {sql_statement}
…
使用 INSTEAD OF 选项定义的触发器为前触发型触发器,根据题意要求限制每个学生的选课总门数不能超过10门的前触发型触发器,所以使用INSTEAD OF选项定义。
第 8 章 数据库后台编程技术 - 触发器 162页 做完此题看一遍书理解概念。
DECLARE c1 {blank} FOR
SELECT 学号, 课程号, 成绩 FROM 选课 WHERE 成绩 >=90
使用游标之前,要声明游标,ISO声明游标的简化语法格式如下:
DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement
[FOR{READ ONLY|UPDATE[OF column_name[,…n]]}]
SQL Server中声明使用DECLARE CURSOR语句,声明游标包括定义游标的滚动行为和用户生成游标所操作的结果集的查询。故答案为CURSOR。
第 8 章 数据库后台编程技术 - 游标 166页 做完此题看一遍书理解概念。
CREATE{blank}INDEX idx1 ON Employee(eid)
创建索引使用CREATE INDEX语句。SQL Server 2008创建索引的简化语法格式为:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON <object> (column[ASC|DESC][,…n])
…
根据题意要在Employee表的eid列上建立一个聚集索引,需要使用CLUSTERED。故答案为CLUSTERED。
146页 - 索引
聚集索引? 50页 有序索引 - 聚集索引和非聚集索引。
CREATE {blank} User1 WITH PASSWORD = ‘a123’
创建新的登录账户的T-SQL语句是CREATE LOGIN。故答案为LOGIN。
为了保证事务的正确执行,维护数据库的完整性,要求数据库系统维护以下事务特性:
① 原子性:事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映。
② 一致性:事务的隔离执行(即没有并发执行的其他事务),保持数据库的一致性。
③ 隔离性:尽管多个事务可以并发执行,但系统必须保证,对任一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经停止执行,或者在Ti完成之后开始执行。这样,每个事务都感觉不到系统中有其他事务在并发地执行。
④ 持久性:一个事务成功完成后,它对数据库的改变必须是永久的,即使系统可以出现故障。
根据题意,正在访问的数据被其他事务所修改违背了事务性质的隔离性。故答案为隔离。
数据库管理系统对事务的并发执行进行控制,以保证数据库一致性,最常用的方法是封锁的方法。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,并发度就越小,同时系统的开销就越小。封锁的粒度越小,并发度就越大,同时系统的开销就越大。故答案为大或粗。
数据库镜像提供了3种实现方式:
① 高可用性:两台服务器上同步事务写入,并支持自动错误恢复。
② 高保护:两台服务器上同步事务写入,但是错误恢复是手工的。
③ 高性能:两台服务器上的写入可以不同步,因此在性能上有所提高,只允许手工的错误恢复。
故答案为可用。
并行数据库系统有多种体系结构,主要可分为共享内存结构、共享磁盘结构、无共享结构和层次结构。
在共享内存结构中,所有的处理机通过互联网共享一个公共的主存储器。故答案为共享内存或内存共享。
数据仓库维护的基本思想是:
在IDEF1X模型元素中,如果一个实体集的一个实例的唯一标识依赖于该实体集与其他实体集的联系,那么他就是丛属标识符实体或简称为从属实体集。
IDEF1X 建模方法 - 39页
顺序图主要用于描述系统内对象之间的消息发送和接收序列,有两个坐标轴:纵向表示时间的持续过程,横向表示对象。
SELECT{blank}*FROM T1 ORDER BY C1 DESC
108页
当使用SELECT语句进行查询时,有时只希望列出结果集中的前几行数据,而不是全部数据,就可以使用TOP谓词来限制输出的结果。使用TOP谓词的语法格式为:
TOP n [ percent ] [ WITH TIES ];其中,n为非负整数。
①TOP n:取查询结果的前n行数据;
②TOP n percent:取查询结果的前n%行数据;
③WITH TIES:表示包括最后一行取值并列的结果。
TOP谓词写在SELECT单词的后边(如果有DISTINCT的话,则TOP写在DISTINCT的后边)、查询列表的前边。
根据题意,要查询T1表中C1列值最大的2行数据(不考虑并列情况),所以n=2。
故答案为TOP 2或TOP (2)或TOP(2)。
注意:在使用 TOP 谓词时应该与 ORDER BY 字句一起使用,这样的前几名才有意义。当使用 WITH TIES 时,则必须要求使用 ORDER BY 字句。
SELECT 学号 FROM 选课 WHERE 学号 {blank}
(SELECT 学号 FROM 选课 WHERE 课程号 = ‘C01’)
SELECT 学号 FROM 选课 t1 WHERE {blank}
(SELECT * FROM 选课 t2
WHERE t1.学号 = t2.学号 and t2.课程号 = ‘C01’)
DECLARE c1 CURSOR {blank}
SELECT 学号, 课程号, 成绩 FROM 选课 WHERE 成绩 >= 90
使用游标之前,要声明游标,ISO声明游标的简化语法格式如下:
DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement
[FOR{READ ONLY|UPDATE[OF column_name[,…n]]}]
CREATE NONCLUSTERED INDEX idx1 ON{blank}
Student(sname)
CREATE LOGIN User1{blank}PASSWORD = ‘a123’
创建登陆帐户:CREATE LOGIN Username WITH PASSWORD=passwordchar。故答案为WITH。
注:仔细审题,是事务并发执行程度,我经常看成事务并发程度。
数据库管理系统对事务的并发执行进行控制,以保证数据库一致性,最常用的方法是封锁的方法。封锁粒度与系统的并发度和并发控制的开销密切相关。
封锁的粒度越大,并发度就越小,同时系统的开销就越小。封锁的粒度越小,并发度就越大,同时系统的开销就越大。故答案为低或小。
索引为性能所带来的好处是有代价的,因为索引在数据库中会占用一定的存储空间。另外,在对数据进行插入、更改和删除操作时,为了使索引与数据保持一致,还需要对索引进行维护,对索引的维护是需要花费时间的。索引是以空间换时间的一种策略。故答案为空间。
云计算是一种商业计算模型,它通过集中所有的计算资源,采用硬件虚拟化技术,为云计算使用者提供强大的计算能力、存储空间和信息服务,获得与传统大型服务器相同或者更高的计算能力。故答案为虚拟。
所谓钻取(drill down)是指对应于某一维逐步向更细节层方向观察数据,钻取是改变展现数据维度的层次,变换分析的粒度,它包括向上钻取和向下钻取。故答案为钻取或下钻或drill down。
关联规则的数据挖掘的主要任务就是在事务数据库中找出给定的具有最小支持度和最小置信度的关联规则,同时满足最小支持度阈值和最小置信度阈值的规则成为强规则。
DBAS需求分析阶段的另外一项重要工具是分析DBAS应具有的性能指标,主要包括数据操作响应时间、系统吞吐量、允许并发访问的最大用户数、每TPS代价值。
所以,在进行数据库应用系统需求分析时,需要预估系统的吞吐量,这属于数据库应用系统的性能需求分析。
DFD方法由4种基本元素(模型对象)组成:数据流、处理、数据存储和外部项。其中,外部项也称数据源或数据终点。
通信图是交互图的一种,也被称为协作图。故答案为协作
{blank}NEXT FROM C1
游标被声明和打开之后,游标的当前行指针就位于结果集的第一行位置,可以使用FETCH语句从游标结果集中按行提取数据。故答案为FETCH。
CREATE{blank}
Sales AUTHORIZATION U1
定义架构的SQL语句为CREATE SCHEMA,其语法格式为CREATE SCHEMA [<架构名>] AUTHORIZATION <用户名>。故答案为SCHEMA。
由于硬件故障、数据库软件及操作系统的漏洞、突然停电等,正在运行的事务以非正常方式终止,需要系统重新启动的一类故障被称为系统故障,这类故障影响正在运行的所有事务。消除事务对数据库的影响,保证数据库中数据的一致性。办法是在计算机系统重新启动后,对于未完成的事务可能已经写入数据库的内容,回滚所有未完成的事务写的结果,保证数据库中数据的一致性。根据题意在故障发生时,已经提交的事务对数据库的更新结果未能正确写入磁盘,破坏了事务的一致性。故答案为一致或持久或永久。
{blank}LOGIN User1 ENABLE
修改登录账户属性的SQL语句是ALTER LOGIN。根据题意要启用被禁用的User1登录账户,完整的语句为ALTER LOGIN User1 ENABLE。故答案为ALTER。
分布式数据库系统的恢复控制采用最典型策略是基于两阶段的提交协议,该协议将场地的事务管理分为协调者和参与者。故答案为两阶段或二阶段或2PC或2阶段。
A.定义事务规范
B.确定系统范围和边界
C.确定任务目标
D.论证技术可行性
数据库应用系统系统规划与分析阶段任务包括 (4页 规划与分析)
组成IDEF0图的基本元素是矩形框和箭头。
A.非标定型联系
B.分类联系
C.标定型联系
D.由非确定联系转换过来的确定联系
如果实体集的一个实例的唯一标识依赖于该实体集与其他实体集的联系,那么它就是从属标识符实体集或简称为从属实体集;非标定型联系:如果子女实体集中每一个实例都能被唯一地确认而无须了解与之相联系的双亲实体集的实例。所以,非标定型联系不会产生从属实体集。故答案为A选项。 – IDEF1X建模方法 39页
A.日常维护
B.性能优化调整
C.监控与分析
D.系统进化
数据库运行管理与维护的主要工作内容包括日常维护、系统监控与分析、系统性能优化调整、系统进化(升级)等工作。
数据库性能优化调整一般从查询调整与优化、索引调整、事务调整、模式调整、参数调整、硬件调整与升级和应用程序优化等方面考虑。
将数据库存储介质由RAID 5改为RAID 1以满足越来越多的写操作需求,属于硬件调整与升级,提高了数据库的性能。故答案为B选项。
事务-基本表交叉引用矩阵,分析系统内(部分重要的)数据库事务对各个基本表的访问情况,确定事务访问了哪些基本表,对这些基本表执行了何种操作,并进一步分析各操作涉及的基本表属性。根据事务数据访问特性分析结果,可以对基本表设计成更为有效的文件组织和索引方式。
一般来说,项目规划包括以下工作内容:
①确定项目的目标和范围,根据系统规划与定义的工作内容,具体说明项目的最终产品以及期望的时间、成本和质量目标。
②根据DBAS软件开发模型,分解和定义整个项目包括的工作活动和任务。
③估算完成该项目的规模及所需各种资源。
④制定合理的DBAS项目计划,包括进度、成本、质量等方面的预测和控制方案。
A.标定型联系
B.分类联系
C.非确定联系
D.非标定型联系
根据非标定型联系定义,在“确定型联系”中,如果子女实体集中的每一个实例都能被唯一地确认而无须了解与之相联系的双亲实体集的实例,老师和学生之间的一对多“导师”联系属于“非标定型联系”。故答案为D选项。 – IDEF1X建模方法 39页
数据库物理设计主要包括数据库逻辑模式描述、文件组织与存取设计、数据分布设计、确定系统配置和物理模式评估。在进行数据库设计时,考虑到应用主要以分析型查询为主,决定对表采取按列存储的实施方案,这一操作属于数据库物理结构设计中的数据分布设计内容。
业务逻辑层的主要任务是梳理DBAS的各项业务活动,将其表示为各种系统构件(如类、模块、组件等)。 – 业务逻辑层概要设计 71页
隔离性表示多个事务并发执行时,每个事务都感觉不到其他事务的存在,就像系统中只有它一个事务在运行一样,从而得到正确的结果,降低了发生数据不一致的可能性。
完整性约束条件的作用对象分为列、元组和关系3种级别:
– 数据库的完整性保护 75页
A.将该关系对应的表按部门拆分为后勤部员工表和业务部员工表
B.将该关系拆分为员工(员工号,员工名,所属部门号)以及部门(部门号,部门名,部门所在城市,部门负责人)
C.将该关系对应的表按照部门所在城市进行分区
D.对该关系对应的表按照部门负责人建立非聚集索引
数据库物理设计的目的是将数据的逻辑描述转换为实现技术规范,其目标是设计数据存储方案,以便提供足够好的性能并确保数据库数据的完整性、安全性和可恢复性。在这个阶段,将根据数据库中存储的数据量、用户对数据库的使用要求和使用方式,选择数据存储方案以加快数据检索速度。因此,在物理设计时需要了解不同文件组织方式、索引技术及其使用方法。数据表拆分属于数据库逻辑结构阶段的工作,不属于数据库物理设计阶段工作。故答案为B选项。 – 46页
A.用例之间存在的关系可以包括扩展、使用和组合
B.角色是与系统交互的人或其他实体,一个角色可以执行多个用例
C.用例用椭圆形表示,用例必须位于系统边界的外部
D.用例作为需求搜索及整理工具,主要应用在项目开发的需求分析阶段
用例图由系统、角色和用例3种模型元素以及元素之间的各种关系组成。在用例图中系统用一个长方框来表示,系统的名字写在方框上或方框里面,方框内部还可以包含该系统中用符号表示的用例。角色是与系统交互的人或其他实体,一个角色可以执行多个用例,反过来,一个用例也可被多个角色使用。用例代表的是一个完整的功能,是所有动作的集合。在UML中,用例用椭圆形表示,用例位于系统边界的内部。用例之间也存在关系,包括扩展、使用、组合3种。故答案为C选项。 – 87页
A.为了保证数据一致性,只能采用静态转储
B.增量转储和差量转储相比速度快,存储空间占用少
C.在制定备份策略时,主要考虑备份空间因素,其他因素可以忽略
D.从数据库恢复角度看,完全转储比增量转储恢复所需时间长
采用静态转储方式,转储前后系统必须处于一个一致性的状态。
差量转储和增量转储相比,速度慢,占用空间较多,但恢复速度比增量转储快。
增量转储的恢复时间要比仅适用完全转储要长。
在设计良好的备份策略时,除了要考虑特定业务要求外,同时还应尽量提高数据的可用性并尽量减少数据的丢失。故答案为B选项。
A.清理事务日志之后,建议对用户数据库进行备份
B.创建数据库后,需立即对model数据库进行备份
C.删除用户数据库后,需要对tempdb数据库进行备份
D.新建数据库用户后,建议对model数据库进行备份
清理事务日志的时候,不产生日志备份副本,建议对用户数据库进行备份。执行任一更新数据库的操作后,必须备份model数据库。tempdb数据库与其他任意数据库不同,不仅数据库中的对象是临时的,连数据本身也是临时的,删除用户数据库后,无需对tempdb数据库进行备份。新建数据库用户后,建议对master数据库进行备份。故答案为A选项。
Ⅰ.用户查询所涉及的数据的最低细节程度
Ⅱ.高粒度级数据所需的存储空间
Ⅲ.用户查询的平均性能需求
Ⅳ.系统的可用存储空间
Ⅴ.低粒度级数据的规模
Ⅵ.用户查询所涉及的数据最高粒度级
在以上因素中,属于设计时需要考虑的主要因素是
在数据仓库环境中,粒度是一个重要的设计问题,它影响到数据仓库的数据量以及系统能回答的查询的类型。在进行粒度级设计时,在可用的存储空间中保存粗细程度不同的主题数据,以尽可能满足各种应用的多角度、多层次数据查询要求,同时在总体上提高查询的设计效率。粒度越小,则细节程度越高,综合程度就越低,回答查询的类型也越多,数据量比较大,空间代价也大。用户查询所涉及的数据的最低细节程度、用户查询的平均性能需求、系统的可用存储空间、低粒度级数据的规模都属于主要考虑的因素。
堆。因为堆文件无须建立索引,维护代价非常低。 – 55页
A.每个游标都有一个当前行指针,当游标打开后,当前行指针自动指向结果集的第一行数据
B.如果在声明游标时未指定INSENSITIVE选项,则已提交的对基表的更新都会反映在后面的提取操作中
C.当@@FETCH_STATUS=0时,表明游标当前行指针已经移出了结果集范围
D.关闭游标之后,可以通过OPEN语句再次打开该游标
每个游标都有一个当前行指针,当游标打开后,当前行指针自动指向结果集的第一行数据,INSENSITIVE 关键字用以创建由该游标使用的数据的临时复本。
对游标的所有请求都从 tempdb 中的该临时表中得到应答。因此,在对该游标进行提取操作时,返回的数据中不反映对基表所做的修改,并且该游标不允许修改。使用 SQL-92 语法时,如果省略 INSENSITIVE,任何用户对基表提交的删除和更新都反映在后面的提取中。
并行数据库中一维数据的划分方法如下:
(1)轮转法:最适合于扫描整个关系;
(2)散列划分法:比转转法更适合点查询,也适合顺序扫描关系;
(3)范围划分法:明显利于范围查询和点查询。
无共享结构每个处理机拥有独立的主存储器和磁盘,不共享任何资源。它被认为是支持并行数据库系统的最好并行结构,比较适用于银行,出纳,民航售票等OLTP类应用。
常见的数据挖掘任务包括分类、估计、预测、相关性分组或关联规则、聚类和描述、可视化以及复杂数据类型挖掘(Text、 Web、图形图像、视频和音频等)等。
分类分析首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。该需求要求根据购书记录将用户映射到倾向于喜欢某种书的顾客特性中,而分类挖掘模型能把数据库中的数据项映射到给定类别的某一个中。
A.
B.
C.
D.
本题考查了有关UML的类图表示。这里的区别主要在四种表示上:类的UML表示(空心三角实线连接)、接口的UML表示(空心三角虚线连接)、聚合关系的UML表示(空心菱形实线连接)以及合成关系的UML表示(实心菱形实线连接)。
类的表示指的是子类对父类关系的继承;接口与子类继承比较相似,区别主要在于多继承上;聚合关系主要表示一种弱的拥有关系,如A对象可以包含B对象,但B对象不是A对象的一部分;而合成是一种强拥有,体现了严格的部分和整体关系。此题中,车架和车轮是车的严格组成部分,如果缺少一样,车就没法开,所以对车来说是必不可少的部分。所以选B。
提示:父子实体关系请使用下图表示
将所画的ER图转换为相应的关系模式,并标出其主键。(3分)
(1)【解题思路】
ER图的设计原则:在设计ER图时,首先应根据需求分析,确认实体、属性和联系这3种ER图的基本要素。
在ER图中,分别用矩形框表示实体,椭圆表示属性,菱形框表示联系。
①实体:把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事物,如教师、项目、学生等。
②属性:描述实体的特性称为属性,如教师的教师编号、教师姓名等。能唯一标识实体的属性作为主属性,在ER图中用下划线标识。
③联系:联系是实体间有意义的相互作用,即实体间存在的关联。一般用动词作为联系的名字,如负责、参加等,能表示实体之间的关系。
本题中每位教师可以负责多个项目,每个项目只能有一位教师作为项目负责人,所以教师实体与项目实体有一对多的联系;每位本科生只能参加一个项目,一个项目可以有多位本科生参加,所以本科生实体与项目实体有一对多的联系;每位研究生可以参加多个项目,一个项目可以有多位研究生参加,所以研究生实体与项目实体有多对多的联系。
【参考答案】
(2)【解题思路】
在将ER图向关系模式转换时规则如下:
①1:1(一对一)联系。
方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的码构成;关系模式的码由两个实体中的任意一个码构成。
方法二:联系与一端的实体的关系模式合并,将另一实体的码和联系的属性加入到实体的关系模式内,码不变。
②1:m(一对多)联系。
方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的码构成;模式的码由m端实体的主码组成。
方法二:与m端的实体的关系模式合并,即将一端关系的码和联系的属性加入到m端的实体的关系模式内,码不变。
③m:n(多对多)联系。
只有一个方法:联系转换成独立的关系模式,模式的属性由联系本身的属性及两个实体的码构成,关系模式的码由两端实体的主码组合而成。
关系模式满足3NF,则必须满足关系模式中每一个非主属性既不部分依赖于码也不传递依赖于码。简而言之,第三范式就是消除主属性对码的部分和传递函数依赖。
【参考答案】
题目要求ER图向关系模式转换,实体与联系都可以转换为独立的关系模式,转换后的关系模式名称采用实体名或联系名。本题中有两个一对多、一个多对多联系。对于每一个一对多联系,都与多端的实体的关系模式合并,即将一端关系的码和联系的属性加入到多端的实体的关系模式内,码不变。对于多对多联系来说,只能单独转换成一个新的关系模式,转换后的关系模式的属性由联系本身的属性及两个实体的主码构成,转换后的关系模式的主码由两端实体的主码组合而成。
转换后的关系模式:
教师(教师编号,教师姓名)。其中,教师编号是主码;
项目(项目编号,项目名称,资助额,教师编号)。其中,项目编号是主码,教师编号是外码;
参加项目(项目编号,学生编号)。其中,项目编号、学生编号共同作为主码,项目编号、学生编号同样也是外码;
学生(学生编号,学生姓名,学位)。其中,学生编号是主码。
CREATE TABLE 销售单据表 (
销售单据编号 char(20),
付款总金额 money,
销售日期 datetime,
销售人员编号 varchar(8),
收银台编号 varchar(6)
);
由于该表数据量巨大,因此建立了销售单据历史表,将1年以前的数据从销售单据表转入销售单据历史表。销售单据历史表的建表语句如下:
CREATE TABLE 销售单据历史表 (
销售单据编号 char(20),
付款总金额 money,
销售日期 datetime,
销售人员编号 varchar(8),
收银台编号 varchar(6)
);
其中销售单据编号为主键,在收银台编号和销售人员编号上有索引。
(1)在系统运行一段时间后,发现如下语句执行速度缓慢:
SELECT 销售单据编号,付款总金额,销售日期 FROM 销售单据表 WHERE 收银台编号 = ‘001000’
union
SELECT 销售单据编号,付款总金额,销售日期 FROM 销售单据历史表 WHERE 收银台编号= ‘001000’
请给出该语句执行速度缓慢的原因,并给出SQL语句的优化方案。(5分)
(2)在系统运行过程中,磁盘I/O很重,数据库数据量近200G且磁盘写入性能要求非常高。考虑对硬件进行升级,3位工程师给出了不同配置方案:
【解题思路】本题考查的是SQL语言支持对查询结果在进行并、交、差运算以及不同磁盘阵列RAID的特点。
219页 - 硬件容错方案
磁盘阵列RAID所采用的方法不同,可以将其分为很多级别,常见的RAID级别有RAID0、RAID1、RAID5等。下面分别对不同级别RAID的特点进行介绍。
①RAID 0:向RAID写入数据时,RAID将数据分成许多块,然后并行地将它们写到RAID中各个硬盘上;读出数据时,RAID从各个硬盘上读取数据,把这些数据恢复为原来顺序后传给主机。RAID 0的优点是采用数据分块、并行传送方式,能够提高读写速度。但RAID中存储空间没有冗余,对系统的可靠性没有任何提高,任一个硬盘介质出现故障时,数据将无法恢复。
②RAID 1:RAID 1通常也被称为Mirror,RAID中的硬盘分为相同的两组,互为镜像,当其中一块磁盘出现故障时,可以利用其镜像上的数据恢复,从而提高系统的容错能力。RAID 1对数据的操作仍然采用分块后并行传输方式。RAID 1提高了读速度,加强了系统的可靠性。但其缺点是硬盘利用率低,冗余度为50%,同时写速度并未提高。
③RAID 5:RAID 5可以为系统提供数据安全保障,但保障程序要比RAID 1低而磁盘空间利用率要比RAID 1高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。
④RAID 10:是一个 RAID 0 与 RAID 1 的组合体,它继承了 RAID 0 的快速和 RAID 1 的安全。RAID 10 的冗余度为 50%,同时读写速度均提高。
【参考答案】
(1)在执行完Union语句后,需要对表中数据逐个查询,该表数据量较大,所以执行速度缓慢。
SQL语句的优化方案:
SELECT 销售单据编号,付款总金额,销售日期 FROM 销售单据表 WHERE 收银台编号 = ‘001000’
Union All
SELECT 销售单据编号,付款总金额,销售日期 FROM 销售单据历史表 WHERE 收银台编号 = ‘001000’
这个执行效率较高。在执行完Union语句后,执行all语句,根据由销售日期和销售人员编号建立的索引,直接查询,故效率较高。
(2)
CREATE TABLE 出租表(
房屋号 char(10),
出租日期 datetime,
租期 int not null, --月数
到期日期 datetime,
PRIMARY KEY(房屋号,出租日期)
)
现要创建一个具有如下功能的触发器:每当在出租表中插入一行数据(房屋号,出租日期,租期)时,自动计算出本行数据的“到期日期”。请补全下列代码。
CREATE TRIGGER tri ON 【1】 FOR INSERT
AS
【2】 出租表 SET 到期日期 = dateadd(【3】,租期,出租日期)
WHERE 房屋号 = ( SELECT 房屋号 FROM 【4】)
and 【5】
{my_textArea}
【解题思路】
使用FOR或AFTER选项定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。而使用INSTEAD OF选项定义的触发器为前触发器。这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代引发语句的操作。
在触发器语句中可以使用两个特殊的临时工作表:INSERTED表和DELETED表。这两个表是在用户自行数据的更改操作时,SQL Server自动创建和管理的。其中INSERTED表是用于存储INSERT和UPDATE语句所影响的行的副本。而DELETED表用于存储DELETE和UPDATED语句所影响的行的副本。
建立触发器语法是:
CREATE TRIGGER trigger_name
ON { table | view }
{
{ { FOR |AFTER | INSTEAD OF } { [ Insert ] [ , ] [ Update ] }
AS
[ { IF Update ( column )
[ { AND | or } Update ( column ) ]
[ ...n ]
| IF ( COLUMNS_UpdateD ( ) { bitwise_operator } updated_bitmask)
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
其中:参数trigger_name是触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。
Table | view是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。
FOR或AFTER指定触发器只有在触发 SQL语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。如果仅指定 FOR 关键字,则 AFTER是默认设置。不能在视图上定义AFTER触发器。
INSTEAD OF指定执行触发器而不是执行触发 SQL语句,从而替代触发语句的操作。在表或视图上,每个Insert、Update或 Delete语句最多可以定义一个 INSTEAD OF 触发器。然而,可以在每个具有INSTEAD OF 触发器的视图上定义视图。INSTEAD OF 触发器不能在 WITH CHECK OPTION的可更新视图上定义。如果向指定了 WITH CHECK OPTION选项的可更新视图添加 INSTEAD OF 触发器,SQL Server将产生一个错误。用户必须用 Alter VIEW 删除该选项后才能定义INSTEADOF 触发器。
{ [Delete] [,] [Insert] [,][Update] }是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。对于 INSTEAD OF 触发器,不允许在具有 ON Delete级联操作引用关系的表上使用 Delete 选项。同样,也不允许在具有 ON Update 级联操作引用关系的表上使用 Update 选项。
AS是触发器要执行的操作。
sql_statement是触发器的条件和操作。触发器条件指定其他准则,以确定Delete、Insert 或 Update 语句是否导致执行触发器操作。
【参考答案】
【1】 出租表
【2】 UPDATE
【3】 MONTH
【4】 INSERTED
【5】 出租日期 = (SELECT 出租日期 FROM INSERTED)或(SELECT 出租日期 FROM INSERTED) = 出租日期
【解析】
从触发器的语法中可知,【1】处应该填写的执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。从题目“CREATE TRIGGER tri ON 【1】 FOR INSERT”知,本题创建的触发器是是后触发器。该触发器的功能是“每当在出租表中插入一行数据(房屋号,出租日期,租期)时,自动计算出本行数据的“到期日期”。本题是在出租表上建立后触发器,需要执行的是修改语句。故可推导出【1】处应填写:出租表,【2】处应填写:UPDATE。
本题要求的是更新出租表中的到期日期。更新语句采用UPDATE关键字,其语法格式为: UPDATE 表名 SET语句,语句为计算到期日期,租期以月计算,故【3】处应填写:MONTH。
本题使用INSERT和UPDATED关键字对出租表进行操作,因此影响的是INSERTED表的内容。故【4】处应填写:INSERTED。
本题要求的是更新出租表中的到期日期,所以查询时,要筛选出满足条件的房屋号与出租日期,故【5】处应填写:出租日期 = (SELECT 出租日期 FROM inserted)或(SELECT 出租日期 FROM inserted) = 出租日期
每个球队有球队名称、所在城市;
每位球员有球员姓名、薪酬;
每场比赛有比赛编号、比赛时间、比赛结果、参加比赛的主场球队、参加比赛的客场球队。
其中带下划线的属性是唯一标识。其他需满足的要求如下:
每位球员只属于一个球队,每个球队拥有多位球员;
每位球员可参加多场比赛,每场比赛有多位球员参加,同时球员参加每场比赛会有相应的数据统计,包括得分和篮板。
(1)请根据以上描述,试画出相应的ER图。(7分)
{my_Iframe}
(2)将所画的ER图转换为相应的关系模式,并指出其主键。(3分)
{my_textArea}
【参考答案】
【参考答案】
题目要求ER图向关系模式转换,实体与联系都可以转换为独立的关系模式,转换后的关系模式名称采用实体名或联系名。本题中有一个一对多、一个多对多联系。对于每一个一对多联系,都与多端的实体的关系模式合并,即将一端关系的码和联系的属性加入到多端的实体的关系模式内,码不变。对于多对多联系来说,只能单独转换成一个新的关系模式,转换后的关系模式的属性由联系本身的属性及两个实体的主码构成,转换后的关系模式的主码由两端实体的主码组合而成。
转换后的关系模式:
球队(球队名称,所在城市)。其中,球队名称是主码;
球员(球员名称,薪酬,球队名称)。其中,球员名称是主码,球队名称是外码;
比赛(比赛编号,比赛时间,比赛结果,主场球队,客场球队)。其中,比赛编号是主码,主场球队、客场球队是外码;
参赛(比赛编号,球员名称,得分,篮板)。其中,比赛编号、球员名称共同作为主码,比赛编号、球员名称同样也是外码。
CREATE TABLE 房屋表( 房屋号 char(10) PRIMARY KEY, 房屋地址 char(20) not null, 面积 int, 月租金 int) CREATE TABLE 租赁表(
房屋号 char(10),
租赁日期 datetime,
租赁月数 int not null,
本次总租金 int,
PRIMARY KEY(房屋号,租赁日期),
FOREIGN KEY(房屋号) REFERENCES 房屋表(房屋号) )
现要创建一个具有如下功能的触发器:每当在租赁表中插入一行数据(房屋号,租赁日期,租赁月数)时,自动计算出该房屋的本次总租金。请补全下列代码。
CREATE TRIGGER tri ON【1】FOR【2】
AS
【3】@x int --声明保存月租金的变量
SET @x = (SELECT 月租金 FROM 房屋表 WHERE 房屋号 = (SELECT 房屋号 FROM【4】))
UPDATE 租赁表 SET 本次总租金 = 租赁月数 *【5】
FROM 租赁表 as a JOIN【6】as b
on a.房屋号 = b.房屋号
and a.租赁日期 = b.租赁日期
使用FOR或AFTER选项定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。而使用INSTEAD OF选项定义的触发器为前触发器。这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代引发语句的操作。
在触发器语句中可以使用两个特殊的临时工作表:INSERTED表和DELETED表。这两个表是在用户自行数据的更改操作时,SQL Server自动创建和管理的。其中INSERTED表是用于存储INSERT和UPDATE语句所影响的行的副本。而DELETED表用于存储DELETE和UPDATED语句所影响的行的副本。
【1】:租赁表
【2】:INSERT
【3】:DECLARE
【4】:inserted
【5】:@x
【6】:inserted
【解析】
从触发器的语法中可知,【1】处应该填写的执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。从题目“CREATE TRIGGER tri ON【1】FOR【2】”知,本题创建的触发器是是后触发器。该触发器的功能是“每当在租赁表中插入一行数据(房屋号,租赁日期,租赁月数)时,自动计算出该房屋的本次总租金”。本题是在租赁表上建立后触发器,需要执行的是修改语句。故可推导出【1】处应填写:租赁表,【2】处应填写:INSERT。
根据【3】空的注释语句知,此处是声明保存月租金的变量,应该使用DECLARE关键字。故【3】处应填写:DECLARE。
使用UPDATE关键字对房屋表进行操作,因此影响的是INSERTED表的内容。故【4】处应填写:INSERTED。
根据【5】空的查询语句,此处应填写月租金变量“@x”:本次总租金 = 租赁月数 *月租金 FROM 租赁表 as a JOIN【6】as b
,执行过程需要将租赁表和INSERTED表连接,故【6】填写:INSERTED。
CREATE TABLE 销售单据明细表 (
销售单据编号 varchar(20),
商品编号 varchar(8),
单价 money,
数量 int
);
在系统运行一段时间后,此表中有近千万条数据, 程序员在数据库中执行如下SQL语句:
(1)SELECT 商品编号, sum(单价*数量) FROM 销售单据明细表 WHERE 单价 > 150 GROUP BY
商品编号,为提高此查询的执行效率,在不改变SQL语句且不进行硬件调整的情况下,请给出提高查询执行效率的方案。(5分)
{my_textArea}
(2)在运行过程中,发现此系统数据库CPU使用率很高,达到近95%,高峰期间达到100%,且系统内存使用率达到90%,但系统I/O很轻。业务人员反映系统操作速度慢。为了提高系统运行速度,在不修改应用程序的前提下,两位工程师提出了两种不同的解决方案:
方案一:为服务器增加1颗CPU
方案二:为服务器增加一倍内存
考虑成本因素,现阶段只能选择一种方案实施。请指出在现有情况下,哪种方案更合理并给出原因。(5分)
本题考查的是索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件等等,以及数据库性能优化的方法。
(1)索引的知识
索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下:
①经常在查询中作为条件被使用的列,应为其建立索引;
②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引;
③一个列的值域很大时,应为其建立索引;
④如果待排序的列由多个,应在这些列上建立复合索引。
(5)可以使用系统工具来检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引也可以提高查询速度。
(2)数据库性能优化
一般来说,在数据库发现性能问题时,首先需要对数据库运行环境进行检查。可以从外部环境、调整内存分配、调整磁盘I/O、调整资源竞争等几个方面着手改变数据库的参数.提高其性能。
①外部调整:外部的条件主要包括CPU和网络。
在任何机器中,CPU的数据处理能力往往是衡量计算机性能的一个标志。如果运行队列数目超过了CPU处理的数目,服务器性能就会受到CPU的限制而下降。解决方法是为服务器适当增加CPU的数量或者是终止需要许多资源的进程。
大量的SQL数据在网络上传输会导致网速变慢。网卡、交换机、集线器等网络设备的性能对网络的影响很明显。所以,通过调整网络设备,也可以在定程度上提高数据库系统的性能。
②调整内存分配:通过调整相关参数控制数据库的内存分配,也可以在很大程度上改善数据库系统的性能。
③调整磁盘I/O:通过令I/O时间最小化,减少磁盘上的文件竞争带来的瓶预等方法来改善数据库系统的性能。
④调整竞争:修改参数以控制连接到数据库的最大进程数、减少调度进程的竞争、减少多线程服务进程竞争、减少重做日志缓冲区竞争和减少回滚段竞争。
【参考答案】
(1)在不改变SQL语句且不进行硬件调整的情况下,可以为销售单据明细表“商品编号”建立一个索引来提高查询的效率。
(2)方案一合理。提高数据库性能的方法,一般是从外部环境、调整内存分配、调整磁盘I/O、调整竞争资源等几方面着手来改变数据库的参数。SQL Server采用将数据缓冲在内存的方式,因此在数据库系统运行的过程中会占用一定的内存,又因为I/O并不存在问题,说明内存上满足需求。CPU使用率很高,说明CPU计算能力不足,应增加CPU的数量。
表名 | 属性集 | 主键 | 外键 |
T1 | a1,a2,a3 | a1 | a3,参照T2的主键a4 |
T2 | a4,a5 | a4 | |
T3 | a6,a7 | a6 | |
T4 | a4,a8,a9 | (a4,a8) | a4,参照T2的主键a4 a8,参照T2的主键a4 |
T5 | a1,a6,a10 | (a1,a6) | a1,参照T1的主键a1 a6,参照T2的主键a6 |
(1)试画出相应的ER图,使得可以从该ER图推导出上述表定义,其中实体和联系的名称可以自定。(8分)
(2)给出创建T5表的SQL语句,属性的数据类型均为int。(2分)
ER图的设计原则:在设计ER图时,首先应根据需求分析,确认实体、属性和联系这3种ER图的基本要素。在ER图中,分别用矩形框表示实体,椭圆表示属性,菱形框表示联系。
①实体:把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事物。
②属性:描述实体的特性称为属性,能唯一标识实体的属性作为主属性,在ER图中用下划线标识。
③联系:联系是实体间有意义的相互作用,即实体间存在的关联。
根据表格中的5个关系模式知,T2和T3两个关系模式只有自己的主码和属性,可以列为两个单独的实体,T2对应实体t2,T3对应实体t3。
T1中既有实体t2的主码,又有自己的主码和属性,根据一对多的转换规则,T1对应的实体t1的属性是a1和a2,外码是a3,参照T2的主键a4,且t1和t2存在一对多的联系。
根据多对多的联系定义,T5关系模式由实体t1和t3决定,a1和a6共同构成主键,联系属性是a10。T4关系模式中,a4是t2实体的主键,属性a8也是依赖于t2实体的主键,a4和a8共同构成主键,联系属性是a9。
【参考答案】
(2)【解题思路】
在SQL语言中,可以使用CREATE TABLE语句建立基本表。语句基本格式为:
CREATE TABLE <表名>(<字段名1><数据类型1>[字段完整性约束条件1]
[,<字段名2><数据类型2>[字段完整性约束条件2]][,…]
[,<字段名n><数据类型n>[字段完整性约束条件n]])
[,[表级完整性约束条件]];
其中包含的参数含义如下:
<表名>:指需要定义的表的名字。
<字段名>:指定义表中一个或多个字段的名称。
<数据类型>:指对应字段的数据类型。要求每个字段必须定义字段名称和数据类型。
[字段完整性约束条件]:指定义相关字段的约束条件,包括主键约束(Primary Key)、数据唯一性约束(Unique)、空值约束(Not Null或Null)和完整性约束(Check)等。
【参考答案】
创建T5表的SQL语句如下:
Create table T5 (
a1 int not null,
a6 int not null,
a10 int not null,
primary key(a1,a6) ,
a1 foreign key references T1(a1),
a6 foreign key references T3(a6)
)
CREATE TABLE 房屋表(
房屋号 char(10) PRIMARY KEY,
房屋地址 char(20) not null,
面积 int,
月租金 int)
CREATE TABLE 租赁表(
房屋号 char(10),
租赁日期 datetime,
租赁月数 int not null,
PRIMARY KEY(房屋号,租赁日期),
FOREIGN KEY(房屋号) REFERENCES 房屋表(房屋号) )
现要创建一个具有如下功能的存储过程:根据输入的房屋号,计算该房屋的历史租金总和并用输出参数返回。请补全下列代码。
CREATE【1】P1
@room char(10), --输入参数:房屋号
@total int【2】 --输出参数:租金总和
AS
【3】@total = (
SELECT【4】(月租金 * 租赁月数)
FROM 房屋表 a JOIN 租赁表 b ON a.房屋号 = b.房屋号
WHERE【5】)
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
建立存储过程的语句:
CREATE { PROCEDURE | PROC }[schema_name] 存储过程名
[{@[存储过程参数] [参数类型] data_type}
[=默认值][OUT|OUTPUT]
][,…n][WITH RECOMPILE]
AS
BEGIN
SQL语句
END
其中,参数schema_name是过程所属的架构名。使用OUTPUT参数将值返回给过程的调用方。参数RECOMPILE指示数据库引擎不缓存该存储过程的计划,该存储过程在运行时将被重新编译。
【参考答案】
【1】PROC或PROCEDURE
【2】OUTPUT
【3】SET
【4】SUM
【5】a.房屋号 = @room或b.房屋号 = @room或@room = a.房屋号或@room = b.房屋号
【解析】
【1】CREATE是用来建立存储过程的,根据建立存储过程的语法可知此处应该填写:
PROCEDURE(或者PROC)。故【1】处应该填写PROCEDURE或PROC。
【2】题目要求“根据输入的房屋号,计算该房屋的历史租金总和并用输出参数返回”。OUTPUT类型的参数需要在存储过程的参数列表中添加。OUTPUT类型的参数传入存储过程后还会返回其运行后的值。故【2】处应该填写OUTPUT。
【3】在创建存储过程中,给变量赋值时应使用SET关键字。故【3】处应该填写SET。
【4】题目要求计算该房屋的历史租金总和,因此应该对历史租金求和。SQL语句中求和函数使用的是SUM()函数。故【4】处应该填写:SUM。
【5】WHERE说明查询条件,用于提取那些满足指定标准的记录。根据题意根据输入的房屋号,计算该房屋的历史租金总和,WHERE后面的条件是输入的房号。故【5】处应该填写:a.房屋号 = @room或b.房屋号 = @room或@room = a.房屋号或@room = b.房屋号。
CREATE TABLE 销售单据明细表 (
销售单据编号 varchar(20),
商品编号 varchar(8),
单价 money,
数量 int,
总价 money
);
为了保持数据一致性,此表中存在如下触发器:
CREATE TRIGGER AutoCountSum
ON 销售单据明细表 FOR INSERT,UPDATE
AS
DECLARE @UnitPrice money, @Quantity int
SELECT @UnitPrice = 单价, @Quantity = 数量
FROM inserted
UPDATE 销售单据明细表 SET 总价 = @UnitPrice * @Quantity
WHERE 销售单据编号 = (SELECT 销售单据编号 FROM inserted)
AND 商品编号 = (SELECT 商品编号 FROM inserted)
在系统运行一段时间后,此表中有近一千万条数据。
(1)程序员在数据库中执行如下SQL语句:
SELECT 商品编号,sum(数量) FROM 销售单据明细表 WHERE 单价 >200 GROUP BY 商品编号 为提高此查询的执行效率,在不改变SQL语句的情况下,请给出提高查询执行效率的方案并阐明理由。(5分)
(2)对此表的插入操作速度很慢,请分析插入速度慢的原因,并在不改变数据库服务器硬件、不改变表基本结构、不清理数据的情况下,说明应如何优化此表的插入操作。(5分)
【解题思路】
本题考查的是索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件等等,以及触发器中保存数据的临时表作用。
(1)索引的知识
索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下。
①经常在查询中作为条件被使用的列,应为其建立索引。
②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引。
③一个列的值域很大时,应为其建立索引。
④如果待排序的列由多个,应在这些列上建立复合索引。
(2)触发器中保存数据的临时表作用
在触发器语句中可以使用两个特殊的临时工作表:INSERTED表和DELETED表。这两个表是在用户执行数据的更改操作时,SQL Server自动创建和管理的。这两个表驻留在内存中,其结构同触发器所作用的基本表的结构,并且只可以被触发器使用,但在触发器中不能直接对这两个临时表中的数据进行更改。
INSERTED表用于存储INSERT和UPDATE语句所影响的行的副本。在执行INSERT操作时,新插入的数据同时被保存到INSERTED表中。在执行UPDATE操作时,对被修改操作影响的所有数据行,将更改后的数据(按行进行)保存到INSERTED表中。INSERTED表中的内容是执行操作的基本表中新数据行的副本。
【参考答案】
(1)在不改变SQL语句且不进行硬件调整的情况下,可以为销售单据明细表“商品编号”建立一个索引来提高查询的效率。
(2)在一个插入或更新事务处理中,新建行被同时添加到 INSERTED 表和触发器表中。INSERTED 表中行是触发器表中新行的副本。当表中有一千万条数据时,INSERTED 表中也存储着大量的数据,而触发器要在 INSERTED 表中进行查询,所以插入的速度会很慢。可以通过删除 INSERTED 表中数据的方法来优化插入的速度,不会影响数据库服务器硬件、不改变表基本结构、不清理数据的情况下。
第 6 章 高级数据查询 111页
并运算(UNION):可将两个或多个查询语句的结果集合并为一个结果集。
JOIN 操作是水平地合并数据(添加更多的列),而 UNION 是垂直地合并数据(添加更多的行)。
ALL 表示在结果集中包含所有查询语句产生的全部记录,包括重复的记录。如果没有指定 ALL,则系统默认是删除合并后结果集中的重复记录。
要注意的几点:
{blank}ABSOLUTE 5 FROM cur1 …
FETCH 功能是通过 Transact-SQL 服务器游标检索特定行,具体语法:
FETCH [[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar } | RELATIVE { n | @nvar }] FROM]{{[GLOBAL]cursor_name}|@cursor_variable_name}[INTO@variable_name [ ,...n ]]
参数说明:
NEXT:紧跟当前行返回结果行,并且当前行递增为返回行。如果 FETCH NEXT 为对游标的第一次提取操作,则返回结果集中的第一行。NEXT 为默认的游标提取选项。
PRIOR:搜索返回紧邻当前行前面的结果行,并且当前行递减为返回行。如果 FETCH PRIOR: 为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。
FIRST:返回游标中的第一行并将其作为当前行
LAST:返回游标中的最后一行并将其作为当前行搜索。
ABSOLUTE { n | @nvar}:如果 n 或 @nvar 为正,则返回从游标头开始向后的第 n 行,并将返回行变成新的当前行。如果 n 或 @nvar 为负,则返回从游标末尾开始向前的第 n 行,并将返回行变成新的当前行。如果 n 或 @nvar 为 0,则不返回行。n 必须是整数常量,并且 @nvar 的数据类型必须为 smallint、tinyint 或 int。
RELATIVE { n | @nvar}:如果 n 或 @nvar 为正,则返回从当前行开始向后的第 n 行,并将返回行变成新的当前行。如果 n 或 @nvar 为负,则返回从当前行开始向前的第 n 行,并将返回行变成新的当前行。如果 n 或 @nvar 为 0,则返回当前行。在对游标进行第一次提取时,如果在将 n 或 @nvar 设置为负数或 0 的情况下指定 FETCH RELATIVE,则不返回行。n 必须是整数常量,@nvar 的数据类型必须为 smallint、tinyint 或 int。
ALTER TRIGGER 第8章 数据库后台编程技术 8.3
触发器:一种特殊的存储过程,对数据进行 UPDATE INSERT DELETE 操作时自动触发执行。
触发器 - 保证业务规则和数据完整性。
通常使用在下列场合中:
性能需求分析主要内容包括
在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。
数据库物理设计的目的是将数据的逻辑描述转换为实现技术规范,其目标是设计数据存储方案,以便提供足够好的性能并确保数据库数据的完整性、安全性和可恢复性。
设置事务执行时的隔离性级别,该任务属于数据库应用系统设计步骤中的物理设计。
这两个一对多联系符合标定联系的定义。每个实体类型都有自己的标识符,如果两个实体集之间发生联系,其中一个实体类型的标识符进入另一个实体类型并与该实体类型中的标识符共同组成其标识符时,这种联系则称为标定联系。– IDEF1X建模方法 39页
数据库物理设计主要包括
在UML中,用类图来描述系统的静态结构,而用顺序图和通信图来表示系统的动态图。
CREATE TRIGGER < Trigger_name >
ON{table|view}
{FOR|AFTER|INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS {sql_statement}
…
使用FOR或AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。
业务逻辑层概要设计的原则主要体现在以下几个方面:
– 业务逻辑层概要设计 71页
聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。
一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以对应的聚集索引只能有一个。一个表中可以有多个唯一索引,唯一索引的作用是保证索引键的值不重复,能极大的提高查询速度,而且还有唯一约束的作用。
如果在创建数据库时没有设置自动增长方式,则数据库在使用一段时间后可能会出现数据库空间不足的情况,这些空间包括数据空间和日志空间。
如果数据空间不够,则意味着不能再向数据库中插入数据;
如果日志空间不够,则意味着不能再对数据库数据进行任何修改操作。
扩大数据库空间有两种方法:
在SQL Server 2008中,创建分区方案的SQL语句是:
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
其中 file_group_name | [ PRIMARY ] [ ,…n]指定用来持有由 partition_function_name 指定的分区的文件组名。分区分配到文件组的顺序是从分区1开始,按文件组在[,…n]中列出的顺序进行分配。在[,…n]中,可以多次指定同一个 file_group_name。
授予权限语法格式:(第 9 章 - 安全管理 - 185页)
GRANT <permission> [,…n]
ON
[OBJECT ::][schema_name].object_name[(column[,…n])]
TO <database_principal> [,…n]
[WITH GRANT OPTION]
<permission> ::=
ALL [PRIVILEGES] | permission [(column[,…n])]
其中各参数的含义如下:
本题中要求用户具有创建表的权限(CREATE TABLE)。
TO 指定要向其授予权限的主体(U1)。授权语句应为:
GRANT CREATE TABLE TO U1。
组成IDEF0图的基本元素是矩形框和箭头,如下图所示,矩形框内的动词短语描述功能活动的名称,活动的编号按要求写在矩形框右下角指定的位置。
学生的家庭收入只能作为学生申请贷款的条件,不能作为学生申请助学贷款这个活动所需要的资源或者物理手段,因此可以排除B、D两项;贷款资格应该是贷款的约束条件,因此可以排除C项。故答案为A项。
游标(Cursor)两部分内容:
分区表是将表中的数据按照水平方式划分成不同的子集,这些数据子集存储在数据库的一个或多个文件组中。分区表是从物理上将一个大表分成几个小表,但从逻辑上来看还是一个大表。
是否创建分区表主要取决于表当前的数据量大小以及将来的数据量大小,同时还取决于对表中数据进行的操作特点。
适合分区的条件:
创建分区表 - 创建分区函数、创建分区方案、使用分区方案创建表。
系统监控与分析,系统性能优化调整、系统进化(升级)、并发控制、存储空间管理、安全性维护、完整性维护、备份与恢复等。
数据库运行管理与维护:日常维护、系统监控与分析、系统性能优化调整、系统进化。
数据库监控与分析 199页 - 第 10 章 数据库运行维护与优化
监控分析机制:
根据监控对象的不同,监控分析又可以分为:
索引技术(Indexing)是一种快速数据访问技术,它将一个文件的每个记录在某个或某些域(或称为属性)上的取值与该记录的物理地址直接联系起来。
索引技术的关键是建立记录域取值到记录的物理地址间的映射关系,这种映射关系称为索引(Index)。
索引技术分类:
有序索引及其特点:
索引视图通常不会提高下列查询类型的性能:
第 11 章 故障管理 - 日志文件
检查点的作用:在利用日志文件恢复数据库数据的过程中,恢复子系统需要搜索日志,检查所有的日志记录,重做一些不必要的事务操作,浪费了大量时间。为了解决这些问题,发展了具有检查点的恢复技术。
检查点最大限度地减少了数据库完全恢复时所必须执行的日志部分。
检查点记录的内容包括:
恢复子系统可以定期或不定期地建立检查点来保存数据库状态。
系统在恢复时,如果事务在故障发生时未完成,应该予以撤销(UNDO);
如果事务在检查点之后才提交,它们对数据库所做的修改在故障发生时还可能在缓冲区中,尚未写入数据库,所以要REDO;
如果事务在检查点之前已经提交,所以以不必执行REDO操作。
第 13 章 大规模数据库架构 - 分布式数据库 - 250页
了解分布式数据库系统和分布式数据库的概念!
分布式数据库则是分布式数据库系统中各场地上数据库的逻辑集合。
分布式数据库目标,数据分布策略。
数据分片:
在分布式数据库系统中,由于数据分布在多个不同的场地上,使得查询处理中还要考虑站点间传输数据的通信代价。
分布式数据库系统的主要目的是实现场地自治和数据全局透明共享。
并行数据库系统结构:
第 14 章 数据仓库与数据挖掘 - 270页
OLTP:
操作型数据(Operational Data)是指由企业的基本业务系统所产生的数据,操作型数据及相应数据处理所处的环境,即用于支持企业基本业务应用的环境,一般被称为联机事务处理(OnLine Transaction Processing,OLTP)环境。
OLAP:
联机分析处理或称为在线分析处理,主要用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。
建立DML触发器SQL语句为CREATE TRIGGER,其语法格式为:
CREATE TRIGGER < Trigger_name >
ON{table|view}
{FOR|AFTER|INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS {sql_statement}
…
使用FOR或AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。
第 7 章 数据库及数据库对象 - 分区表 - 142 页
在SQL Server 2008中,创建分区方案的SQL语句是:
CREATE PARTITION FUNCTION partition_function_name (input_parameter_type)
AS
增加冗余列是指在多个表中增加具有相同语义的列,它常用来在查询时避免链接操作,有利于加快访问速度,但违反了第三范式,会增加维护数据完整性的代价,必须用触发器立即更新或存储过程和应用代码批量更新,以维护数据的完整性。
事务内部故障分为预期和非预期的。
第 12 章 备份与恢复数据库 - 备份类型 234页
事务日志备份并不备份数据库本身,它只备份日志记录,而且只备份从上次备份之后到当前备份时间发生变化的日志内容。(事务日志备份仅用于完整恢复模式和大容量日志恢复模式)
连续的日志备份序列称为“日志链”,若要将数据库还原到故障点,必须保证日志链是完整的。
在将数据库恢复到故障点的过程中,结尾日志备份是恢复计划中的最后一个相关备份。
简单恢复模式不支持事务日志备份。
是一个面向主题的、集成的、非易失的,且随时间变化的数据集合,用来支持管理人员的决策,有面向主题性、集成性、不可更新性和时间特性等几个重要特性。
不可更新并不意味着不向数据仓库中追加新的数据,只是表示一般不再对进入数据仓库中的原始数据进行修改。
建立数据仓库的主要目的是根据决策需求对企业的数据采取适当的手段进行集成,形成一个综合的、面向分析的数据环境,用于支持企业的信息型、决策型的分析应用,而不是信息系统尽可能地实现自主业务决策。
页码参照官网指定教材:
全国计算机等级考试三级教程——数据库技术(2020年版)