数据库基础知识总结
数据库基础知识
前言
- 数据库运行维护工作:日常维护;监控与分析;性能优化调整;系统进化。
- DBAS实施与部署工作:建立数据库结构;数据加载;事务和应用程序的编码及测试;系统集成、测试与试运行;系统部署。
- DBAS可行性分析主要包括经济可行性、技术可行性、操作可行性、开发方案可行性四个方面。
- DBAS中的功能需求分析总体上可分为数据处理需求分析和业务规则需求分析。
- DBAS的概念设计包括系统总体设计和数据库概念模型设计。
- DBAS的逻辑设计包括应用程序概要设计和数据库逻辑结构设计。
- DBAS的物理设计包括数据事务详细设计和数据库物理结构设计。
- 用二维表结构在计算机中存储数据及数据之间的联系的数据模型被称为关系模型。
- 数据库管理系统提供数据定义语言(DDL),用于定义各种数据库对象。数据定义语句经DDL编译后,各种对象的描述信息存放在数据库的数据字典中。
- 数据库管理系统的三级模式外模式(概念设计)、模式(逻辑设计)、内模式(物理设计)。提供了两层映像机制,其中模式/内模式实现了物理独立性,外模式/模式提供了逻辑独立性。
- 按照数据库应用系统生命周期模型,系统设计阶段细分为概念设计、逻辑设计、物理设计三个阶段。
- 数据库管理系统为用户和应用程序提供了DDL语言,用此语言可以定义数据库的模式结构但执行后不能回滚。
- SQL server有五种约束类型,分别是主键约束、外键约束、唯一性约束、缺省约束和检查约束。
- 在SQL Server2008中主数据文件必须建立在主文件组中。
- 三层浏览器/服务器结构的数据库应用系统是由浏览器、应用服务器和数据库服务器三部分组成。
- 完整性约束分为列级、元组级、数据库级、关系级。
1 生命周期
系统规划阶段
系统规划和定义的具体内容包括:任务陈述、确定任务目标、确定系统范围和边界、确定用户视图。
确定项目的目标和范围,根据系统规划与定义的工作内容,具体说明项目的最终产品以及期望的时间、成本和质量目标。
根据DBAS软件开发模型,分解和定义整个项目包括的工作活动和任务。
估算完成该项目的规模及所需各种资源。
制定合理的DBAS项目计划,包括进度、成本、质量等方面的预测和控制方案。
- 瀑布模型:项目规划,系统分析,总体设计,详细设计,编码调试与集成调试,运行维护(优点保证系统一致性完备性,确定是不能发掘出用户的潜在需求)
- 快速原型模型:快速分析,设计构造原型,运行原型,评价原型并改进原型。
- 螺旋模型:项目规划,风险评估,工程实现,用户评估。(进行下一次的循环)
需求分析阶段
数据库应用系统的需求分析包括数据需求分析、功能需求分析(数据处理需求分析、业务规则需求分析)、性能需求分析(数据操作响应时间或数据访问响应时间、系统吞吐量、允许并发访问的最大用户数、每秒TPS代价值)、其他
需求分析(存储需求分析、安全性需求分析、备份和恢复需求分析)。
- 数据处理需求分析:从对数据组织与存储的设计角度,辨识应用领域所管理的各类数据项和数据结构,与数据处理需求分析结果一起,组成数据字典,形成"数据规范说明书”。
- 功能需求分析:功能需求分析主要针对DBAS应具有的功能进行分析,是DBAS需求分析的核心环节,总体上可分为数据处理需求分析与业务规则需求分析。数据处理需求分析从数据访问和处理的角度,明确对各数据项所需要进行的数据访问操作。在系统规划与分析阶段,DBAS开发者已经明确了各类用户视图。因此数据处理需求分析阶段可以从这些视图出发,针对每个用户视图进行数据处理需求分析,然后汇总各个视图的分析结果得到对系统的完整分析结果。故选择A项。
- 性能需求分析:性能需求则描述了系统应当做到什么程度,分析DBAS应具有的性能指标。
- 其他需求分析包括:存储需求、安全性需求等。
a.存储需求分析:存储需求分析是指估计DBAS系统需要的数据存储量,如DB所存储的数据总量。
b.安全需求分析:主要用于数据库安全设计,避免被非法使用和攻击。
DBAS需求分析阶段的一项重要工作是分析DBAS应具有的性能指标,主要包括:①数据操作响应时间,或数据访问响应时间;②系统吞吐量,即指系统在单位时间内可以完成的数据库事务或查询的数量;③允许并发访问最大用户数;④每TPS(Price per TPS)代价值。
数据处理需求分析结果也可以表示为事务规范。
事务规范包括了事务名称、事务描述、事务所访问的数据项、事务用户。
数据需求分析需要形成数据字典:数据项,数据结构,数据流,数据存储和处理过程。
- 功能需求分析包括数据处理需求分析(通过数据流图:{data flow diagram}形成数据字典文档)和业务规则需求分析(UML图)。
- 性能需求分析:响应时间,系统吞吐量(TPS),每TPS价值,允许并发访问的最大用户数。
- 其它需求分析包括:存储需求分析(数据库大小以及数据库存储量增长速度),安全性需求分析(备份和恢复需求分析)
图
- DFD:数据流,处理,数据存储,外部项。(自顶向下逐步细化的结构化分析方法)
- IDEFO:箭头表示数据流,矩形表示活动。
- UML:也可以进行信息系统的需求分析。
概念
1.DFD的基本元素:数据流(箭头)、数据始终(圆角矩形)、数据处理(矩形)、数据存储(开口矩形)。
2.获取需求的主要方法包括:面谈、实地考察、问卷调查、查阅资料。
3.信息系统需求分析常用的建模方法有DFD、IDEF0、UML。
4.DFD中的数据流用一个箭头描述数据的流向、并可在箭头上标注信息说明或数据项。
5.IDFE0中的基本元素是箭头和活动,其中矩形代表功能活动。
6.顶层DFD中包含的处理有1个。
7. IDEF0元素-左(输入)、右(输出)、上(控制)、下(机制)
8.在IDEF1中,多对多联系又称为非确定性联系。
类图
依赖-普通虚线箭头,指向被使用者
关联-普通实线箭头,指向被拥有者
泛化-三角实线箭头,指向父类
实现-三角虚线箭头,指向接口
聚合-空心菱形实线箭头,指向整体
组合-实心菱形实线箭头,指向整体
设计阶段
数据库应用系统设计包括概念设计、逻辑设计和物理设计
实施和部署阶段
包括:建立数据库、数据加载、事务和运行程序的编码和测试、系统集成、测试和试运行、系统部署
运行和维护阶段
数据库应用系统日常维护包括:备份与恢复、完整性维护、安全性维护、存储空间管理和并发控制。
2 数据库应用系统分析及规划
- 数据库概念设计的过程主要包括明确建模目标、定义实体集、定义联系信息模型、确定实体集属性、对信息模型集成与优化。ER
- 在数据分布设计中,分为水平划分和垂直划分,垂直划分是将一张基本表划分成多张子表,每张表必须包含基本表的主键 。
- 根据索引的实现方式,索引技术被分成有序索引和散列索引两大类。
- 索引技术的关键是建立记录域取值到物理地址间的映射关系。
- 第三范式的关系模式一定不包含部分函数依赖和传递函数依赖。
- 对关系进行规范化处理属于数据库应用系统开发过程中数据库逻辑设计阶段的任务。
- 关系数据库中要求的主码不能为空,这属于数据模型三要素的完整性约束。(数据结构、数据操作、完整性约束)
- 可以匹配到0个或多个字符的通配符是%,0个或一个的是_,范围[],排除^。
3 数据库设计及实现(自底向上)
- DBAS总体设计的主要内容:DBAS体系结构设计,DBAS软件总体设计,软硬件选型与配置设计,业务规则初步设计。
- 功能角度,DBAS系统通常可以划分为四个层次实现,分别是表示层、业务逻辑层、数据访问层、数据持久层。
- DBAS功能概要设计的目标是产生软件总体结构和软件功能模块。
- DBAS功能概要设计中表示层的主要任务是进行人机界面设计。
- DBAS体系结构设计:
客户/服务器(C/S)结构:客户端应用程序+数据库服务器
三层浏览器/服务器(B/S)结构:浏览器+Web应用服务器+数据库服务器 - DBAS软件总体设计:得到系统总体结构和分层模块结构。
- 软硬件选型与配置设计:涉及很多内容
- 业务规则初步设计:业务流程和运行规则的制订等。
- DBAS功能概要设计:分为四层(表示层,业务逻辑层,数据访问层,数据持久层)
目的:产生软件总体结构和软件功能模块 - DBAS功能详细设计:表示层详细设计(初步设计,用户界面细节设计,原型设计与改进)和业务逻辑层详细设计
- DBAS安全架构设计:数据安全设计
安全性保护,完整性保护,并发控制,数据库的备份与恢复,数据加密传输
安全性保护:用户身份识别,权限控制,视图机制。
完整性保护:防止合法用户想数据库中加入不合语义的数据,主要措施是对数据设置一些完整性约束条件。
并发控制:封锁机制。基本的封锁一般有排他锁和共享锁(一定要避免死锁)。
数据库备份与恢复:双机热备,数据转储,数据加密存储。
数据加密传输:手段有数字安全证书,对称密钥加密,数字签名,数字信封。
环境安全设计
漏洞与补丁:检查系统漏洞并更新系统补丁。
计算机病毒防护
网络环境安全
物理环境安全
制度安全设计 - DBAS实施:创建数据库,装载数据,编写与调试应用程序,数据库试运行。
创建数据库:考虑初始空间大小,数据库增量大小,访问性能。
装载数据:筛选数据,转换数据格式,输入数据,校验数据。
数据库试运行:功能测试,性能测试(先测试恢复功能,做好转储和恢复工作) - 数据库系统试运行的主要目的是对数据库系统的功能和性能进行进一步测试。
- 衡量数据库应用系统的性能指标中, 数据吞吐量表示系统在单位时间内可以完成的数据库事务数量。( 系统响应时间、系统吞吐量、允许并发访问的最大用户数、每TPS代价值)
- 每TPS代价值是用于衡量系统性能比的指标。(系统响应时间、系统吞吐量、允许并发访问的最大用户数、每TPS代价值)
概念设计
数据库概念设计的依据是需求分析阶段的文档,其中包括需求说明书、功能模型以及在需求分析阶段收集到的应用领域或问题域中的各类报表等。
概念设计的过程:明确建模目标,定义实体集,定义联系,建立信息模型,确定实体集属性,对信息模型进行集成与优化。
ER模型:
IDEF1X:独立实体集(每个实例都能够被唯一标识而不决定于它与其它实体集的联系),从属实体集(实例依赖于其它实体集的实例)
联系:标定型联系(由两个父实体集共同确定(外码有两个,并取决于不同的表)),非标定型联系(无需了解父端的实例,),分类联系(存在一般实体集,并且每个实例都对应有且仅有一个分类实体集),非确定联系(多对多)
关系模式描述关系的静态结构,它是静态、稳定的,而关系是动态、随用户对数据库的操作而变化的。
逻辑设计
ER模型转换为关系(需要将联系合并到关系中)
- 将需求转化成数据库的逻辑模型
- 通过ER图的型式对逻辑模型进行展示
- 同所选用的具体的DBMS系统无关
关系:一个关系对应通常所说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性,每一个属性都有一个名称,称为属性名
候选码:表中的某个属性组,它可以唯一确定一个元组
主码:一个关系有多个候选码,选定其中一个为主码
域:属性的取值范围
分量:元组中的一个属性值
ER图例
- 矩形:表示实体集,矩形内写实体集的名字
- 菱形:表示联系集
- 椭圆:表示实体的属性
- 线段:将属性连接到实体集,或将实体集连接到联系集
异常和冗余
插入异常:如果某实体随着另一个实体的存在而存在,即缺少某个实体时无法表示这个实体,那么这个表就存在插入异常。
更新异常:如果更改表所对应的某个实体实例的单独属性时,需要将多行更新,那么就说这个表存在更新异常。
删除异常:如果删除表的某一行来反映某实体实例,失效时导致另一个不同实体实例信息丢失,那么这个表中就存在删除异常。
注意:若一个表中存在插入异常,那它肯定存在删除异常和更新异常。
数据冗余:是指相同的数据在多个地方存在,或者说表中的某个列可以由其他列计算得到,这样就说表中存在数据冗余。
范式
第一范式
定义:数据库表中的所有字段都是单一属性,不可再分的。这个单一属性是由基本的数据类型所构成的,如整数,浮点数,字符串等,换句话说,第一范式要求数据库中的表都是二维表。(二维表就是由行和列组成的表)
第二范式
定义:数据库的表中不存在非关键字段对任一候选关键字段的部分函数依赖。
部分函数依赖是指存在着组合关键字中的某一关键字决定非关键字的情况。
换句话说:所有单关键字的表都符合第二范式。
第三范式
定义:第三范式是在第二范式的基础上定义的,如果数据表中不存在非关键字段,对任意候选关键字段的传递函数依赖则符合第三范式。
BC范式
定义:在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。也就是说如果是复合关键字,则复合关键字之间也不能存在函数依赖关系
物理设计
- 物理结构角度要考虑的问题:文件的组织,文件的结构,文件的存取和索引技术。
- 索引技术:有序索引技术(顺序排列),散列技术(利用一个散列函数实现记录域到记录的物理地址间的直接映射关系)
- 有序索引的分类:聚集索引(索引文件中索引项排列顺序和数据排列顺序相一致),非聚集索引(反之),稠密索引(每个查找码都对应一个索引记录),稀疏索引(部分查找码对应了索引记录),主索引(主码属性集上建立的索引),辅索引(非主属性上建立的索引),唯一索引(索引属性列都是唯一的),单层索引,多层索引(进一步优化索引效率)。
- 物理设计环节:数据库逻辑模式描述,文件组织和存取设计,数据分布设计,确定系统配置,物理模式评估。
4 数据库存储技术
数据存储与文件结构
1、堆:数据按照向后插入的方法,一直堆积在文件末尾,使用索引结构访问数据时,将在索引中得到数据指针,然后获取数据,当有数据删除时,将其从对应位置删除,对于频繁更新的堆表,需要定期进行优化,使用堆表,会导致数据顺序访问原则被打破(在DBMS中做了访问优化,性能得到部分提升),由于没有填充因子,在相同压缩算法下,空间能得到很大的节省,堆表很适合于顺序范围访问,如数据仓库等业务场景。
2、索引组织:一般索引组织表使用B+作为构造方法,整个结构如同一个倒挂的数(从数据访问流来看),路由信息存放在树枝上,所有的数据存放在叶子节点,通过双向指针将所有叶子根据顺序方式串联起来,由于时空访问局限特性,这能很大提升数据性能,DBMS根据访问存取路径访问及构造数据,访问路径深度直接影响了性能,一般建议访问路径控制在4以内(小于或等于3),原因由于访问多层路径需要消耗更高的代价及维护索引树代价越来越昂贵。
索引技术
创建数据库:CREATE DATABASE Students
ON PRIMARY 主文件组文件1
(
NAME = Student_data1,
FILENAME ='F:\DATA\MDF',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
( 主文件组文件2
NAME = Student_data1,
FILENAME ='F:\DATA\NDF',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
LOG OPTION 日志文件1
(
NAME = Student_data1,
FILENAME ='F:\DATA\ldf',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
( 日志文件2
NAME = Student_data1,
FILENAME ='F:\DATA\ldf',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
修改数据库:
ALTER DATABASE RShDb
ADD FILE(
)
ALTER DATABASE RShDb
MODIFY FILE(
)
ALTER DATABASE RShDb
ADD LOG FILE(
)
收缩数据库空间:
DBCC SHRINKDATABASE(Students,20)
收缩文件空间:
DBCC SHRINKFILE(Students,4)
删除数据库文件:
ALTER DATABASE student REMOVE FILE Student_data1
分离和附加数据库:
分离:EXEC sp_detach_db 'Students','true'
附加:CREATE DATABSE Students ON(FILENAME='F:\DATA\.MDF') FOR ATTACH
数据库架构: CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABKE T1(
C1 INT
C2 CHAR(10))
DROP SCHEMA TEST CASCADE(连架构对象一起删除)/RESTRICT(如果架构中包含架构对象,不删除)
分区表:
创建分区函数:CREATE PARTITION FUNCTION myRangePF1(int)
AS RANGE LEFT(小于等于和大于)/RIGHT(大于等于和小于) FOR VALUES(1,100,1000)
创建分区方案:CREATE PARTITION FUNCTION myRangePF1(int)
AS RANGE LEFT FOR VALUES(1,100,1000)
GO
CREATE PARTITION SCHEME myRangePS
AS PARTITION myRangePF1
TO(test1fg,test2fg,test3fg,test4fg)
GO
CREATE TABLE ParititonTable(
col1 int,
col2 char(10))
ON myRangePS(col1)
索引:
创建索引:CREATE NONCLUSTERED/CLUSTERED/UNIQUE INDEX IX_TransactionHistory
ON Transaction(TransactionDate)
删除索引:DROP INDEX INDEXNAME;
索引视图:
适合使用索引视图的场景:很少更新基础数据或者基础数据以批处理的形式定期更新,可以提高连接和聚合操作的性能。
创建索引视图:CREATE VIEW Sales.vOrders
With SCHEMABINDING
AS
SELECT ``````
GO
CREATE UNIQUE CLUSTERED INDEX IDX_V1 必须是唯一聚集索引
ON Sales.vOrders(字段名)
GO
后面直接使用视图
5 数据库编程技术
高级查询功能
1.使用TOP限制结果集:Distinct Top n [percent] [with ties]
如果有with ties 的话必须有order by
2.使用case函数:
简单case函数:
CASE 测试表达式
When 简单表达式1 THEN 结果表达式1
When 简单表达式2 THEN 结果表达式2
When 简单表达式3 THEN 结果表达式3
[ELSE 结果表达式 n+1]
END
搜索case函数:
CASE 函数表达式:
CASE
WHEN 布尔表达式1 THEN 结果表达式1
WHEN 布尔表达式2 THEN 结果表达式2
WHEN 布尔表达式3 THEN 结果表达式3
WHEN 布尔表达式4 THEN 结果表达式4
[ELSE 结果表达式 n+1]
END
3.查询结果保存:SELECT 查询列表序列 INTO<新表名>
FROM 数据源
4.并交差:UNION:列的个数必须相同,数据类型时间支持隐式转换,orderby 放在第二个语句后面
INTERSECT:
EXCEPT:
5.相关子查询: WHERE表达式 比较运算符(子查询):
WHERE 表达式 比较运算符 (子查询):
WHERE 【NOT】EXISTS (子查询):先执行外层,再执行内层
替代表达式的子查询:在SELECT语句中的选择列表中嵌入一个只返回标量值的SELECT语句,一般值返回单值
派生表子查询:可临时生成表并出现在from子句中
6.开窗函数:
聚合开窗函数:over 子句和聚合函数一起使用
排名开窗函数:RANK():函数并不一定返回连续整数。
DENSE_RANK():函数返回的是连续的整数。
NTILE():对其进行分组(NTILE(4)),每个分组内返回组号。
ROW_NUMBER():每个分区(PARTITION BY)的序列号
7.公用表表达式:(Common Table Expression,CTE)
WITH AS
存储过程
视图
视图是从一个或几个基本表(或视图)中导出的虚表,数据库中只存放了视图的定义,不存放视图对应的数据。它是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口, 通过它可以看
到感兴趣的数据。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
- 视图的特点体现在三个方面:①简单性,看到的就是需要的。视图不仅可
以简化用户对数据的理解;也可以简化对它们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件;②安全性,通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到;③逻辑数据独立性,视图可帮助用户屏蔽真实表结构变化带来的影响 - 根据视图的特点可以达到以下的几点作用:①简化数据查询语句;②使用户从多角度看待同一数据;③提高数据安全性;④提供了一-定程 度的逻辑独立性。
函数
函数(function)作为数据库的一个对象,是独立的程序单元(以后再研究怎么定义),每个数据库都会在SQL 标准上扩展一些函数。
函数可以放在SQL 语句的各个位置,常用的位置是select和where子句中。
函数名称( database, field. criteria)
database为构成列表或数据库的单元格区域。数据库是包含一组相关数据的列表,其中包含相关信息的行为记录,而包含数据的列为字段,列表的第一行包含着每一列的标志。
field:指定函数所使用的列,使用两端带双引号的列标签,如“名称”,或者是代表列表中列位置的数字(1表示第一列,2表示第二列,依次类推)。
criteria为一组包含给定条件的单元格区域。可以对 criteria使用任何区域,只要此区域包含至少一个列标志,并且列标签下包含至少一个在其中为列指定条件的单元格。
游标
游标
声明游标:DECLARE cursor_name 【INSENSITIVE】【SCROLL】CRUSOR
FOR
例子说明一切:
DECLARE @CN VARCHAR(10), @Email VARCHAR(50)
DECLARE Cname_cursor CURSOR FOR
SELECT CName, Email From Tabke_Customer
WHERE CName LIKE ‘王%’AND Address LIKE ‘’
OPEN Cname_cursor
FETCH NEXT FROM Cname_cursor INTO @cn,@Email
WHILE @@FETCH_STATUS=0
BEGIN
PRINT’顾客姓名:’+@cn+’邮箱’+@Email
FETCH NEXT FROM Cname_cursor INTO @cn,@Email
END
CLOSE Cname_cursor
DEALLOCATE Cname_cursor
游标的一些关键字注释:
ABSOLUTE:从开始第几个
RELATIVE:从当前位置起始第几个
INSENSITIVE:敏感和不敏感。加上就不敏感,提取操作读取的是tempdb中的临时副本中的数据,不加的话读的是原表中的数据。
SCROLL:加上可以使用所有操作,不加只能使用next
6 事务管理
事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。一般来说,一个程序中包含多个事务。
ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有一些特性:原子性(Atomicity): 事务是一个或多个行为捆绑在一起组成一个单独的工作单元,事务中的动作要不都发生,要不都不发生;一致性(Consistent): 即在事务开始之前和结束之后,数据库的完整性约束没有被破坏;数据库层面:在一个事务执行前和执行后,数据会符合你设置的约束(例如unique约束,foreign key约束,check约束等)和触发器设置.由数据库进行保证.业务层面:保持业务的一致性.需要由开发人员进行保证;隔离性(Isolation):指的是在并发环境中,事务之间互相影响的程度(即并发事务间数据的可见程度).当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间.由并发事务所做的修改必须与任何其他并发事务所做的修改隔离.事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据;持续性(Durability): 也叫永久性,指一旦事务完成,事务的结果应该持久化,用来保证即使系统崩溃也不会破坏事务的结果。
保证事务ACID特性是事务管理的重要任务。事务ACID特性可能遭到破坏的因素有:
多个事务并行运行时,不同事务的操作交叉执行。
事务在运行过程中被强行停止。
并发控制技术
并行操作:在单处理机系统中,事务的并行执行实际上是这些并行事务的操作轮流交叉进行。
为保证事务并发执行的正确,必须要有一定的调度手段以保障事务并发执行中一事务执行时不受其他事务的影响。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。
并发控制的主要技术是封锁(locking)、时间戳(Timestamp)和乐观控制法。封锁是实现并发控制的一个非常重要的技术,
所谓封锁就是事务T在对某个数据对象(表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能存取或更新此数据对象。封锁一般由DBMS自动执行。
备份和恢复数据库技术
- 恢复模式:简单恢复模式,完整恢复模式和大容量日志恢复模式(只对大容量操作进行最小记录)。
- 更改数据库恢复模式:
ALTER DATABASE database_name SET RECOVERY {FULL|BULK_LOGGED|SIMPLE} - 备份时间:对于系统数据库,一般采用修改后立即备份操作。
对于用户数据库,采取周期性备份的方法。并且进行了下列操作之后,最好立刻对数据库进行操作:
创建数据库之后,或者在数据库中批量加载数据之后。
创建索引之后。
执行了清理事务日志的操作之后。
执行了大量数据操作之后。 - 创建备份设备的T-SQL存储过程:sp_addumpdevice
- 备份类型: 数据库备份:
文件备份:
事务日志备份: - 三种数据库备份方式:完整备份,差异备份和日志备份。
- 第一次对数据库进行的备份必须是完整备份。
- 简单模式没有日志备份。
- 进行数据库操作时允许用户操作数据库。
7 数据库管理与维护
- 数据库运行维护的基本工作:数据库的转储与恢复、数据库的安全性,完整性控制、检测并改善数据库的性能、数据库的重组(只对存储空间进行全面调整)和重构(部分修改数据库的模式和内模式)
- 运行状态监控与分析:
自动监控机制: 数据库自动监控
手动监控机制:管理员手动实施
对数据库构架的监控:空间基本信息、空间利用率等
对数据库性能的监控:命中率、库缓冲,锁等性能相关 - 数据库存储空间管理:物理存储结构和逻辑存储结构
对空间的管理主要包括:创建数据库空间,更改空间大小,删除空间,修改空间状态,新建、移动、关联数据库文件等。 - 数据库性能优化:
数据库运行环境、数据库参数调整:
外部调整:CPU/网络
调整内存分配:
调整磁盘I/O:令IOS时间最小
调整竞争:控制多个进程对相同资源的竞争
a) 模式调整与优化:
增加派生性冗余列:可以避免使用聚合函数
增加冗余列:避免连接操作
重新组表:多个表连接才能得到的数据,需要重新组表
分割表:水平分割(数据量太过庞大)和垂直分割(一行数据超过一个数据页)
新增汇总表:增加了大量报表的汇总操作。
b) 存储优化:
物化视图:预先保存那些耗时操作的结果,还可以勇于远程数据的本地复制
聚集:经常频繁一起查询的表,可以使用聚集
c) 查询优化:
合理使用索引
避免或简化排序
消除对大型表数据的顺序存取
避免复杂的正则表达式
使用临时表加速查询
用排序来取代非顺序磁盘存取
不充分的连接条件
存储过程
不要随意使用游标
事务处理 - 数据库的实施包含四项工作:用DDL定义数据库结构、数据装载、编写与调试应用程序以及数据库的性能。
- 数据库管理系统常用的性能工具有SQL Server Profiler 和数据库引擎优化顾问。
7.1 数据完整性
7.2 数据库安全性
- 在数据库中,对有意的非法活动可采用加密存、取数据的方法控制;对有意的非法操作可使用用户身份验证、限制操作权限来控制;对无意的损坏可采用提高系统的可靠性和数据备份等方法实现。
- DBA(DataBase Administrator)
- 影响数据库安全的威胁:可用性的损失,机密性数据的损失,私密性数据的损失,偷窃和欺诈,意外的损害。
- 安全控制模型描述:
用户通过数据库应用程序进入数据库系统>用户提供数据库应用程序的身份,然后数据库应用程序将用户的身份递交到数据库管理系统进行验证>对于存储在磁盘上的数据库文件,还可以进行加密存储
用户>数据库应用程序>数据库管理系统>操作系统>数据库
身份验证|-------------操作权限控制------------| 文件操作控制 | 加密存储与冗余 - 授权和认证
授权:授权是将合法访问数据库或数据库对象的权限授予用户的过程。
认证是一种鉴定用户身份的机制。
对于数据库的访问控制问题,主要采用两种方法:
自主存取控制:比较灵活
强制存取控制:分级别,比较严谨 - 权限种类:
语句权限:对数据库对象的操作(创建数据库等)
对象权限:对数据库数据的操作(对表/视图的操作权限) - 用户的分类:系统管理员,数据库对象的拥有者,普通用户
- 统计数据库允许用户查询聚合类型的信息,但不允许查询个人信息。但会暴露出很多安全问题。
- SQL SERVER安全机制:Windows身份验证模式,混合身份验证模式。
- 数据库用户:登录账户可以映射多个数据库的用户,dbo是数据库的拥有者。
注意:不能从数据库中删除拥有对象的用户,必须删除或转移安全对象的拥有者,然后再删除这些拥有对象的数据库用户。 - 登录账户:CREATE LOGIN login_name WITH PASSWORD=’’
ALTER LOGIN login_name enable/WITH PASSWORD=’’ - 权限管理:当登录账户成为数据库中的合法用户后,还需要对账户授予相应的权限。
对象级别的权限:对对象允许操作的权限,例如select、insert、update等
语句级别的权限:创建表,数据库,等隐含权限。 - 角色:角色分为预定义的系统角色和用户定义的角色。
角色又可以分为服务器级的角色和数据库级的角色。 - 固定服务器角色:
Bulkadmin:BULK INSERT语句的权限,批量插入数据。
Dbcreator:创建,删除,修改和还原数据的权限。
Diskadmin:管理磁盘文件
Processadmin:管理运行在SQL SERVER的进程的权限
Securityadmin:管理登录账户、读取错误日志等
Serveradmin:设置服务器和关闭服务器
Setupadmin:添加和删除链接服务器
Sysadmin:系统管理员权限,windows中的Administrators组被自动映射成sysadmin角色中的成员。
创建角色或者删除角色要调用存储过程:
“EXEC sp_addsrvrolemember ‘登录名’,‘角色名’”
“EXEC sp_dropsrvrolemember ‘登录名’,‘角色名’” - 固定数据库角色
db_accessadmin: 添加或删除数据库用户的权限
db_backupoperator: 备份数据库、备份日志的·权限
db_owner: 数据库中进行全部操作的权限
db_securityadmin: 具有管理数据库角色、角色成员以及数据库中的对象和语句的权限
“EXEC sp_addrolemember ‘角色名’,‘成员名’”
“EXEC sp_droprolememeber ‘角色名’,‘成员名’” - 用户定义的角色
便于管理数据库权限。
CREATE ROLE 角色名 AUTHORIZATION ownername
概念
-
数据库中的用户按操作权限的不同,通常分为系统管理员、数据库对象拥有者和普通用户三种。
-
在SQL Server2008中,系统提供的具有管理员权限的角色是sysadmin。
-
SQL Server的身份验证模式有仅windows和混合模式两种。
-
SQL Server的登录账户来源有windows和非windows两种。
-
在SQL Server2008中,系统提供的具有创建数据库权限的服务器角色是dbcreator。
-
SQL Server2008将权限分为对象权限、语句权限和隐含权限三种。
-
在SQL Server2008中,角色分为固定角色和用户自定义角色两大类。
-
在SQL Server2008中,创建用户定义的角色MyRole的语句为create role MyRole。
-
在SQL Server2008中,设置不允许用户U1获得对表T的删除权限的语句是deny delete on T to U1。授予grant。Revoke收回。
-
若要授予用户具有数据表的插入、删除、修改权限,比较合理的做法是将用户添加到系统提供的db_datawriter数据库角色中。
7.3 数据库可靠性(故障)
- 故障类型及其解决办法:
事务内部的故障: 预期的事务内部故障:将事务回滚,撤销修改。
非预期的事务内部故障:强行回滚事务
系统故障:在系统重启之后,撤销(UNDO)所有未提交的事务,重做(REDO)所有已提交的事务。
介质故障:对策~软件容错:通过数据库备份和日志文件
硬件容错:双物理存储设备
计算机病毒故障:防火墙,杀毒软件 - 恢复机制设计的两个问题:如何建立冗余数据以及如何利用冗余数据实施数据库的恢复。
- 建立冗余数据的技术:数据转储(数据备份),登记日志文件,数据库复制,数据库镜像等
- 数据转储:静态转储(转储过程系统不能运行其他事务),动态转储(允许转储操作和用户事务的并发执行)
- 数据转储机制:完全转储(所有数据),增量转储(上次转储发生变化的数据),差量转储(最近一次完全转储后发生变化的数据)。
- 日志文件: 事务故障恢复和系统故障恢复必须使用日志文件。动态转储方式中必须建立日志文件。静态转储中也可以使用日志文件。
- 日志文件的两种格式:
以记录为单位的日志文件:包括每个事务的开始标记(BEGIN TRANSACTION)、每个事务的结束标记(COMMIT)以及每个事务的所有修改操作。
以数据块为单位的日志文件:只包含事务标识和被更新的数据块。 - 登记日志文件需要遵循的两条原则:
登记的次序严格按并行事务执行的时间次序。
必须先写日志文件,后写数据库。 - 为了避免重复搜索整个日志,建立检查点是必须的。
恢复策略:事务在故障发生时未完成,应该撤销(UNDO)
事务在检查点之后提交,它们对数据库的修改可能还在缓冲区,应该重做REDO
事务在检查点之前提交,所以不必执行REDO操作 - 硬件容错方案:
磁盘保护技术(RAID廉价冗余磁盘阵列):包括镜像冗余和校验冗余。
服务器容错技术(为了解决服务器硬件异常问题):Active-Standby模式
数据库镜像: 优点:提供完整的数据冗余,增强数据保护功能
快速使用副本提供服务
提高升级期间的可用性
分类:双机互备援模式(两台都是工作机)和双机热备份(一台工作机,一台备份机)模式。 - SQL Server数据库镜像三种实现方式:高可用性(两台服务器同步写入事务,支持自动回复),高保护(两台服务器同步写入事务,仅支持手动回复)和高性能(可以异步,只允许手动错误恢复)。
概念
- 数据库系统大致存在四类故障,即事物内部故障、系统故障、介质故障以及计算机病毒。
- 恢复机制涉及两个关键问题:第一,如何建立冗余数据;第二,如何利用它实施数据库恢复。
- 数据转储按操作可分为静态转储和动态转储。
- 以记录为单位的日志文件内容包括三部分,即每个事务开始标志,每个事务结束标志以及每个事务的所有更新操作。
- 登记日志文件必须遵守两条原则:登记的次序严格按并行事务执行的时间次序和先写日志文件后写数据库。
- 在数据库镜像中的两种模式中,两台主机均为工作机,并为信息系统提供支持的是双机互备援模式;一台主机为工作机,另一台主机为备份机的是双机热备份模式。
- RAID的冗余技术主要有两个:镜像冗余和校验冗余。
- 为避免活锁现象发生,数据库管理系统采用FIFS策略处理事务的加锁请求。
- 一个完整的事务概要设计包括事务名称、事务所访问的关系名及其属性名、事务的处理以及事务用户。
- 一个事务执行过程中,其访问的数据被其它事务修改,导致处理不正确,这是事务不满足并发事务之间的隔离性引起的。
- 数据库管理系统一般通过周期性检查事务等待图来实现死锁检测。
- 数据库管理系统中的加锁协议中三级加锁协议可以完全保证并发事务数据的一致性。
- 两阶段加锁协议可以保证事务调度的可串行性。
- 由于死锁到时的事务回滚属于数据库故障的事务内部故障。(预期与非预期-[运算溢出、并发事务故障、违反了完整性约束])
- 为避免活锁现象的发生,数据库管理系统采用FIFS策略处理事务的加锁请求。
- 事务要么全做要么不做,表现了事务性质的原子性。
- 数据库事务的四大特性分别是(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
- RAID0速度最快;RAID1利用率50%;RAID5使用三块硬盘,两块存放数据,另一块存储奇偶校验信息,利用率75%;RAID10中合了RAID0和RAID1的特点,速度较快,利用率50%,推荐使用。
7.4 监控分析
7.5 参数调整
7.6 查询优化
7.7 空间管理
8 数据库技术的发展及新技术
8.1 对象数据库
象数据库是一种以对象形式表示信息的数据库。对象数据库的数据库管理系统被称为ODBMS或OODBMS。
两个主要原因让用户使用对象数据库技术。首先,关系数据库在管理复杂数据时显得笨重。其次,被应用软件操作的数据一般是用面向对象的编程语言如C++, Java, Delphi和C#写成,而那些用来转化数据表示和关系数据库元组的代码很冗繁,执行时也有不少耗时。这种应用程序和数据库表示信息的模式之间的不匹配有时也被称为impedance mismatch。
8.2 数据仓库及数据挖掘
- 数据仓库是一个面向主题的、集成的、非易失的、且随时间变化的数据集合,用来支持人员的决策。
- 数据仓库的几个特性:面向主题性,集成性,不可更新性,时间特性。
- 数据仓库中的粒度概念:粒度越小,细节程度越高,能回答的查询也就越多。
- 操作型数据存储(ODS):1、2、3、4前三个以时间为判断依据,第四个以数据来源和类型来区分
- 粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。
- 粒度能够影响数据仓库的数据量以及系统能回答的查询类型。
- 数据仓库的维护:实时维护、延时维护和快照维护。
- OLAP(联机事务处理环境)的实现方式:基于多维数据库的OLAP(MOLAP),基于关系数据库的OLAP(ROLAP),混合型的OLAP(HOLAP)
- 数据挖掘:步骤:数据准备、数据挖掘、数据解释评估。
8.3 XML 数据库
- XML数据库能够对半结构化数据进行有效的存取和管理。
- 提供对标签和路径的操作。
- 便于对层次化的数据进行操作。
8.4 云计算数据库
- 公共云,私有云
- 云计算的优势吧:无线的计算资源,硬件可以逐步增加,不需要一次性购买,可以短期使用资源,比较灵活。
- 谷歌基础云计算架构模式:文件系统Google File System,分布式编程环境Map/Reduce,分布式的锁机制Chubby以及大规模分布式数据库
- 目前主要的云计算平台有Amazon的AWS、Google的GAE以及开放的云计算平台Hadoop。
8.5 空间数据库
- 每个空间实例都有一个空间引用标识符 (SRID)
- SRID 对应于基于特定椭圆体的空间引用系统,可用于平面球体映射或圆球映射
- 从两个空间数据实例派生的任何空间方法的结果仅在这两个实例具有相同的 SRID(该 SRID 基于相同的用于确定实例坐标的度量单位、数据和投影)时才有效。
- SRID 最常见的度量单位为米或平方米。
8.6 分布式数据库
分布式数据库的模式结构一般包括全局外模式、全局概念模式、分片模式、分配模式、局部概念模式和局部内模式六部分,其中全局外模式是全局应用的用户视图。
- 分布式数据库是物理上分散、逻辑上集中的数据库系统。
- 数据分布策略: 数据分片:水平分片,垂直分片,导出分片,混合分片
数据分配:
集中式(都安排在一个场地),
分割式(只有一份,并被分割成若干片段),
全复制式(多个副本),
混合式(上述三种方式的复合) - 分布式数据库的参考模式结构:
全局外模式:用户视图
全局概念模式:描述全体数据的逻辑结构特征
分片模式:片段与片段之间的映像
分配模式:各片段到物理存放场地的映像。
局部概念模式:全局关系在场地上存储的物理片段的逻辑结构
局部内模式: - 分布透明性: 分片透明性:最高级别的透明性
位置透明性:数据分片的分配位置对用户是透明的
局部数据模型透明性: - 分布式数据库系统的结构:全局数据库管理系统GDBMS、全局数据字典GDD、局部数据库管理系统LDBMS和通信管理CM。
- 查询代价主要从:CPU代价、I/O代价和通信代价考虑。
分布式查询优化:主要从操作执行的顺序、操作的执行算法以及不同场地间的数据流动的顺序。
对于连接操作的优化策略有:基于半连接的优化策略和基于连接的优化策略。 - 并行服务器中使用以太网交换机进行通信的体系结构是无共享结构。(共享内存、共享磁盘、无共享、层次结构)
分布式事务管理主要包括:恢复控制和并发控制。
8.7 并行数据库
- 并行数据库系统结构:共享内存结构,共享磁盘结构,无共享结构,层次机构。
- 一维数据划分:轮转法(扫描整个关系),散列划分(点查询),范围划分(扫描整个关系)
- 并行数据库有多种体系结构,主要可分为共享内存结构、共享磁盘结构、无共享结构和分层结构四种。
- 在并行数据库中,一维数据划分方法主要包括轮转法、散列法和范围划分。散列划分策略适合点查询,对于顺序扫描关系也是非常高效的。轮转法策略适合于扫描整个关系的应用,不适合点查询和范围查询,无法准备定位元组在那一个磁盘上,查询效率低。范围划分策略适合范围查询和点查询,可能会引起数据分布不均匀,导致并行处理能力下降。故答案
其它
数据库的三级模式结构和二层映像
模式结构
数据库系统的三级模式:外模式、模式、内模式。
模式(逻辑模式、概念模式):实际上是数据库数据在逻辑级上的视图。描述的是全局逻辑结构。一个数据库只要一个模式。模式是数据库的中心与关键,它独立与其他层次。设计数据库模式结构时应首先确定数据库的逻辑模式。DBMS提供模式描述性语言来严格定义模式。
外模式(子模式、用户模式):数据库用户能够看见和使用的局部数据的逻辑结构和特征,是数据库用户的数据视图。描述的是局部逻辑结构。是模式的一个子集。一个数据库可以有多个数据库内模式。每个用户只能看见和访问对应的外模式中的数据,数据库中的其余数据是不可见的。是保证数据库安全性的有力措施。同一外模式也可以为用户的多个应用程序使用,但一个应用程序只能使用一个外模式。它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应外模式不能满足其视图要求,该外模式就应该做出相应的改变。设计外模式的时候应充分考虑到应用的扩展性。DBMS提供子模式描述性语言来严格定义子模式。
内模式(存储模式):一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据库内部的表示方法。比如记录什么存储方法存储,索引按照什么方式组织。数据是否压缩存储,是否加密。数据库存储记录结构有何规定。它依赖于全局逻辑结构,但独立于数据库的用户视图和存储设备。它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以实现达到较好的时间与空间效率的目的。DBMS提供内模式描述性语言来严格定义内模式。
映像:
外模式/模式映像:
数据库系统都有一个外模式/模式映像。它定义了该外模式与模式之间的对应关系。这些映像通常包含在各自外模式的描述中。当模式改变时(增加新的关系、新的属性、改变属性的数据类型),需要数据库管理员对各个外模式/模式的映像做相应改变,也可以是外模式保持不变。应用程式是依据数据的外模式编写的。因此应用程序也不必修改,这保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像:
模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。比如说明逻辑记录和字段在内部是如何表示。该映像定义通常包含在模式描述中。当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做相应改变。可以使模式保持不变,因此应用程序也不必改变,这就保证了数据与程序的物理独立性,简称数据的物理独立性。
服务器
应用服务器是指通过各种协议把商业逻辑提供给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用,并接收来自于Web浏览器的用户请求,根据应用领域业务规则执行相应的数据库应用程序,通过访问接口向数据库服务器提出数据操作请求;它亦接收来自于数据库服务器的数据访问结果,并通过客户端将结果返回用户。当数据库服务器出现问题时无去向用户提供服务。
UMl
UML语义是定义在四层建模概念框架中的,这四层分别是:元元模型,元模型,模型,用户模型。
UML中对包定义了私有、保护、公有和实现四种可见性。
圆角矩形表示活动,箭头线表示活动之间的联系,标注为执行下一个活动的条件
- DBAS业务流程活动图:可以并行操作。分为起始点,结束点,分区,活动
- DBAS系统需求用例图:分为用例,角色和系统。用带空心的三角箭头表示通用化关系。(超类)
- DBAS系统结构类图、顺序图和通信图:
结构类图包括属性,操作和关系(关系又包含关联关系,继承关系,依赖关系和精化关系)。关联联系中一种特殊的关联是聚集,分为共享聚集(空心菱形)和组成(实心菱形)
顺序图:时间轴和对象轴。描述对象之间如何协作达到系统的目标。
通信图(协作图):显示对象之间的关系,并不侧重交互顺序,用数字表示消息或者线程的顺序。 - DBAS系统微观设计对象图,状态机图和时间图
对象图:特定时间点上所有对象的一个快照。强调瞬时性。
状态机图:陈述系统或对象的状态转移。
时间图:通过时间的推移让时间因子呈现一个可视化的效果。 - DBAS系统宏观设计包图、交互概述图和复合结构图
包图:不同系统或者项目间的彼此的关系。(定义了可见性,包括私有,保护,公有和实现)
交互概述图:活动图+交互框
复合结构图:评估系统复杂度的工具。部件与部件之间是装配的关系,通过端口才能连接。端口上有需求接口和供给接口。 - DBAS系统实现组件图和部署图
组件图:带箭头的虚线。展现了组件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库等的系统建模。组件是逻辑设计中定义的概念和功能在物理架构中的实现。
部署图:硬件和软件的物理配置情况和系统体系结构。
概念
- 组件图表示系统的静态实现视图,展现了一组组件之间的组织和依赖,用于源代码、可执行的发布、物理数据库等的系统建模。组件是逻辑设计中定义的概念和功能(类、对象、它们的关系、协作)在物理架构中的实现。典型情况下,组件是开发环境中的实现文件。
- 在UML中,圆角矩形表示活动,箭头线表示活动间的转换,其上的标注为执行下个活动的条件。
- 展现应用程序之间的组织和依赖关系,对源代码、可执行程序进行系统建模的UML图是组件图。
- 在UML中,用例模型由用例、系统和角色三部分组成。
- 在UML中,要描述状态之间的转换,可通过时间图来体现时间因子的作用。
- 在UML中,聚集是一种特殊的关联,它表示类之间的关系是整体与部分的关系。泛化表示类之间的关系是一般与特殊的关系。
- 在UML中,活动图主要作用是陈述活动与活动之间流程控制的转移,其作用类似于流程图,但支持并行行为。
11.用例之间的关系包括扩展、使用和组合三种。
数据库和数据对象
-
SQL Server中将数据库分为两大类:系统数据库和用户数据库。
系统数据库: master:最重要的系统数据。
Msdb:记录操作。
Model:数据库模板。
Tempdb:临时数据库。
Resource:看不到,包含所有系统对象。 -
文件被分为数据文件和日志文件。
数据文件包含数据和对象:主要数据文件和次要数据文件。 -
数据库的空间分配:创建用户数据库时,model数据库被自动复制到新建用户数据库中。
数据的存储分配单位是数据页,一页是8kb。
SQL server中不允许表中的一行数据存储在不同的页,即行不能跨页存储。 -
数据库文件组:主文件组和用户定义的文件组。
-
数据库文件的属性:文件名及其位置,初始大小,增长方式,最大大小。(TSQL)
-
T-SQL语言总结:
-
SQL SERVER将数据库分为两大类:系统数据库和用户数据库。
-
系统会自动安装五个系统数据库:,master(所有系统级信息),msdb(调度报警和作业以及记录操作员时使用),model(所有数据库模板),tempdb(临时对象和中间结果集)和Resourse(只读数据库,包含了所有系统的对象)。
-
操作系统文件包括数据文件(数据和对象)和日志文件(恢复数据库中所有事务需要的信息)。
-
数据文件包括主要数据文件(mdf)和次要数据文件(ndf)。日志文件(ldf)。
-
数据库文件组:主文件组和用户定义的文件组。
-
数据库文件的属性:文件名及其位置,初始大小,增长方式,最大大小
-
SQL Server数据库中数据的存储分配单位是数据页。
-
SQL Server中一个数据页的大小是8kb。
-
SQL Server数据库中主要数据文件的扩展名是mdf,次数据文件扩展名是ndf,日志文件的扩展名是ldf。
-
SQL Server一个数据库中可以包含0个或多个次要数据文件,只能有一个主数据文件,一个或多个日志文件。
-
如果某个数据库中可以包含20 000行数据,每行大小是5000b,则此数据表需要的存储空间大小约是160MB。(200008=160MB,5000/8000100%=62.5%)
-
用户创建数据库时,其主要数据文件的初识大小必须不小于model系统数据库大小。
-
数据库中视图提供了逻辑数据独立性。
附
思维导图
https://blog.csdn.net/weixin_44037272/article/details/115053659?spm=1001.2014.3001.5501
计算机三级考试大纲(2018)
http://ncre.neea.edu.cn/res/Home/1812/d272b1ef89b3832235ad6bb3be802a91.pdf
数据定义语言(DDL)-create,alter,drop;
数据操纵语言(DML)-select,insert,update,delete;
数据控制语言(DCL)-grant,remove;
事务管理语言-begin,commit,rollback。
2.关系模型:层次,网状,关系 数据库:系统数据库(master、model、msdb、tempdb)、用户数据库。
3.外模式(概念)->模式(逻辑)->内模式(物理)。
4.一般关系运算-并、差、交、笛卡尔积 特殊关系运算-选择、投影、连接、除。
5.数据库设计步骤:需求分析->概念设计->逻辑设计->物理设计->数据库实施->运行和维护。
6.数据库文件:数据文件(.mdf主数据文件、.ndf次数据文件)、事务日志文件(.ldf)。
7.创建/修改/删除数据库:create database database_name on/log on(name=,filename=,size=,maxsize=,filegrowth=,)
alter database database_name ____ drop database database_name。
8.局部变量@,全局变量@@,系统存储过程sp_,注释--、/**/。
9.数据类型:bigint,int,smallint,tinyint,decimal,numeric,float,real,money,smallmoney,bit,char,varchar,nchar,nvarchar
text,ntext,datetime,smalldatetime,binary,image,varbinary等。
10.创建/修改/删除数据表:create table table_name(字段 类型 [null/not null/check()/unique()/default()/primary key()/
foreign key() references 外键表]);
alter table table_name alter/add/drop column 字段; drop table table_name。
11.完整性:实体、参照、域、用户
alter table table_name add constraint 关系名 primary key()/unique()/check()/default()for 字段/foreign key() references 表(字段);
create default/rule 关系名 as 内容; sp_bindefault/binrule 关系名,字段; sp_unbindefault/rule 关系名;
drop default/rule 关系名;
12.数据处理:insert into 表(字段)values(值);update 表 set 表达式 where 条件;delete from 表 where 条件。
13.查询:select from where having group by order by into as join on in
14.函数:create/alter function 函数名(@参数名 类型)retures 返回值类型 as statement-return 值;drop function 函数名。
15.索引:create [unique/clustered/noclustered]index 索引名 on 表.字段;drop index 索引名。
16.视图:create view 视图名 as select_statement drop view 视图名
17.存储过程:Create/alter procdure 过程名 @参数名 类型[output] statement return/select;drop proc 过程名。
with recompile存储缓存 with encryption加密
18.触发器:DML-1°after/for instead of clr 2°insert delete update
create/alter trigger 触发器名 on 表等 1°2°as statement;drop trigger 触发器名。
DDL-3°all server/database/drop/alter/create_table
create/alter trigger 触发器名 on 表等 1°3°as statement;drop trigger 触发器名。
disable/enable trigger 触发器名 on 表。
19.备份:backup 恢复:restore
20.游标:cursor declare 名称 for statement; open 名称; fetch [next|prior|first|last]from 表; close 名称; deallocate 名称。
21.事务:原子性、一致性、隔离性、持久性 显示事务(begin、whie Mark、commit、rollback)、隐式事务(set)、自动事务、分布式事务。
22.并发问题:丢失更新、脏读、非重复读、幻想读。 死锁与死锁防止。
23.filegrowth,filegroup,create,alter,drop,delete,update,insert,remove,modify,identity,foreign,primary,references,unique,check,default,rule,function,procdure,trigger,view,index,declare,backup,restore,cursor,open,fetch,close,deallocate,begin,end,commit,rollback,set,select,all,and,any,between,exists,in,like,not,or,and,some,if-else,case-when-then-else.waltfor,goto,return,print,raiserror,go,while,continue,break,count,sum,year,add,datetime,round,substring,min,max,avg等,distinct。
24.架构:create schema name authorization 用户 drop schema name
25.分离数据库exec sp_detach_db _,_ 附加数据库创建数据库后使用for attach。
26.分区:创建分区函数-create partition function name(参数)as range [left|right] for values(范围)
创建分区方案:create partition schema name as partition 分区函数名 to(文件组列表)。
27.创建账户:create login name with password=密码,default_database=文件组,check_expiration=on,check_policy=on
修改alter login name with password=密码 old_password=原密码
启用alter login name enable 禁用alter login name disable
删除drop login name
28.创建角色:create user name for login 账户名
修改角色:alter user name with _ 删除 drop user name
29.分配账户权限:exec sp_addsrvrolemember 账户,服务器账户
删除:exec sp_dropsrvsolemember 账户,服务器账户
Create role name
分配用户权限:exec sp_addrolemember 服务器角色,角色
删除 exec sp_droprolemember服务器角色,角色
30.分配权限:grant insert on 表 to rolename with grant option
拒绝权限:deny ..on..to.. 收回权限:revoke..on..to..
在多维数据分析中,从高粒度级数据视图切换到低粒度级数据视图的分析操
作称为钻取操作。钻取(drill down)是指对应于某-维逐步向更细节层方向观察数据。
在关联规则挖掘中,为了发现有意义的关联规则,需要给定最小支
持度和最小可信度两个阈值。
在动态转储中,利用转储文件只能将数据库恢复到转储过程中的某
个状态,且转储文件中的数据可能处于不一致状态,只有和日志文件综合起
来使用,才能将数据库恢复一 致状态,或将数据库恢复到故障发生前的状
态,从而有效地恢复数据库。
分布式数据库系统的恢复控制采用最典型策略是基于两阶段的提交
协议,该协议将场地的事务管理分为协调者和参与者。
建立索引会增加数据库存储空间,但会提高数据的查询效率,是典
型的以空间换时间的调优方法。
由于硬件故障、数据库软件及操作系统的漏洞、突然停电等,正在
运行的事务以非正常方式终止,需要系统重新启动的一类故障被称为系统故
障,这类故障影响正在运行的所有事务。消除事务对数据库的影响,保证数
据库中数据的一致性。办法是在计算机系统重新启动后,对于未完成的事务
可能已经写入数据库的内容,回滚所有未完成的事务写的结果,保证数据库
中数据的一致性。根据题意在故障发生时,已经提交的事务对数据库的更新
结果未能正确写入磁盘,破坏了事务的一致性。
分布透明性有如下几种级别:
①分片透明性是最高级别的透明性,位于全局概念模式与分片模式之间。分片透明性只是数据分片是用户无需考虑的,完全透明的,在编写程序时只需要对全部关系进行操作。
②位置透明性是指数据分片的分配位置对用户是透明的,用户编写程序时只需要考虑数据分片情况,不需要了解各分片在各个场地的分配情况
③局部数据模型透明性处于分配模式与局部概念模式之间。用户编程时,需要了解全局数据分片情况,还要了解各片断的副本复制情况及个片断和它们副本的场地位置分配情况。
采用分割表可以提高数据的查询性能,但并不能节省存储空间。表分割有两种方式:水平分割和垂直分割。水平分割式根据数据行的使用特点进行分割,分割之后所得的所有表的结构都相同,而存储的数据不同。水平分割会给应用增加复杂度,特别是在查询时需要Union(并)操作。垂直分割式根据数据列的特点进行分割,分割之后所得的所有表除了都含有主码列外其余列都不相同。
本文来自博客园,作者:Patrick-Rex,转载请注明原文链接:https://www.cnblogs.com/patrickrex/p/18028841
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升