1.1、三层数据结构:外部模型、逻辑模型(概念模型)、内部模型
1.2、三层模式和两级映像:
三层模式:外模式(用户模式、子模式)、逻辑模式(模式)、内模式
两级映像:外模式/模式映像、模式/内模式映象
一个数据库只有一个内模式和模式,有多个外模式;每个外模式对应一个外模式/模式映 像,一个数据库只有一个模式/内模式映像
此结构保证了数据库系统的数据独立性(逻辑独立性、物理独立性)
- 2.1、逻辑模式定义内容:
数据的逻辑结构(数据项的名字、类型、取值范围等)
数据之间的关系
数据有关的安全性、完整性要求
2.2、外模式是逻辑模式的子集,介于应用与逻辑模式之间,一个逻辑模式对应多个外模式, 一个外模式可以有多个应用,一个应用也可以有多个外模式
2.3、内模式是数据物理结构和存储方式的描述,决定了数据库内部的表示方式:
存储方式(顺序存储、B树存储、B+树存储等)
索引方式
数据是否加密
数据是否压缩
存储记录结构
3、关系模式是对关系的定义与描述
关系是描述实体及其属性、实体间的联系,它是一个二维表,表中每行对应一个元组,表的每一列对应一个属性,同一列的值来自同一个域。
关系模式是型,关系是值,关系模式是静态的、稳定的,关系是动态的,不断变化的。
4.1、分布式数据库模式
4.2、分布透明性包括:分片透明性、复制透明性、位置透明性和局部数据模型透明性(逻辑透明性),分片透明性是分布透明性的最高层次。
6、码(Key,键):由一个或多个属性组成
候选码:关系中能唯一标识元组的属性或属性集
主属性:候选码中的各个属性
主码:用户选作元组标识的候选码
全码:关系的所有属性是这个关系的候选码
7、关系模型中三类完整性约束:实体完整性、参照完整性、用户定义的完整性
实体完整性:主码唯一且不能为空,主属性不能取空值。
参照完整性:外码取值必须为空值或者为被参照表中某个元组的主码值
用户定义的完整性:反映某一具体应用所涉及的数据必须满足的语义要求。
8、集合计算:并、交、叉,投影πL(去掉重复元组)、选择σC(不会包含重复元组,因为包含主码)、笛卡尔积(Χ)、连接(⋈为连接运算符,θ为连接条件。等值连接:即θ为=的连接,保留所有的列表;自然连接:公共属性上的等值连接,要删除重复的属性)
R⋈AθBS = σAθB(RΧS)
重命名(ρ)
ρS(R)把关系R重命名为S,不改名其中的列表
ρS(A1,……,An)(R)把关系R重名为S,并将对应的列分别重命名为A1,……,An
9、SQL三大类命令:数据定义DDL(CREATE、DROP、ALTER),数操纵DML(SELECT、INSERT、UPDATE、DELETE),数据控制DCL(GRANT、REVOKE)
10、数据库设计过程:
规划阶段(系统调查、可行性分析、确定数据库系统总目标)
需求分析阶段(业务流程图、系统关联图、数据流图、数据字典)
概念设计阶段(概念模型 E/R UML )
逻辑设计阶段(把概念模型转成数据库系统支持的逻辑结构,包括逻辑模型和外模型)
物理计阶阶段
数据库实现阶段
数据库运行与维护阶段
11.1、ER模型即实体联系模型(实体、联系、属性)
在ER图中属性用椭圆形框表示,加下划线的属性为实体标识符,一个实体必须有标识符,联系没有标识符
一个联系涉及到的实体集个数称为该联系的元数或度数
一元联系(递归联系):同一个实体集内部实体之间的联系
二元联系:两个不同实体集实体之间的联系
三元联系:三个不同实体集实体之间的联系
11.2、集成局部E-R图为全局E-R图时,可能会遇到以下三种类型的冲突:
(1)属性冲突:不同部门可能对同一属性的数据类型、取值范围或取值集合、采用单位有不同的定义
(2)命名冲突:不同局部应用中可能使用相同的名字指代不同意义的对象;不同局部应用中可能使用不同的名字指代相同意义的对象
(3)结构冲突:同一对象在一个局部E-R图中可能作为实体,而在另一个局部E-R图中可能作为属性;同一实体在不同E-R图中的属性个数和类型可能不同;实体之间的联系在不同E-R图中呈现不同的类型
12.1、函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“Y函数依赖于X”,记作X→Y。X称为这个函数依赖的决定属性集。
12.2、非平凡函数依赖和平凡的函数依赖:在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但Y⊈X,则称X→Y是非平凡的函数依赖;若X→Y,但Y⊆X,则称X→Y是平凡的函数依赖。
12.3、完全函数依赖和部分函数依赖:在关系模式R(U)中,如果X→Y,并且对于X的任意一个真子集X',都有X'↛Y,则称Y完全函数依赖于X,记作X→fY;若存在X的一个真子集X',使得X'→Y成立,则称Y部分函数依赖于X,记作X→pY 。
12.4、传递函数依赖和直接依赖:在关系模式R(U)中,如果X→Y,Y→Z,且Y⊈X,Y↛X,则称Z传递函数依赖于X,如果Y→X,即X↔Y,则Z直接依赖于X。
13、Armstrong公理:
自反性: Y⊆ X ⊆U 则X→Y在R上成立
增广性: 如果X→Y 在R上成立且Z⊆U,则XZ→YZ 在R上也成立
传递性: 如果X→Y 和Y→Z在R成立,则X→Z在R上成立
复合性: 如果X→Y 和W→Z成立,那么XW→YZ成立
合并性: 如果X→Y 和X→Z成立,那么X→YZ成立
伪传递性: 如果X→Y 和WY→Z 成立,那么XW→Z 成立
分解性: 如果X→Y 和Z⊆Y成立,那么 X→Z 成立
通用一致性: 如果X→Y和W→Z成立,那么X∪(W-Y)→YZ成立
14.1、第一范式(1NF):如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
14.2、第二范式(2NF):若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。
14.3、第三范式(3NF):若关系模式R∈1NF,且不存在非主属性对码的传递函数依赖,则称R∈3NF。
14.5、BCNF:设关系模式R∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,则称R∈BCNF。(在关系模式R中,如果每一个决定属性集都包含候选码,则R∈BCNF)
14.6、BCNF关系模式的性质:
所有非主属性都完全函数依赖于每个候选码
所有主属性都完全函数依赖于每个不包含它的候选码
没有任何属性完全函数依赖于非码的任何一组属性
BCNF消除了插入异常和删除异常
14.7、3NF与BCNF的关系:
如果R∈BCNF则R∈3NF
如果R∈3NF且R只有一个候选码,则R必属于BCNF
2NF消除非主属性对码的部分函数依赖
3NF消除非主属性对码的传递函数依赖
BCNF消除主属性对码的部分函数依赖
15.1、无损连接性的模式分解
设关系模式R(U,F)被分解为若干个关系模式R1(U1,F1),R2(U2,F2),……,Rn(Un,Fn),其中U=U1∪U2∪……∪Un,且不存在Ui⊆Uj,Fi为F在Ui上的投影,若R与与R1、R2、……、Rn自然连接的结果相等,则称关系R的这个分解具有无损连接性。(简答说就是分解后的关系模式通过自然连接的结果与原来的关系模式相等)
只有具有无损连接性的分解才能保证不丢失信息
无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
15.2、保持函数依赖的模式分解
设关系模式R(U,F)被分解为若干个关系模式R1(U1,F1),R2(U2,F2),……,Rn(Un,Fn),其中U=U1∪U2∪……∪Un,且不存在Ui⊆Uj,Fi为F在Ui上的投影,若F所逻辑蕴涵的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴涵,则称关系模式R的这个分解是保持函数依赖的。(简单说原来的函数依赖一定被保持在某一个分解当中)
保持函数依赖的分解可以减轻或解决各种异常情况
15.3、判断关系模式的一个分解是否与原关系模式等价:分解具有无损连接性、分解要保持函数依赖
15.4、分解连接性和分解保持函数依赖是两个相互独立的标准
若要求分解具有无损连接性,那么模式分解一定能够达到4NF
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF
若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够到达BCNF
16、安全性控制层次从高到低分别是:
应用(用户表示和鉴定)
DBMS(存取控制、审计、视图)
OS(操作系统安全保护)
DB(密码存储)
17、事务的ACID特性:
原子性(Atomicity):一个事务包含的操作,要么全做,要么全不做。
一致性(Consistency):事务执行前后,数据保持一致性,即从一个一致性状态转变到另一个一致性状态。
隔离性(Isolation):并发执行的不同事务之间内部的操作互不影响。
持续性(Durability):事务一旦执行完成以后,该事务对数据库所作的更改便持久地保存在数据库中,不会被回滚。
18.1、并发操作带来的数据不一致性:
丢失修改、脏读、不可重复读(读-更新、读-删除、读-插入三种情况,其中后两种也叫幻行或幻读)
18.2、锁的类型:排它锁(X锁、写锁)、共享锁(S锁、读锁)
锁的粒度:表锁、行数、页锁
封锁协议:三级封锁协议和两段锁协议
18.3、三级封锁协议保证数据一致性
两段锁协议保证并行调度可串行性
三级封锁协议包括1级封锁协议、2级封锁协议、3级封锁协议
1级封锁协议要求事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。1级封锁协议可防止丢失修改。
2级封锁协议要求1级封锁协议加上事务T在读数据R之前必须先对其加S锁,读完后即释放S锁。2级封锁协议可以防止丢失修改和脏读。
3级封锁协议要求1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。3级封锁协议可以防止丢失修改、脏读和不可重复读。
两段锁协议:在对任何数据进行读写操作之前,事务首先要获得对该数据的封锁(获得封锁,扩展阶段);在释放一个封锁后,事务不再获得任何其他封锁(释放封锁,收缩阶段)。
18.4、封锁带来的问题:死锁和活锁
系统可能使某个事物永远处于等待状态,得不到封锁的机会,这种现象称为活锁。可通过先来先服务策略解决。
系统中有两个或两个以上的事物都处于等待状态,并且每个事物都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事物都无法继续执行,这种线下称为系统进入死锁状态。预防死锁:一次封锁和顺序封锁。诊断与解除死锁:死锁检测分为超时法,等待图法。
19、转储方法:静态转储和动态转储、海量转储和增量转储
静态转储:在系统重无运行事务时进行的转储操作
动态转储:转储操作与用户事务并发进行,转储期间运行对数据库进行存取或修改
海量转储:每次转储全部数据库
增量转储:只转储上次转储后更新过的数据
20.1、登记日志文件原则
登记的次序严格按并行事务执行的时间次序
必须先写日志文件,后写数据库
20.2、数据库复制:对等复制、主从复制、级联复制
21、OLAP(On-line Analytical Processing联机分析处理)是一种用于分析和查询大规模数据集的计算机处理技术,主要用于多维数据分析和数据挖掘。
OLTP(On-Line Transaction Processing联机事务处理过程)是传统的关系型数据库联机事务处理过程。
22、数据仓库包括数据源、数据的存储与管理、OLAP服务器与各种报表工具、查询工具、数据分析工具、数据挖掘工具及各种基于数据仓库或数据集市的应用开发工具。
23、数据仓库4大特点:
面向主题:数据按主题组织
集成的:消除源数据中的不一致性,提供整个企业的一致性全局信息
相对稳定的(非易失的):主要进行查询操作,只有少量的修改和删除操作(或不删除)
反映历史变化(随着时间变化):记录企业从过去某一时刻到当前各个阶段的信息,可对发展历程和未来趋势做定量分析和预测
24、数据库的完整性是指数据的有效性、正确性和相容性,防止不符合语义的数据进入数据库。
25、分布式事务解决方案:全局事务(两阶段提交(2PC)、三阶段提交(3PC))、补偿事务(TCC)、本地消息表(异步确保)、MQ 事务消息
26、NoSQL(Not-only SQL) 非关系型数据库
关系型数据库 | NoSQL数据库 | |
并发支持 | 支持并发、效率低 | 并发性能高 |
存储与查询 | 关系表方式存储、SQL查询 | 海量数据存储、查询效率高 |
扩展方式 | 向上扩展(提升性能) | 向外扩展 |
索引方式 | B树、哈希等 | 键值索引 |
应用领域 | 面向通用领用 | 特定应用领域 |
27、反规范化设计方法有:
(1)增加冗余列:在多个表中具有相同的列,避免查询时进行连表操作。
(2)增加派生列:是指增加能够通过表中其他数据计算生成的列,能够减少查询时的计算量,提高查询速度。
(3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)分割表:包括水平分割和垂直分割。水平分割是指建立多个列定义相同的表,把一个表中的数据分别保存在多个表中。垂直分割是指把一个表的列定义拆分成多个表,并且具有相同的主键。
28、解决反规范化设计导致的数据不一致问题方法有:
(1)用事务来保证一致性:在同一事务中对所有涉及的表进行增、删、改操作,实时性高,但容易遗漏,不易维护。
(2)用批处理来保证一致性:通过定时运行的批处理程序或存储过程来对数据表进行修改,实现简单,易维护,但实时性差。
(3)用触发器来保证一致性:当数据修改后,立即触发其他数据做相应修改,实时性高,易于维护。