目录
数据库
-
数据:是数据库中存储的基本对象,时描述事物的符号记录,数据的种类:文本、图形、图像、音频、视频、学生的档案记录等
-
数据库DB:是长期存储在计算机内、有组织的、可共享的大量数据的集合。
-
数据库的基本特征: 数据按一定的数据模型组织、描述和存储;可为各种用户共享; 冗余度较小;数据独立性较高; 易扩展。
-
数据库系统DBS:是一个采用了数据库技术,有组织的、动态的存储大量相关数据,方便多用户访问的计算机系统。由下面四个部分组成 数据库、硬件、软件、人员
-
数据库管理系统DBMS:实现对共享数据有效的组织、管理和存取、包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。
内模式主要为文件,概念模式表格,外模式-用户视图
关系的3种类型
-
基本关系:实际存在的表,实际存储数据的逻辑表示
-
查询表:查询结果对应的表
-
视图表:由基表或其他视图表导出的表,本身不独立储存,数据库只存放它的定义,常称为虚表
数据库视图:一个虚拟的表,内容由SQL查询结果而定,视图包含一系列带有名称的列和行数据。但是视图并没有真正的存储这些数据,而是通过查询原始表动态生成所需要的数据
视图的优点:
-
视图能简化用户操作
-
视图使用户能以多种角度看待同一数据
-
视图对重构数据库提供了一定程度的逻辑独立性
-
视图可以对机密数据库提供安全保护
物化视图:并不是传统意义上的虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
视图-外模式;基本表-模式;存储文件-内模式;
数据的物理独立性——模式与内模式之间的映像;
逻辑独立性——模式与外模式之间的映像;
分布式数据库
-
数据独立性,除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)
-
集中与自治共享结合的控制结构,各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有
-
适当的增加数据冗余度。在不同的场地存储同一数据的多个副本可以提高系统的可靠性和可用性,同时也能提高系统性能。(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性)。
-
全局的一致性、可串行性和可回复性。
分布式数据库管理系统组成
-
LDBMS局部数据库管理系统
-
GDBMS全局数据库管理系统
-
全局数据字典
-
通信管理(CM)
分片透明性
-
分片透明性:用户不必关心数据是如何分片的,他们对数据操作在全局关系上进行,即如何分片对用户是透明的。
-
位置透明性:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成
-
局部数据模型透明性(逻辑透明):最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语音的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
两阶段提交协议 2PC
-
表决阶段,目的是形成一个共同的决定
-
执行阶段,目的是实现这个协调者的决定
两条全局提交规则
-
只要有一个参与者撤销事务,协调者就必须做出全局撤销
-
只有所有参与者都同意提交事务,协调者才能做出全局提交决定
需求分析:数据流图、数据字典、需求说明书
逻辑设计:关系规范化,转换规则
聚簇索引属于物理设计产物
各个模型
-
关系模型是二维表的形式表示的实体-联系模型,是将实体-联系模型转换而来的,经过开发人员设计的;
-
概念模型是从用户角度进行建模的,是现实世界到信息世界的第一抽象是真正的实体-联系模型;
-
网状模型表示实体类型及其实体之间的联系,一个事务和另外几个都有联系形成一张网。
-
面向对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点
-
数据模型三要素:数据结构(所研究的对象类型的集合)、数据操作(对数据库中各种对象的示例允许执行的操作的集合)、数据的约束条件(一组完整性规则的集合)。
E-R图用来描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
在E-R模型中,使用椭圆表示属性(一般没有)、长方形表示实体、菱形表示联系,联系的两端填写联系类型。
实体:客观存在并可相互区别的事务,可以是具体的人、事、物或抽象概念如人、汽车、图书、账户
弱实体和强实体:弱实体依赖于强实体的存在而存在。
实体机:具有相同类型和共享相同属性的实体的集合,如学生、课程。
属性:实体所具有的特性;
属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性;
域:属性的取值范围称为该属性的域
码(key):唯一标识实体的属性集
联系:现实世界中事务内部以及事务之间的联系,在E-R图中反映为实体内部的联系和实体之间的联系。
联系类型:1对1、一对多1:N、多对多M:N
集成的方法:多个局部E-R图一次集成;逐步集成,用累加的方式一次集成两个局部E-R;
集成产生的冲突及解决方法:
-
属性冲突:包括属性域冲突和属性取值冲突
-
命名冲突:包括同名异义和异名同义
-
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R中所包含的属性个数和属性排列次序不完全相同。
关系模式
-
目或者度:关系模式中属性的个数
-
候选码(候选键):key能够唯一标示元组,且无冗余的集合
-
主码(主键):任选一个候选码作为主键
-
主属性与非主属性:属于候选键的属性都是主属性,其他的是非主属性
-
外码(外键):其他关系的候选键
-
全码(ALL-Key):关系模式所有属性都是候选码
完整性约束
-
实体完整性约束:规定基本关系的主属性不能取空值
-
参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
-
用户自定义完整性约束:应用环境决定
逻辑结构细分
由概念结构设计出的E-R图转换为关系模式:
-
实体向类系模式的转换
-
联系向关系模式的转换
关系模式的规范化;
确定完整性约束(保证数据正确)
用户视图的确定(提高数据的安全性和独立性)
-
根据数据流图确定处理过程使用的视图
-
根据用户类别确定不同用户使用的视图
实体必须转为关系模式 一个实体可以一个关系,然后联系算一个。
多对多的联系转换时必须独立关系
关系代数
-
并
-
交
-
差
-
笛卡尔积
s1*s2 3乘3的笛卡尔3乘3变成9乘9
-
投影
-
选择
-
连接
自然连接,相同的会并成一条,如果在s2中没找到s1对应的就会删掉这条
执行效率最高R⋈S>RxS
函数依赖
-
将关系模式的函数一来关系用“有向图”的方式表示
-
找入度为0的属性,并以该属性为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
-
若入度为0的属性集不能遍历图中所有节点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。
-
部分函数依赖:A可以确定C,A,B也可以确定C,AB中一部分可以确定C,称为部分函数依赖。
-
传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖,若A和B等价,则不存在传递,直接就可确定C。
范式判断
学号 | 姓名 | 性别 | 系名 |
---|---|---|---|
001 | 张三 | 男 | 机械系 |
002 | 王二 | 男 | 机械系 |
003 | 赵四 | 男 | 自动化系 |
-
数据冗余
-
更新异常(修改操作存在一致性问题)
-
插入异常
-
删除异常
第一范式
在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
比如:职称里面有:教授、副教授;就可以拆开
第二范式
-
如果关系R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。
-
通俗地说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。消除非主属性对候选键的部分依赖。
学号 | 课程号 | 成绩 | 学分 |
---|---|---|---|
001 | c1 | 75 | 4 |
002 | c2 | 92 | 4 |
003 | c3 | 88 | 5 |
通过观察可以发现这个表为复合主键,通过学号和课程号来获得学生的成绩,但是“学分”列就只是单纯的依赖课程号,他由课程号决定,是部分依赖,需要消除来满足2NF;
第三范式
当且仅当实体E是第二范式,且E中没有非主属性传递依赖于码时,则称实体E是第三范式。
学号 | 姓名 | 系号 | 系名 |
---|---|---|---|
001 | 张三 | c1 | 机械系 |
002 | 李四 | c2 | 自动化系 |
003 | 王五 | c2 | 自动化系 |
通过观察可以发现,学号-》姓名,学号-》系号;系号—》系名;这个时候就出现了传递依赖
BC范式
BCNF:R是一个关系模式,F时他的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。 消除主属性对候选键的部分和传递依赖
模式分解
保持函数依赖分解,对于关系模式R,由依赖集F,若对R进行分解,分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。另外,注意要消除冗余依赖(如传递依赖)。
无损分解:分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损
当分解为两个关系模式,可以通过以下定理判断是否无损分解:如果R的分解为P={R1,R2},F为R所满足的函数依赖集合,分解P具有无损连接性的成分必要条件是:R1交R2->(R1-R2)或者R1交R2->(R2-R1)
当分解为三个及以上关系模式时,可以通过表格法求解
数据库事务
事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列组成。事务的四大特性通常被简称为ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性确保了数据库事务的可靠执行。
-
原子性(Atomicity): 原子性指的是事务中的所有操作要么全部完成,要么全部不做,事务在执行过程中发生错误会被回滚(Rollback)到事务开始前的状态,就像这个事务从未执行过一样。这保证了数据库的一致性不会因为事务的部分执行而受到影响。
-
一致性(Consistency): 一致性是指事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态。一致性的状态是指数据库中数据的完整性约束没有被破坏。比如,在银行账户转账的过程中,无论转账操作成功与否,两个账户的总金额在转账前后都应该保持一致。
-
隔离性(Isolation): 隔离性是指数据库系统提供一定的隔离级别,使得事务在并发执行时的中间状态对其他事务是不可见的,从而避免事务之间的干扰。隔离级别通常有四种:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。不同的隔离级别可以解决不同程度的事务并发问题,但也会带来不同的性能开销。
-
持久性(Durability): 持久性是指一旦事务被提交,它对数据库的修改就是永久性的,即使数据库系统发生故障也不会丢失。这通常通过数据库的日志文件来实现,当事务被提交时,相关的日志记录会被写入到存储设备上,并在系统发生故障后通过日志来恢复数据库到一个一致的状态。
如何防止这些现象发生
S锁:共享锁;X锁:排他锁;
1. 一级封锁协议
-
内容:事务T在修改数据R之前必须先对其加X锁(排他锁,写锁),直到事务结束(包括正常结束COMMIT和非正常结束ROLLBACK)才释放。
-
效果:一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。然而,它并不能解决脏读和不可重复读的问题,因为在该协议下,读取数据时不要求加锁。
2. 二级封锁协议
-
内容:在一级封锁协议的基础上,增加了事务T在读取数据R之前必须先对其加S锁(共享锁,读锁),但读完后即可释放S锁。
-
效果:二级封锁协议除了防止丢失修改外,还可以进一步防止脏读。但是,由于在读完数据后就释放了S锁,因此在事务结束前,其他事务仍有可能修改该数据,导致不可重复读的问题仍然存在。
3. 三级封锁协议
-
内容:在一级封锁协议的基础上,事务T在读取数据R之前必须先对其加S锁,并且这个S锁要一直持有到事务结束才释放。
-
效果:三级封锁协议不仅解决了丢失修改和脏读的问题,还进一步解决了不可重复读的问题。因为在整个事务期间,读取的数据都被S锁保护,其他事务无法对这些数据进行修改,从而保证了事务的可重复读性。
数据库的安全措施
措施 | 说明 |
---|---|
用户标识和鉴定 | 最外层的安全保护措施,可以使用用户账户、口令及随机数检验等方式 |
存取控制 | 对用户进行授权,包括操作类型(增删改查)和数据对象的权限 |
密码存储和传输 | 对远超终端信息用密码传输 |
视图的保护 | 对视图进行授权 |
审计 | 使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来 |
数据库备份与恢复技术
-
冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份下来。
-
热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
冷备份的优缺点
优点:
-
数据一致性高:冷备份在数据库停止运行后进行,此时数据库没有新的数据写入,因此备份的数据具有高度的一致性。
-
备份过程简单:由于数据库处于离线状态,备份过程相对简单,不需要特殊的技术支持。
-
备份文件占用空间小:由于没有实时数据更新,备份文件通常较小,便于存储和传输。
-
安全性较高:因为是在数据库停止运行后进行的备份,所以减少了数据被篡改或损坏的风险。
缺点:
-
业务中断:备份期间数据库不可用,可能导致业务中断,影响用户体验和业务连续性。
-
恢复时间较长:数据库恢复时,需要将备份文件还原到数据库服务器,并进行一些必要的恢复操作,这可能需要较长时间。
-
备份频率较低:由于备份过程中需要停止数据库运行,因此备份频率可能较低,导致数据丢失的风险增加。
-
灵活性差:在需要频繁访问数据库的环境中,冷备份的灵活性较差,因为每次备份都需要停止数据库运行。
热备份的优缺点
优点:
-
业务连续性高:数据库在备份期间可以继续提供服务,不会对业务产生中断。
-
恢复时间短:由于备份文件是实时更新的,因此在需要恢复数据时,可以迅速从最近的备份点开始恢复,缩短恢复时间。
-
备份频率高:可以在不影响数据库运行的情况下进行频繁备份,降低数据丢失的风险。
-
灵活性高:支持在线备份和恢复,适用于需要频繁访问数据库的环境。
缺点:
-
备份过程复杂:热备份需要特殊的技术支持和工具,以确保在备份过程中数据的一致性和完整性。
-
备份文件较大:由于需要实时更新备份文件,因此备份文件可能较大,需要更多的存储空间。
-
性能影响:备份过程中可能会对数据库性能产生一定的影响,尤其是在高并发环境下。
-
维护成本高:热备份需要较高的维护成本,包括技术人员的培训和设备的投入等。
-
完全备份:备份所有数据
-
差量备份:仅备份上一次完全备份之后变化的数据
-
增量备份:备份上一次备份之后变化的数据
-
日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。