数据库管理系统

随着应用系统的规模越来越大,现在的系统开发大部分都是基于数据库的应用,因此,作为一名优秀的系统分析师,要熟练地掌握数据库管理系统的设计方法和技术。

数据库模式

三级模式两级映射

三级模式指的是外模式、模式和内模式;两级映射指的是外模式-概念模式映射 和 概念模式-内模式映射

  • 模式:数据库中全体数据的逻辑结构和特征描述,是所有用户的公共数据视图(可理解为MySQL表概念)

  • 外模式:数据库用户能够看到和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示(可理解为MySQL视图概念)

  • 内模式:也称存储模式,它是数据物理结构和存储方式的描述,是数据库在数据库内部的表示方式(可理解为MySQL的物理文件)

关系表类型

  • 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。

  • 查询表:查询结果对应的表。

  • 视图表:由基表或者其他视图导出的表,本身不独立存储,数据库值存放它的定义,常称为虚表。

视图

数据库视图是一个虚拟表(逻辑上的表),其内容由查询定义(仅保存sql查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是视图并没有真正存储这些数据,而是通过查询原始表动态生成的一张虚拟数据表。视图优点如下:

  1. 视图能简化用户操作

  2. 视图使用户能以多种角度看待同一数据

  3. 视图对重构数据库提供了一定程度的逻辑独立性

  4. 视图可以对机密数据提供安全保护

物化视图

它并不是传统意义上的虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
适合查询多,更新少的场合,比如电子商务等。

分布式数据库DDBS

分布式特点

数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。

集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。

适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。

全局一致性、可串行性和可恢复性。

分布式数据库管理系统

数据库管理系统_第1张图片

DDBMS组成

  1. 局部数据库管理系统(LDMS):建立和管理局部数据库,提供了场地自治能力,执行局部应用及全局的子查询功能。服务对象为局部用户

  2. 全局数据库管理系统(GDBMS):提供分布透明性,协调全局事物的执行,协调各局部DBMS以完成全局应用,保证数据库全局的一致性,执行并发控制,实现数据库更新同步,提供全局恢复功能等。服务对象为全局用户。

  3. 全局数据字典:存放全局概念模式、分片模式、分布模式的定义及各模式之间映像的定义;存放有关用户存取权限的定义;存放数据完整性约束条件的定义

  4. 通信管理(CM):在分布数据库各场地之间传送消息和数据,完成通信功能。

DDBMS的结构

全局控制集中的DDBMS。

全局控制分散的DDBMS。

全局控制部分分散的DDBMS。

分布透明性

分片透明性

分片透明性是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的。

  • 水平分片:即将表中行数据进行分组分片,减少每个数据库中的数据量(例如日志表,水平分片,将每年数据分片存储到不同的数据库中)。

  • 垂直分片:即将表中列数据进行分组分片,减少每个数据库中的字段数(例如用户表中登陆相关字段与用户基本信息字段分片存储到不同数据库中)。

  • 混合分片:混合水平分片和垂直分片,对数据进行横向纵向切割。

复制透明

复制透明是指用户不必关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。

位置透明性

位置透明是指用户不必知道所操作的数据存放在何处,即数据分配到哪个站点或者服务器对用户是透明的。

局部数据模型透明性

最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持那种数据模型、使用哪种数据操作语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构和同构异质的分布式数据库系统是非常重要的。

两阶段提交协议2PC

2PC事物提交的两个阶段

表决阶段,目的是形成一个共同的决定。

执行阶段,目的是实现这个协调者的决定。

两条全局提交规则

只要有一个参与者撤销事物,协调者就必须做出全局撤销决定。

只有所有参与者都统一提交事物,协调者才能做出全局提交决定。

数据库设计过程

  1. 需求分析:对需求和未来应用要求进行分析,输出数据流图、数据字典、需求说明书

  2. 概念结构设计:进行数据建模设计,输出ER模型

  3. 逻辑结构设计:对数据建模进行数据关联和规范化设计,输出关系模式

  4. 物理设计:根据数据库的硬件、OS特性(DBMS特性)进行数据结构设计(聚簇索引,文件存储等)

概念结构设计

ER模型

属性使用椭圆形表示;实体使用长方形表示;关系使用棱形表示

数据库管理系统_第2张图片

集成的方法

  • 多个局部E-R图一次集成

  • 逐步集成,用累加的方式一次集成两个局部E-R

集成产生的冲突

  • 属性冲突:包括属性域冲突和属性取值冲突。

  • 命名冲突:包括同名异义和异名同义

  • 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序完全不相同。

逻辑结构设计

数据库模型

数据模型三要素:数据结构、数据操作、完整性约束。

类型:层次化模型、网状模型、面向对象模型、关系模型。

完整性约束

数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。

  1. 实体完整性约束:规定基本关系的主属性不能取空值。在关系数据库中,一条记录代表一个实体。而实体是可以相互区分、识别的,也即它们应具有某种唯一性标识(该标识不能取相同的值,也不能为空)。

  2. 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。在关系数据库中,确保基于主键和外键的关系,要求不能引用不存在的关系,如果键值改变,对该键值的引用一定要进行一致性更改。

  3. 用户自定义完整性约束:应用环境约束。即在需求开发过程中特定业务制定的规则,例如用户年龄的范围,名称字段的长度,最长活动周期,短信发送时间范围等。

ER图转设计模式设计原则

  1. 一个实体必须转换为一个关系模式

  2. 联系类型转关系模式

  • 一对一联系

– 独立的关系模式:并入两端主键及联系自身属性。(主键:任意一端主键)

– 归并(任意一端):并入另一端主键及联系自身主键。(主键:保持不变)

  • 一对多联系

– 独立的关系模式:并入两端主键及联系自身属性(主键:多端不变)

– 归并(多端):并入另一端主键及联系自身属性(主键:保持不变)

  • 多对多

– 独立的关系模式:并入两端主键以及联系自身属性。(两端主键的组合键)

关系代数

关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接和除法运算。

数据库管理系统_第3张图片

数据库管理系统_第4张图片

数据库管理系统_第5张图片

  • 自然连接总是优于笛卡尔积
  • 先选择再连接可以降低数据量

规范化理论

数据库规范化过程实际是对数据表的不但拆分,以达到更高的规范程度,这样处理带来的问题是:系统中大量的查询不能通过单表完成,而需要将多表进行连接查询,所以表拆分的越多,查询性能也就越差。

规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。

反规范化存在的问题

  • 数据冗余:大量重复的字段数据,浪费存储空间

  • 修改异常:由于大量数据冗余,造成修改影响范围扩大

  • 插入异常:由于表设计不合理,造成大量冗余字段值为空

  • 删除异常:由于大量数据冗余,造成删除数据范围过大

  • 增、删、改、查操作效率降低,可能导致数据不一致

基本概念

关系模式键

  • 候选键:唯一表示的元组,且无冗余(举例:学号和身份证号),候选键可以是由两个字段组合起来(组合键)。举例说明:数据表成绩表R,包含字段:学号、课程号、学分。在成绩表R中,学号和课程号组成候选键,唯一键为(学号&课程号)

  • 主键:任意一个候选键(举例:学号和身份证号中其中一个)。

  • 外键:其他关系的主键。

  • 全码(ALL-Key):关系中仅有一个候选码,且候选码由关系中的所有属性组成,则该候选码为全码。

函数依赖

部分函数依赖 :学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,可以通过学号和身份证号确认姓名;可以通过学号确认姓名;也可以通过身份证确认姓名;所以姓名部分函数依赖于(学号,身份证号),

多个候选键时才存在部分函数依赖

数据库管理系统_第6张图片

传递函数依赖:在关系R(学号 ,宿舍, 费用)中,可以通过学号确认宿舍,但是不能通过宿舍确认学号;可以通过宿舍确认住宿费,但是不能通过住宿费确认宿舍,所以符合传递函数的要求

数据库管理系统_第7张图片

完全函数依赖:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,必须通过学号和班级才能确定姓名,仅仅通过学号或者班级无法确定姓名,所以姓名完全函数依赖于(学号,班级)

数据库管理系统_第8张图片

主属性与非主属性

组成候选码的属性就是主属性,其他的就是非主属性。

候选键的判定

  1. 将关系模式的函数依赖关系用有向图的方式表示。

  2. 找入度为0的属性,并以该属性集合为起点,尝试便利有向图,若能正常便利图中所有节点,则该属性集即为关系模式的候选键。

  3. 若入度为0的属性不能遍历途中所有结点,则需要尝试性的将一些中间节点(既有入度,也有出度的节点)并入入度为0的属性集合中,直至该集合能便利所有节点,集合为候选键。

快速排除: 一定不包含出度为0的属性

Armstrong公理系统

范式判断

  • 第一范式(1NF)

在关系模式R中,当且仅当所有域只包含原子值,即每个属性都说不可再分的数据项,则称之为关系模式R是第一范式。强调的是列的原子性,即列不能够再分成其他几列。

  • 第二范式(2NF)

当前仅当关系模式R是第一范式,且每个非主属性完全依赖候选键(没有不完全依赖)时,则称之为关系模式R是第二范式。消除非主属性对候选键的部分依赖(在复合主键的情况下,非主键部分不应该依赖部分主键)。

即表必须有一个主键,并且没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。如果存在部分属性仅依赖于关键字的一部分属性,则需要通过拆表分离形成一个新的实体,新的实体和原实体之间是一对多的关系。

  • 第三范式(3NF)

当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。

即在2NF基础上消除非主属性对候选键的传递依赖(非主键之间不应该有依赖关系)。

  • BC范式(BCNF)

在关系模式中每一个决定因素都包含候选键,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键。BCNF范式排除了任何属性(不光是非主属性,2NF和3NF所限制的都是非主属性)对候选键的传递依赖与部分依赖。

范式总结

数据库管理系统_第9张图片

数据库管理系统_第10张图片

无损分解

保持函数依赖分解

设数据库模式p={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集Fi。是如{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分p解保持FD。

无损分解

什么是有损,什么又是无损?

有损: 不能还原。无损:可以还原。

无损联接分解

指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。

数据库控制技术

并发控制

事务的ACID特性

  1. 原子性:是指事物包含的所有操作要么全部成功,要么全部失败。这些操作作为一个整体进行,不能部分完成。

  2. 一致性:指事物必须使数据库从一个一致状态变换到另一个一致性状态,就是说一个事务执行前和执行后都必须处于一致性状态。

  3. 隔离性:指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的(其他事务不可见)

  4. 持续性:指一个事务一旦被提交了,那么多数据库中的数据的影响的改变就是永久性的,无论发生何种故障,都不应对其有任何影响。

并发产生的问题

数据库管理系统_第11张图片

封锁协议

S封锁:也称为读锁,是一种共享锁,允许其他进程对数据加读锁。

X封锁:也成为写锁,是一种排他锁,禁止其他进程对数据加任何锁。

一级封锁协议:事务T在修改数据R之前必须先对其添加X锁。

二级封锁协议:一级封锁协议上加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读脏数据。

三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到整个事务结束才释放。可防止丢失修改、防止读脏数据与防止数据(不可)重复读。

两段锁协议:可串行化,可能发生死锁。

2PC两阶段提交协议

  • 表决阶段: 形成一个共同的决定
  • 执行阶段:实现这个协调者的决定

数据库的安全性

数据库管理系统_第12张图片

数据库备份与恢复技术

冷备份

也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。

优点:非常快速的备份方法;容易归档;容易恢复到某个时间点上;能与归档方法相结合,做数据库“最佳状态”的恢复,低度维护,高度安全。

缺点:单独使用时,只能提供到某一时间点上的恢复;在实施备份的全过程中,数据库必须要做备份而不能处理其他工作;若磁盘空间有限,只能复制到磁带等其他外部存储设备上,速度会很慢;不能按表或者按用户恢复。

热备份

也成为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。

优点:可在表空间或数据库文件级备份,备份的时间短;备份时数据库仍可使用;可达到秒级恢复(恢复到某一时间点上);可对几乎所有数据库实体做恢复;恢复是快速的。

缺点:不能出错,否则后果严重;若备份不成功,所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许“以失败告终”。

备份类型

完全备份:备份所有数据。

差量备份:仅备份上一次完全备份之后变化的数据。

增量备份:备份上一次备份之后变化的数据。

故障恢复

数据库管理系统_第13张图片

撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销

重做事务(REDO):故障发生前已提交的事务,放入Redo重做。

数据库性能优化

集中式数据库优化

数据库管理系统_第14张图片

分布式数据库优化

全局查询树的变换,多副本策略,查询树的分解,半连接与直接连接。

云数据库

概念

云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。根据数据库类型一般分为关系型数据库和非关系型数据库(NoSQL数据库)。

特点

云数据库的特性有:实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审计、访问白名单、监控与消息通知等。
实例创建快速

选择好需要的套餐后,RDS控制台会根据选择的套餐优化配置参数,短短几分钟一个可以使用的数据库实例就创建好了。

支持只读实例

RDS只读实例面向对数据库有大量读请求而非大量写请求的读写场景,通过为标准实例创建多个RDS只读实例,赋予标准实例弹性的读能力扩展,从而增加用户的吞吐量。

故障自动切换

主库发生不可预知的故障(如:硬件故障)时,RDS将自动切换该实例下的主库实例,恢复时间一般<5min。

数据备份

RDS默认自动开启备份,实现数据库实例的定时备份。自动备份保留期为七天。

在自动定时备份的基础上,RDS也支持用户手动的数据库实例备份(即数据快照),可以随时从数据快照恢复数据库实例。

Binlog备份

RDS会自动备份Binlog日志,并长期保存Binlog日志的备份。

RDS备份的Binlog日志也提供用户下载,方便用户对Binlog进行二次分析处理。

访问白名单

RDS支持通过设置IP白名单的方式来控制RDS实例的访问权限。

监控与消息通知

通过RDS控制台可以详细了解数据库运行状态。并且可以通过控制台定制需要的监控策略,当监控项达到监控策略阀值时,RDS将通过短信方式进行提醒和通知。

云数据库是专业、高性能、高可靠的云数据库服务。云数据库不仅提供WEB界面进行配置、操作数据库实例,还提供可靠的数据备份和恢复、完备的安全管理、完善的监控、轻松扩展等功能支持。相对于用户自建数据库,云数据库具有更经济、更专业、更高效、更可靠、简单易用等特点,使您能更专注于核心业务。

优势

轻松部署

用户能够在RDS控制台轻松的完成数据库申请和创建,RDS实例在几分钟内就可以准备就绪并投入使用。用户通过RDS提供的功能完善的控制台,对所有实例进行统一管理。

高可靠

云数据库具有故障自动单点切换、数据库自动备份等功能,保证实例高可用和数据安全。免费提供7天数据备份,可恢复或回滚至7天内任意备份点。

低成本

RDS支付的费用远低于自建数据库所需的成本,用户可以根据自己的需求选择不同套餐,使用很低的价格得到一整套专业的数据库支持服务。

– THE END –

你可能感兴趣的:(系统分析师,数据库,mysql,sql)