【软考笔记】三、数据库系统

【软考笔记】三、数据库系统

Scroll Down

三、数据库系统

1、考试章节

在这里插入图片描述

2、三级模式--两级映射

在这里插入图片描述

物理数据库 :表现形式往往是一个文件。

内模式 :主要管的是如何存储这一系列数据,如果存储,如何优化。

概念模式 :数据库中的表。相当于把数据分成了多张表。

外模式 :对应数据库中的视图。

用户视图和概念级数据库之间有一个映射关系叫做:外模式-概念模式映射。

DBA视图和物理级数据库之间有一个映射关系叫做:概念模式-内模式映射。

3、数据库的设计

在这里插入图片描述

4、E-R模型

在这里插入图片描述

把局部E-R图合成全局E-R图的方法

在这里插入图片描述

E-R转关系模式

如果联系是一对一的:一个实体一个关系模式,联系可以单独转成关系模式,也可以合并到任意一个实体中。

如果联系是一对多的:一个实体一个关系模式,联系可以单独转成关系模式,也可以合并到多的实体中。

如果联系是多对多的:一个实体一个关系模式,联系必须单独转成关系模式。

5、关系代数

在这里插入图片描述

在这里插入图片描述

:将两个表中的数据合并,重复的之显示一次。

:将两个表中公共部分提取出来。

:比如s1-s2,将s1中公共部分去掉。

笛卡尔积 :结果前面的字段来自s1,后面的字段来自s2,s1中的每条依次记录和s2中的所有记录进行拼接。总记录数为s1*s2。总属性数是s1属性数+s2属性数。

投影 :(ΠSno,Sname或者Π1,2)对s1投影是选列的一种操作。

选择 :(δSno=No003或者δ1=No003)选的是行。

在这里插入图片描述

联结 :(S1Sno=S2Sno)等值联结,会把S1和S2中都有的字段只保留一个。

联结操作如果不写条件被称为自然联结,此时联结操作条件为s1和s2中相同字段做等值联结。

6、函数依赖

在这里插入图片描述

部分函数依赖 :学号、课程号、姓名,其中通过学号和课程号可以确定姓名。主键当中的一部分可以确定某个属性。

传递函数依赖 :A->B->C ===> A->C

7、规范化理论

1】价值与用途

在这里插入图片描述

2】求候选关键字

在这里插入图片描述

例如:学号、姓名、性别

学号可以确定姓名、身份证号、学号和姓名也可以确定性别。此时学号和姓名的组合键可以称为超键。但是不能成为候选键,因为存在冗余的属性,因为一个学号也可以确定性别。去掉姓名可以称为候选键(可以唯一标识)。候选键可以有多个,主键只能有一个。比如身份证号和学号都可以是候选键,但是只能选择其中一个作为主键。

在这里插入图片描述

在这里插入图片描述

1、A

2、ABCD

注意其中ABD->E ,意思是ABD组合键的可以确定E。而不是A->E,B->E,D->E。

3、B

注意不是选A,A代表AB的组合键而不是A和B。

3】范式

范式

第一范式 :属性不能被拆分。

第二范式 :当且仅当R是第一范式,且每个非主属性完全依赖主键时,则称R时第二范式。

在这里插入图片描述

就像上面的表,虽然满足第一范式,但是不满足第二范式。

分析 :sno和cno联合主键才能确定crade,所以说sno和cno是候选键,但是对于credit(学分)来说,不需要sno,一个cno都能确定credit,此时存在部分主键依赖,所以不满足第二范式,存在数据冗余问题,每个credit存了很多遍;存在更新异常,如果想修改学分需要修改很多个;插入异常,比如现在想插入一个cno=6,credit=5的课程,这个课目前还没有学生选择,所以sno为空,但是由于sno为主键所以无法插入;删除异常,加如说学生毕业了,我想把学生的成绩删除了,但是会将课程一并删除。怎么解决 :将此表中的credit(删除)和cno(复制)列抽离出来,组成一个新的表。

第三范式 :当且仅当R是第一范式和第二范式。且没有非主属性传递依赖。

在这里插入图片描述

分析 :单属性是不存在部分函数依赖的。上面的表存在非主属性(非主键)传递依赖。其中DNO->DNAME。将DNO、DNAME和LOCATION抽离出来作为一个新表,旧表为SNO、SName和DNO。

BC范式 :当且仅当R是第一范式、第二范式和第三范式。消除主属性对候选键的传递依赖。主属性:候选键,非主属性:其他字段。

在这里插入图片描述

分析 :上面的候选键为ST、SJ。

判断是否时BC范式,将所有的函数依赖写出来,其中如果函数依赖的左边部分全部都是候选键,则是BC范式。SJ->T,ST->J,T-J。其中T不是候选键,所以不符合BC范式。

4】范式例题

在这里插入图片描述

答案:C、D、A

5】模式分解

在这里插入图片描述

在这里插入图片描述

方式一:表格法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

方法二:适合于一分为二

在这里插入图片描述

其中第一种分解方式是无损分解,第二种方式不是无损分解,第一种方式中的A-B,在F={A->B}中,二第二种方式中的B->A和B->C没一个在F={A->B}中,所以不是无损分解

8、并发控制

1】基本概念

在这里插入图片描述

在这里插入图片描述

丢失更新 :A=A-8写回的操作结果会覆盖A=A-5的操作。

不可重复读 :第一次读取的时候A=20,B=30。为了验证正确,读取两遍,但是再读取第二遍的之前,更新了A=70,此时第二次读取的A=70,B=30.这样的话发现两次计算结果不一致。

读“脏”数据 :T1读A=20,然后将A=70写回,而T2读取了A=70,但是T1,执行了ROLLBACK,此时A恢复为20,此时A的值并不是70了,此时70为脏数据。

2】封锁协议

在这里插入图片描述

S锁 :读锁,读锁加上后可以继续加读锁。

X锁 :写锁,写锁加上后不能继续加任何锁。

9、数据库完整性约束

1】实体完整性约束

在关系中用主关键字来唯一标识一个实体,实体具有独立性,关系中的这种约束条件称为实体完整性。

2】参照完整性约束

外键这一块的完整性约束。学生关系S和学校专业关系Z之间满足参照完整性约束。学校专业关系Z中的专业号属性是主关键字,同时它也存在学生关系S中,那么只有当专业号存在,这个专业的学生才有可能存在,因此在添加学生关系中的元组时,定义的专业号必须在学校专业关系Z中已存在对应的元组。

3】用户自定义完整性约束

用户定义完整性约束是用户定义某个具体数据库所涉及的数据必须满足的约束条件,是由具体应用环境来决定的。例如,约定学生成绩的数据必须小于或等于100。

4】触发器

是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。

功能:

1、 允许/限制对表的修改

2、 自动生成派生列,比如自增字段

3、 强制数据一致性

4、 提供审计和日志记录

5、 防止无效的事务处理

6、 启用复杂的业务逻辑

10、数据库安全

在这里插入图片描述

11、数据库备份

1】备份方式

在这里插入图片描述

在这里插入图片描述

转储 :备份。动态 :运行状态。静态 :不运行状态。**海量 **:所有数据。

2】故障与恢复

在这里插入图片描述

12、数据仓库与数据挖掘

数据仓库

在这里插入图片描述

数据挖掘

在这里插入图片描述

13、反规范化

在这里插入图片描述

14、大数据

在这里插入图片描述

在这里插入图片描述