一、数据库基本概念
1、数据库体系结构
- 集中式数据库系统
①数据是集中的
②数据管理是集中的
③数据库系统的素有功能(从形式的用户接口到DBMS核心)都集中在DBMS所在的计算机。 - C/S结构
①客户端负责数据表示服务
②服务器主要负责数据库服务
③数据库系统分为前端和后端
④ODBC、JDBC - 分布式数据库
①物理上分布、逻辑上集中
②物理上分布、逻辑上分布
③特点
④透明性 - 并行数据库(考试中没出现过,了解即可)
①共享内存式
②无共享式
1、分布式数据库特点
- 数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
- 集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
- 适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。) - 全局的一致性、可串行性和可恢复性。
2、分布式数据库透明性
- 分片透明:是指用户不必关心数据是如何 分片(分块) 的,它们对数据的操作在全局关系上进行即如何分片对用户是透明的。
- 复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。
- 位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
- 局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
2、三级模式结构 —— 三级模式和两级映射
逻辑独立性:数据的逻辑结构发生变化后,用户程序也可以不修改。但是为了保证应用程序能够正确执行,需要修改外模式和概念模式之间的映像。
物理独立性:当数据的物理结构发生改变时,应用程序不用改变。但是为了能够保证应用程序能够给正确执行,需要修改概念模式和内模式之间的映像。
3、数据仓库
1.概念:数据仓库是一种特殊的数据库;数据库系统在刚刚建立时运行速度很快,但随着时间的推移,其存储的数据量越来越大,速度也将逐步下降,而为了提高速度,人们会优化存储,通常采用删除较久远历史数据来进行优化,而这些数据仍然具有部分价值,因此我们会专门用一个数据库来对其进行存放,而用来存放这种数据的数据库并不需要插入,添加,修改等操作,更多的操作是查询,因此我们将这种特殊用途的数据库称之为数据仓库
2.数据仓库特点
①面向主题:数据按主题组织
②集成的:消除了源数据中的不一致性,提供整个企业的一致性全局信息
③相对稳定的(非易失的):主要进行查询操作,只有少量的修改和删除操作(或是不删除)
④==反映历史变化(随着时间变化)==∶记录了企业从过去某一时刻到当前各个阶段的信息,可对发历程和未来趋势做定量分析和预测
二、数据库设计过程
数据流图,数据字典以及需求说明书都是需求分析阶段的产物
ER模型为概念结构设计层次的产物
关系模式为逻辑结构设计层次的产物
聚簇索引(没考过)是物理设计阶段的产物
三、概念设计阶段
1、概念设计过程
E-R模型
1.集成的方法
①多个局部E-R图一次集成。
②逐步集成,用累加的方式一次集成两个局部E-R。
2.集成产生的冲突及解决办法:(针对同一对象)
①属性冲突:包括属性域冲突和属性取值冲突。
②命名冲突:包括同名异义和异名同义。
③结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
2、E-R图
1、E-R模型
①实体:实体是现实世界中可以区别于其他对象的事件或事物。 (实体集―实体的集合)
②属性:属性是实体某方面的特性。
③联系:实体的联系分为实体内部的联系和实体与实体间的联系。实体间联系类型:1 : 1 ,1 : * ,* : *
2、属性
- 简单属性和复合属性
①简单属性是原子的,不可再分的;
②复合属性可以细分为更小的部分(即划分为别的属性)。 - 单值属性和多值属性
①定义的属性对于一个特定的实体都只有单独的一个值,称为单值属性;
②在某些特定情况下,一个属性可能对应一组值,称为多值属性。 - NULL属性:表示无意义或不知道。
- 派生属性:可以从其他属性得来。
3、E-R模型-联系类型判断
- 两个不同实体集之间的联系
一对一(1:1)
一对多(1:n)
多对多(m:n) - 两个以上不同实体集之间的联系(三元联系)
多重度的确定(可根据语义直接转换)
以三元关系中的一个实体作为中心,假设另两个实体都只有一个实例:
若中心实体只有一个实例能与另两个实体的一个实例进行关联,则中心实体的连通数为 “—”
若中心实体有多于一个实例能与另两个实体实例进行关联,则中心实体的连通数为 “多” - 同一个实体集内的二元联系
- 扩充的E-R模型
①弱实体:在现实世界中有一种特殊的依赖联系。该联系是指某实体是否存在对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,而将这类实体称为弱实体,如家属与职工的联系,附件与邮件。
②特殊化:在现实世界中,某些实体一方面具有一些共性,另一方面还具有各自的特性,一个实体集可以按照某些特征区分为几个子实体。
③聚集:一个联系作为另一个联系的一端。
四、逻辑结构设计
1、关系模式相关概念
数据模型:
层次模型
网状模型
关系模型
面向对象模型
注:数据模型三要素:数据结构、数据操作、数据的约束条件
1、关系模型相关概念
①目或度:关系模式中属性的个数。
②候选码(候选键)
③主码(主键)
④主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主后经。
⑤外码(外犍)
⑥全码(ALL-Key):关系模式的所有属性组是这个关系的候选码。
关系的3种类型
①基本关系
②查询表
③视图表
2、完整性约束
- 实体完整性约束
主键 唯一且非空 - 参照完整性约束
外键要么是其他关系的主键,要么为空 - 用户自定义完整性约束
即用户可以设置属性的值的要求,如属性“年龄”;用户可以自行设置“不能输入负数”限定
- 触发器
可以完成一些复杂的完整性约束条件的设定
2、E-R图转关系模式
- 一个实体型必须转换为一个关系模式
- 联系转关系模式:
- 一对一联系的转换有两种方式。
独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变) - 一对多联系的转换有两种方式。
独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
归并(多端):并入另一端主键及联系自身属性。(主键:保持不变) - 多对多联系的转换只有一种方式
独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6edb27322e814d87aded4870a9e2a900.png
- 一对一联系的转换有两种方式。
五、关系代数
1、并、交、差
1.并
2.交
3.差(S1-S2 与 S2-S1是不一样的)
2、笛卡尔积、投影、选择
1.笛卡尔积
2.投影(πSno,Sname(S1))
3.选择(σSno=No0003(S1))
3、自然连接
属性列数:二者之和 减去 重复列数
元组行:同名属性列取值相等
S1⋈S2 = π1,2,3,5(σ1=4(S1 X S2))
先做选择再做投影
六、规范化理论
1、规范化理论基本概念
1、函数依赖
设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。
(X:决定因素 Y:被决定因素)
部分函数依赖(部分依赖):主键是两个属性的组合键,若主键中的一部分可以确定某个属性,则为部分函数依赖
传递函数依赖(传递依赖):即:若A可以确定B,B可以确定C,则A可以确定C(注意:B不能确定A,因为此时二者即为等价)
2、Amstrong公理体系
关系模式R<U,F>来说有以下的推理规则:
A1.自反律(Reflexivity):若Y⊆X⊆U,则X→Y成立。
A2.增广律(Augmentation):若Z⊆U且X→Y,则XZ→YZ成立。
A3.传递律(Transitivity):若X→Y且Y→z,则X→Z成立。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由X→Y,X→Z,有X→YZ。(A2,A3)
伪传递规则:由X→Y, WY→Z,有XW→Z。(A2,A3)
分解规则:由X→Y及Z⊆Y,有X→Z。(A1,A3)
3、候选键、主属性与非主属性
1.候选键
图示法求候选键
①将关系的函数依赖关系,用 “有向图” 的方式表示。
②找出入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
③若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入到入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。
2.主属性与非主属性
组成候选码的属性就是主属性,其它的就是非主属性。
2、范式判断
规范化程度只要没有到达 3NF ,以下问题都会存在:
①数据冗余
②修改异常
③插入异常
④删除异常
1.第一范式(1NF)
在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式。
2.第二范式(2NF)
当且仅当关系模式R是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式R是第二范式。
单属性候选键,至少满足2NF。
3.第三范式(3NF)
当且仅当关系模式R是第二范式(2NF),且R中没有非主属性传递依赖于候选键时,则称关系模式R是第三范式。
没有非主属性,至少满足3NF。
4.BC范式(BCNF)
设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
3、模式分解
1.保持函数依赖分解(冗余函数依赖不需要保留)
设数据库模式ρ={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解ρ保持FD。
2.无损分解
什么是有损,什么又是无损?
有损:不能还原。 无损:可以还原。
无损连接分解:指将一个关系模式分解成若干个关系模式后,通过自然连接(自然连接和投影操作,不能进行选择操作)等运算仍能还原到原来的关系模式。
判断是否满足无损分解的方法:
1.表格法
将一个具有函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数的关系模式:成绩(学号,姓名,课程号,课程名,分数),分解为:成绩(学号,课程号,分数);学生(学号,姓名);课程(课程号,课程名)。
2.公式法(仅适用于分解为两个子模式的)
定理:如果R的分解为ρ={ R,R},F为R所满足的函数依赖集合,分解ρ具有无损连接性的充分必要条件是:
R1∩R2 → (R1-R2)
或R1∩R2 → (R2-R1)
其中,R1∩R2表示模式的交,为R1与R2中公共属性组成,R1-R2或R2-R1表示模式的差集,R1-R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其它属性,这样的分解就具有无损连接性。
R1∩R2=A
R1 -R2=B,R2 -R1=C
只要满足A→B,或A→C任意一个,即为无损
满足A→B,则ρ1为无损的
R1∩R3=B
R1 -R3=A,R3 -R1=C
只要满足B→A,或B→C任意一个,即为无损
都不满足,则ρ2为有损的
七、SQL语言
1、普通查询
2、分组查询
3、权限控制
八、并发控制
1、事务的特性
①原子性(Atomicity):事务是原子的,要么做,要么都不做。
②一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
③隔离性(lsolation):事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事物都是不可见的。
④持久性(Durability) :一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。
2、并发问题(十次左右考试都未出现过,了解即可)
- 丢失更新
注:在这两个事务中,T1执行的结果为5,T2执行的结果为2,我们想要得到的是A减去5再减去8的结果,但最终结果为2,因为下一个执行的事务结果会覆盖上一个事务执行的结果
- 不可重复读
注:在T1运算中,求A与B的和时,为了提高准确率,程序会再次进行验算,但在第一次运算和第二次运算的间隙,将进行T2运算,T2事务对数据进行了修改,导致验算不正确
- 读 “脏” 数据
注:值70是计算过程产生的数据,属于临时数据,该数据被恢复为了20,使得T2操作将会出错
3、封锁协议
共享锁/S锁/读锁:若事务T对数据对象A加上S锁,其他事务只能对A再加S锁,不能再对A添加X锁。
排他锁/独占锁/X锁/写锁:若事务T对数据对象A加上X锁,其他事务不能再对A添加任意锁。