系列文章目录
系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】
系统架构设计专业技能 · 数据库设计(二)
- 系列文章目录
- 一、数据库概念
- 1.1 数据模型
- 二、数据库模式
- 三、 关系数据库
- 3.1 关系模型
- 3.1 关系运算
- 3.1 关系数据设计的基本理论
- 3.1.1 函数依赖
- 3.1.2 键/候选键
- 3.1.3 函数依赖的公理(Armstrong 公理)
- 3.1.4 规范化理论
- 3.1.5 模式分解(是否保持函数依赖&是否无损)
- 四、数据库设计
- 4.1 概念结构设计
- 4.2.1 E-R模型
- 4.2.2 ER图两个不同实体的联系:
- 4.2.3 概念结构设计的过程:
- 4.2 逻辑结构设计
- 4.3 并发控制
- 4.3.1 事务的ACID特性
- 4.4 数据库的安全性
- 4.5 数据库备份与恢复
- 4.6 数据库性能优化
- 一、应用程序与数据库的交互
- 一、NoSQL数据库
- 一、分布式数据库
- 一、数据库优化技术
- 一、分布式缓存技术Redis
一、数据库概念
1.1 数据模型
数据模型分为:层次模型、网状模型、面向对象模型、关系模型。
数据模型三要素:数据结构、数据操作、数据的约束条件。
数据的约束条件包括:
(1)实体完整性:
(2)参照完整性:
(3)用户定义完整性:
二、数据库模式
数据库一般采用三级模式,系统开发人员需要通过视图层、逻辑层和物理层三个层次上抽象来降低用户屏蔽系统的复杂性,简化用户与系统的交互。
从数据库管理系统的角度,数据库也分为为外模式、概念模式和内模式。
数据库系统在三级模式之间提供了两级映像:概念模式/内模式映像、外模式/概念模式映像。这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。
数据库三级模式
外模式 | 概念模式 | 内模式 |
---|---|---|
又叫子模式或用户模式,用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据 | 是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图 | 是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式等 |
数据库两级映像
逻辑独立性 | 物理独立性 |
---|---|
对应外模式和概念模式之间的映像。指应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变 | 对应概念模式和内模式之间的映像。指应用程序与磁盘中的数据互相独立。当数据的物理存储改变时,应用程序不变 |
三、 关系数据库
3.1 关系模型
数据模型三要素:数据结构、数据操作、数据的约束条件。
关系模型表现形式
形式一:
学生(学号,姓名,年龄,班级编号)
形式二:
学生(U,F)
U = { 学号,姓名, 年龄, 班级编号 }
F = { 学号 → 姓名,学号 → 年龄,学号 → 班级编号}
基本概念:
目或度:关系模式中属性的个数。
候选码(候选键):关系中的某一属性或属性组的值,且唯一地标识一个元组。
主码(主键):若一个关系中有多个候选码,则选定其中一个作为主码。
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
外码(外键):其他关系的码,就是外键。
全码:关系模式的所有属性组是这个关系的候选码。
完整性约束:
- 实体完整性约束:规定基本关系的主属性不能取空值。
- 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
- 用户自定义完整性约束:应用环境决定。
- 触发器:
3.1 关系运算
并(∪): 关系R与S的并是由属于或属于S的元组构成的集合。
交(∩): 关系R与S的交是由属于R同时又属于S的元组的集合。
差(—): 关系R与S的差是由属于R但不属于S的元组的集合。
笛卡尔积(X): 两个关系分别为n列和m列的关系R和S的笛卡尔积是一个(n + m)列的元组的集合。其中的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R X S,如果R和S有相同的属性名,可在属性名前加关系名作为限定,以示区别。若R有K1个元组,S有K2个元组,则R和S的笛卡尔积有K1 X K2个元组。
选择(σ):取得关系R中符合条件的行。
投影(π):取得关系R中符合条件的列。
连接(Φ):
等值连接:选取关系R、S,取两者笛卡尔积中属性值相等的元组。
自然连接:一种特殊的等值连接,它要求比较属性列必须相同的属性组,并且把结果中重复属性去掉。
3.1 关系数据设计的基本理论
关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可以方便地获取信息。
3.1.1 函数依赖
设R(U,F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任意关系,如果对于r中的任意两个元组u,v,只要有u[Y] = v[Y],则称X函数决定于Y,或称Y函数依赖于X,记X → Y,称为函数依赖。
例如:学号→ 系号, 系号 → 系名
3.1.2 键/候选键
- 主属性与非主属性:组成候选码的属性就是主属性,其它就是非主属性。
求候选键实例
- 将关系模式的函数依赖关系用”有向图“的方式表示。
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
- 若入度为0的属性集不能遍历图中所有节点,则需要尝试性的将一些中间节点(既有入度,也有出度的结点)并入入度为0的属性集合中,直至该集合能遍历所有结点,集合为候选键。
3.1.3 函数依赖的公理(Armstrong 公理)
从已知的函数依赖,可以推导出另外一些函数依赖,这就需要一系列的推理规则,这些规则常被称为”Armstrong 公理“。
设定关系式R(U, F),U是关系模式R的属性集,F是U的一组函数依赖,则有以下三条推理规则:
(1) 自反律:若Y ⊆ X ⊆ U, 则X → Y为F所蕴含。
(2) 增广律:若Z ⊆ U且X → Y为F所蕴含,则XZ → YZ为F所蕴含。
(3) 传递律:X → Y,Y → Z为F所蕴含,则X → Z为F所蕴含。
根据上面的推理规则,又可以推出下面三条规则:
(1) 合并规则:若X → Y,X → Z,则X → YZ为F所蕴含。
(2) 伪传递规则:若X → Y,WY → Z,则XW → Z为F所蕴含。
(3) 分解规则:若X → Y,Z ⊆ Y,则X → Z为F所蕴含。
证明如下:
3.1.4 规范化理论
关系数据库设计的方法之一就是满足适当范式模式,通常可以通过判断分解后的模式达到几范式来评价模式的规范化程度。范式包括:1NF、2NF、3NF、BCNF、4NF、5NF。
(1)第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,既每个属性都是不可再分的数据项,则关系模式R属于第一范式。
例如:以下不满足1NF,高级职称人数可以再分教授和副教授。
(2)第二范式(2NF):若关系模式R ∈ 1NF,且每个非主属性完全依赖主码时(不存在部分依赖),则关系模式R属于第二范式。
例如:以下不满足2NF,课程号可以包含学分。
(3)第三范式(3NF):若关系模式R ∈ 2NF,且没有非主属性对主码的传递函数依赖。则关系模式R属于第三范式。
例如:以下不满足3NF,系名和系位置依赖系号。
(4)BC范式(BCNF):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
例如:
3.1.5 模式分解(是否保持函数依赖&是否无损)
四、数据库设计
数据库设计的基本步骤,可以分为用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段(应用程序设计)、运行维护
数据库设计过程:
4.1 概念结构设计
4.2.1 E-R模型
ER模型简称E-R图 ,是描述概念世界、建立概念模型的实用工具。E-R图的三个要素:
(1)实体:用矩形表示,框内标注实体名称。
(2)属性:用椭圆图形表示,并用连线与实体连接起来。
(3)实体之间的联系:用菱形框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
4.2.2 ER图两个不同实体的联系:
4.2.3 概念结构设计的过程:
-
集成的方法:
多个局部ER图一次集成
逐步集成,用累加的方式一次集成两个局部ER。 -
集成产生的冲突及解决办法:
属性冲突:包括属性域冲突和属性取值冲突
命名冲突:包括同名异议和异名同义
结构冲突:包括统一对象在不同应用中具有不同的抽象,以及同一实体在不同局部ER图中所包含的属性个数和属性排列次序不完全相同。
4.2 逻辑结构设计
- ER图向关系模式的转换
实体向关系模式的转换
联系向关系模式的转换 - 关系模式的规范化
- 确定完整性约束(保证数据的正确性)
- 用户视图的确定(提高数据的安全性和独立性)
根据数据流图确定处理过程的视图
根据用户视图确定不同用户使用的视图 - 应用程序的设计
☆ 一个实体型必须转换为一个关系模式
☆ 联系转关系模式:
-
(1)一对一联系的转换有两种方式
独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变) -
(2)一对多联系的转换有两种方式
独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
归并(多端):并入另一端主键及联系自身属性。(主键:保持不变) -
(3)多对多联系的转换只有一种方式
独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)