三级数据库等级考 - 记录学习

数据库设计与分析

数据库结构设计

A、逻辑结构设计 B、概念结构设计 C、物理结构设计 D、存取结构设计

概念结构设计

将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计 E-R图

逻辑结构设计

数据库逻辑结构的设计分为两个步骤:首先将概念设计所得的E-R图转换为关系模型,然后对关系模型进行优化
关系模式的设计规范化处理 属于数据库逻辑结构设计的内容  点击参考其他博主的博客

模式调整一般需符合第三范式要求 x
有些时候完全规范化严格遵守3NF的表会降低数据库的性能

物理结构设计

数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。
所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。

数据库物理设计并不包括文件和数据库的具体实现细节(这是存储结构设计需要考虑的),在这个阶段将根据数据库的各种实际情况,选择数据存储方案以加快数据检索速度。 在进行数据库设计时,考虑到应用主要以分析型查询为主,决定对表采取按列存储的实施方案,这一操作属于数据库的 物理结构设计

存取结构设计

数据库存储结构设计:
解决数据文件中记录的存储信息,使应用所要访问的记录尽量存储在同一磁盘块上,对磁盘的I/O操作次数最少
数据库存取方法设计:
解决如何尽快找到所需记录,找到记录所在磁盘块的磁盘I/O操作次数最少

UML [ 统一建模语言——是面向对象软件的标准化建模语言 ]

DFD[ 数据流图 Data Flow Diagram ]、 IDEFO 被称为 需求分析建模方法

DFD建模方法由数据流,处理,数据存储【外部】这四种基本元素构成

IDEF1X

IDEF1X侧重分析,抽象和概括应用领域中的数据需求,被称为 数据建模方法

在IDEF1X中一个非确定联系又称为多对多关系 m:n 联系
在现实世界中,有些事务是其他事务的类。例如: 本科生和研究生都是学生类分类,在模型中可以通过一个【分类联系】来表达这类事物。

在IDEF1X建模方法中,下列联系类型中不会产生从属实体集的是【非标定型联系】

关系模式个数=实体集数+多对多关系数

两个实体集间存在多对多联系,利用引入的第三个实体集,转化后得到的两个一对多的联系,符合标定型联系的定义

事务的隔离性

事务的隔离性 是指多个并发事务同时访问一个数据库时,一个事物不应被另一个事物所干扰,即保证并发读取数据的正确性,降低发生数据不一致的可能性

在编写事务时,提高事务的隔离性级别带来的好处是___C___。
A、降低了发生死锁的可能性
B、提高了事务吞吐量
>> C、降低了发生数据不一致的可能性
D、降低了发生活锁的可能性

降低死锁

降低发生死锁的法则
按同一顺序访问资源
避免事务中的用户交互
釆用小事务模式,尽量缩短事务的长度,减少占有锁的时间
尽量使用记录级别的锁(行锁),少使用表级别的锁
使用绑定连接,使同一应用程序所打开的两个或多个连接可以相互合作

事务的并发访问可以提高吞吐量

 提高事务的隔离性级别 不能 提高事务的吞吐量

IDEFO需求建模方法

IDEFO需求建模方法

左边输入箭头表示完成活动需要的数据
上方控制箭头描述了影响这个活动执行的事件和约束条件
右边输出箭头说明由活动产生的结果及信息
下方 进入的机制箭头表示实施该活动的物理手段和完成活动需要的资源(计算机系统人或组织)

关键字 unique 表示 唯一索引clustered 表示 聚集索引 在数据文件的非主属性上建立的索引称为 辅索引

已知关系R(A, B, C),有定义索引的语句:create unique clustered index idx1 on R(B)
下列关于idx1的说法,正确的是 C .
A、idx1既是主索引,也是聚集索引
B、idx1既是唯一索引,也是主索引
>> C、idx1既是唯一索引,也是聚集索引
D、idx1既不是主索引,也不是聚集索引
已知关系R(A, B, C),其主码是属性A。下列SQL语句中定义了一个唯一辅索引的是 B .
A、create unique index idx2 on R(A)
>> B、create unique index idx1 on R(B)
C、create clustered index idx3 on R(C)
D、create clustered index idx4 on R(A)
错题 :
对关系模式进行 【去规范化处理】,这属于数据库结构设计中的 C .
A、逻辑结构设计
B、概念结构设计
>> C、物理结构设计
D、存取结构设计

事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令

事务概要设计内容包括:事务名称、事务所访问的关系表及关系属性、事务处理逻辑、事务用户(指使用、启动、调用该事务的软件模块或系统)。

数据库应用系统的数据访问层的主要任务是进行事务设计。下列【不属于】事务概要设计内容的是 B  .
A、事务处理逻辑
>> B、事务隔离级别
C、事务用户
D、事务名称

数据库应用系统的实施工作包括 创建数据库装载数据编写与调试应用程序数据库试运行

数据库应用系统的实施分为四个步骤。下列【属于】数据库应用系统实施工作的是      。
>> A、数据初始化
B、数据库性能调优
C、数据转储
D、系统监控

系统规划与定义的内容包括 任务陈述确定任务目标确定系统范围和边界确定用户视图可行性分析阶段的任务包括技术可行性、经济可行性、操作可行性、开发方案选择

下列【不属于】数据库应用系统系统规划与分析阶段任务的是__B__。
A、确定系统范围和边界
>> B、定义事务规范
C、确定任务目标
D、论证技术可行性

如果要使用TOP 1 WITH TIES,则必须使用 order by

设有图书出版表(书号,书名,出版日期,单价),其中"书号"是主键。
现要查询2017年出版的单价最高的图书的书名和单价。
下列语句中能完成该查询要求 :
···
SELECT 书名,单价 FROM 图书出版表 
WHERE书号 in(
SELECT TOP 1 WITH TIES 书号 FROM 图书出版表
WHERE year(出版日期)=2017
ORDER BY 单价 desc)
···

UML与数据库系统

根据事务-基本表交叉引用矩阵可以确定哪些事务对哪些表列执行了何种操作,基于该矩阵 可以帮助数据库设计人员建立合适的索引

提高系统事务吞吐量 的是: 降低事务隔离性级别

高级查询

计数使用 COUNT
求和使用 SUM

设有教师表(教师号,教师名,职称,性别),其中“教师号”是主键。
现要查询具有“教授”职称的女教师【人数】,下列语句中能正确完成该查询要求的是______。
>SELECT COUNT(*) FROM 教师表 WHERE 职称='教授' and 性别='女'
···
题中要求的人数应该是计数  【这种题抠字眼】
···
设在SQL Server 2008某数据库中有图书表(书号,书名,出版日期,单价),其中"书号"是主码。
现要查询2015年1月份出版的单价最高的前三本图书的详细信息。
下列查询语句中能正确完成该查询要求的是 
···
SELECT TOP 3 * FROM  图书表
WHERE 出版日期 BETWEEN '2015/1/1' AND '2015/1/31'
ORDER BY 单价 DESC
···
解析:TOP 3 放在 * /字段 之前
设在SQL Server 2008某数据库中有商品表(商品号,商品名,类别,单价)和销售表(商品号,销售时间,销售数量)。
现要【查询2015年9月没有被卖出过的"手机"类商品】的商品名和单价。
下列查询语句中能正确完成该查询要求的是   
···
SELECT 商品名, 单价 FROM 商品表
WHERE 商品号 NOT IN (
SELECT 商品号 FROM 销售表
WHERE 销售时间 BETWEEN '2015/9/1' AND '2015/9/30'
AND 类别 = '手机')
AND 类别 = '手机'
···
解析:
使用子查询进行基于集合的测试时,通过运算符IN和NOT IN,将一个表达式的值与子查询返回的结果集进行比较。
其形式是:
    WHERE表达式 [NOT] IN (子查询)
这种形式的子查询的语句是分步骤实现的,即先执行子查询,然后在子查询的结果基础上再执行外层查询
设在SQL Server中有如下定义触发器的语句:
CREATE TRIGGER tri_1
ON T1 FOR UPDATE
AS ······
下列关于该触发器作用的说法,正确的是___B___。
A. 在T1表上定义了一个由数据更改操作引发的前触发型触发器
>> B. 在T1表上定义了一个由数据更改操作引发的后触发型触发器
解析:
使用FOR或者AFTER选项定义的触发器为后触发型触发器,
即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,
才执行该触发器。
使用INSTEAD OF选项定义的触发器为前触发型触发器,在这种模式的触发器中,
指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代触发的操作。
语句中指定的操作是update,更新操作。
下列关于SQL Server索引的说法,正确的是__C__。
A.聚集索引只能建立在一个列上
B.唯一索引不能是聚集索引
C.在没有建立聚集索引的表上定义主键,系统会自动在主键上建立聚集索引
D.在一个表上不能建立多个唯一索引
解析:
创建索引的简化语法格式为:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON <object>(column [ASC|DESC][,…n])
column:索引所基于的一个列或多个列。如果指定多个列名,则可为指定列的组合值创建组合索引。
由语法可知AB错误。
唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,可以确保索引列中每个值的组合都是唯一的(D错)。

数据库后台编程技术

存储过程不是代码段

数据库及数据库对象

model数据库用作SQL Server实例上创建的所有数据库的模板。
对model数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有用户数据库,
当用户创建一个数据库时,系统自动将model数据库中的全部内容复制到新建数据库中。

用户数据库的大小不能小于model数据库的大小

可以为日志文件单独定义文件组   x

日志文件不包括在文件组内,日志文件和数据文件是分开管理的

分区表 是将表中的数据按 水平方式 划分成不同的子集,这些数据子集存储在数据库的 一个或多个文件组中
分区表是从物理上将一个大表分成几个小表,但从逻辑上来看还是一个大表。
对于用户而言,所面对的仍然是一个大表,用户只要对大表进行操作就可以了,数据库管理系统会自动对小表进行操作

创建分区表通过以下几个步骤实现:
(1)创建分区函数。创建分区函数的目的是告诉数据库管理系统以什么方式对表进行分区。
(2)创建分区方案。分区方案的作用是将分区函数生成的分区映射到文件组中。
(3)使用分区方案创建表。

水平划分将一张基本表划分为多张具有相同属性、结构完全相同的子表
垂直划分则是将一张基本表划分为多张子表,每张子表包含的属性是原基本表的子集

水平分割是对一张表在水平方向分割,分割后得到的表结构相同,查询时需要使用UNION运算;
垂直分割则是对一张表在垂直方向分隔,分割后每张表中除主码列外,其他列均不同,查询时需要使用JOIN运算
分割的目的是提高性能

创建分区函数的SQL语句是:
CREATE PARTITION FUNCTION PFl(int) AS RANGE LEFT FOR VALUES (...n)
 . . . n 用于指定分区的值的数目,所创建的分区数等于 n+1
LEFT关键字,在指定分区间隔值是由数据库引擎 按升序从左到右排列 时,指定边界值间隔处于左侧分区;而关键字RIGHT是指定边界值间隔在右侧分区。

在SQL Server 2008中,设要为某整型类型的列创建4个分区,
分别是:小于等于100、101-200、201-300、大于300。
下列创建该分区函数的语句,正确的是 

A. CREATE PARTITION FUNCTION PF1(int)
   AS RANGE LEFT FOR VALUES(100,200,300)

B. CREATE PARTITION FUNCTION PF1(int)
   AS RANGE RIGHT FOR VALUES(100,200,300)

解析:
所创建的分区数等于n+1。本题中n值分别为100、200、300,因此可以创建4个分区。
由于釆用了LEFT关键字,在指定分区间隔值是由数据库引擎按升序从左到右排列时,指定边界值间隔处于左侧分区;
而关键字RIGHT是指定边界值间隔在右侧分区。题目中边界值间隔在左侧分区。故答案为A。

分离数据库 时需要停用被分离的数据库,正在被用户访问的数据库不能被分离

Q:分离数据库时,数据库管理系统无需判断该数据库是否正在被使用          X

数据库创建后可以手工扩大数据文件和日志文件的空间

数据库的安全管理

关于SQL Server 2008 中 guest

guest是SQL Server中一个特殊的数据库用户,不是系统定义的一个登录账户,在未启用时不能使用,主要用于提供匿名访问

SQL Server 2008中,若要授予用户U1具有T1表的查询和插入权限 :
GRANT SELECT, INSERT ON T1 TO U1

收回用户U1对T1表的查询和插入权限:
REVOKE SELECT, INSERT ON T1 FROM U1

SQL Server中,若要授予用户U1在DB1数据库中具有创建表的权限:
GRANT CREATE TABLE TO U1

收回用户U1在DB1数据库中的创建视图权限:
REVOKE CREATE VIEW FROM U1

回收/授予 视图和表的权限的命令中不含数据库名,授予使用TO,回收使用FROM

Oracle的安全控制机制可分为数据库级的安全控制、 表级、 行级列级的安全控制。
数据库级的安全性通过用户身份认证授予用户相应系统权限来保证,而【表级、行级、列级】的安全性是通过授予或回收对象特权保证的。
Oracle数据库中的用户按其操作权限大小可分DBA用户普通用户

db_datareader:
该角色是固定数据库角色,是定义在数据库级别上的,而且存在于每个数据库中。用户不能添加、删除或更改固定数据库角色。 db_datereader具有查询数据库中所有用户数据的权限,
db_datawriter:
db_datawriter是固定数据库角色之一,具有插入、删除和更改数据库中所有用户数据的权限

SQL Server 2008 的身份验证模式有"Windows身份验证模式""SQL Server和Windows身份验证模式"

运行维护与优化

数据库重组是指按照系统设计要求对数据库存储空间进行全面调整,如调整磁盘分区方法和存储空间、重新安排数据的存储整理回收碎块等,以提高数据库性能
数据库的重构是指由于数据库应用环境的不断变化,增加了新的应用或新的实体,取消了某些应用,有的实体与实体间的联系也发生了变化等,使得原有的数据库设计不能满足新的需求,此时需要调整数据库的模式和内模式
数据库的重组并不修改数据库原有设计的逻辑结构和物理结构,而数据库的重构则不同,它可以部分修改数据库的模式和内模式

对于一个数据量巨大的表,删除大量数据后,一般需要进行的操作是重建该表上的B树索引

alt

增加冗余字段: 它的作用是在查询时减少连接操作

数据库优化工作中,增加冗余列,该方法一般不能减少查询时的连接操作 X(错误的)

在数据库系统运维过程中,当对有索引表的数据进行大量更新后,为了提高数据库查询性能,下列操作中,一般情况下最合适的是 重建该表上的索引

分类器的构造方法有统计方法、机器学习方法、神经网络方法等
统计方法包括贝叶斯法非参数法
机器学习方法包括决策树法规则归纳法
神经网络方法主要是BP算法
K-means属于聚类算法

在机器学习中,分类算法需要用到的样本数据一般分成训练集【测试集】验证集三类。

数据仓库与挖掘

数据仓库的特征包括: 面向主题性【集成性】不可更新性,时间特性

数据仓库的目的

建立数据仓库的主要目的:形成一个数据环境,用于支持企业的信息型、决策型的分析应用

在粒度级设计中, 次要或不需要考虑的因素是 存储空间 最高粒度级

alt

                                                                                                         BackTop