4. 数据库
我们分别说下数据库模式,ER模型,关系代数和元组演算,规范化理论,并发控制,数据库完整性约束,分布式数据库和数据仓库的概念
首先是数据库模式,在这次考试中,我们需要了解,这个模式是一个三级模式
首先是物理数据库
建立在其上的是内模式,也就是如何存储为文件
然后是概念模式,也就是对应的表,将表和文件映射起来的关系,称为 概念模式-内模式映射
然后在表之上,还存着用户视图,用户供用户使用,称为外模式,将外模式和概念模式联系在一次的映射称为外模式-概念模式映射
整体的设计过程也就是
首先根据遇到的需求进行分析
形成数据流图,数据字典,需求说明书
然后根据这些完成概念结构设计,形成ER模型
之后就是逻辑结构设计,得到关系模式
最后是实际的物理设计
那么我们直接看其中的重点,ER模型
一个模型中,往往具有一个实体,实体中有多个属性
实体之间的关联称为联系
对于这样多个ER模型,集成方式可以是多个局部E-R图一次集成
或者逐步集成,累加的方式批次集成两个局部E-R
不过在继承之中,会产生一些冲突
对于这些冲突,我们列举如下
比如属性冲突,包含属性域冲突和属性取值冲突
或者命名冲突,包含同名异义和异名异义
还有结构冲突,同一个对象在不同应用中具有不同的抽象,同一实体在不同局部E-R图中包含的属性个数和属性排列次序不完全相同
常见的实体之间的关系有着
1:1的关系 1:n的关系 多对多的关系 也就是 m:n的关系
这里的常考样式为
每个实体各一个,关联关系至少一个,那么最少也是4个关系模型
其次我们进入到数据库系统中,查看相关的关系代数
主要有如下的几个关系
这里的重点是后四项,不过我们从易到难,依次来看
首先是并交差,都是简单的数学概念
对于差,则是进行求数据集的差值
其次是笛卡尔积,本质上就是简单的相乘,将S1 和 S2进行乘法
然后对于投影,则类似sql中的select
利用pai字段进行选择
对于选择,则类似where条件一样
还应该是 pai字段=某个值
最后是连接,类似于join
默认选择同名字段进行join
也支持使用指定字段匹配
S1.Sno = S2.Sno
接下来我们进行到函数规范化的概念中的函数依赖
主要是了解两个概念
1, 部分函数依赖
2, 传递函数依赖
这个概念指的是,利用A和B的关系可以确定一个C
其次是传递函数依赖
可以根据A得到B,进而得到C,但是不可逆,也就是可以根据A得到一个B,但是B不能确定一个A
对于这种规范化的设计,主要的目的是为了解决一些问题
比如数据冗余,更新异常,插入异常,删除异常
首先是数据冗余
如上的表设计就是数据冗余
我们本可以通过DNO来获取到DNAME和 LOCAtION
直接这样放在一张表里存在数据冗余的问题
而且回来更新DNO相关数据的时候,可能由于更新不完整,存在数据异常的问题
以至于插入异常和删除异常
那么我们在规范化设计中,很重要的一环,就是确定表中的键
确定一个主键的顺序,我们首先确定对应的超键,也就是具有唯一标识的元组,然后把消除多余属性,确定候选键,然后选择一个作为主键
除此之外还有个外键的概念,主要是其他关系的主键
就比如 我们有 学号,身份证号,姓名,性别的一张表
我们可以通过学号 + 姓名, 身份证号,学号等作为唯一标识元组,确定超键
然后是消除 学号+姓名这种的冗余数据
确定身份证号和学号这两个键为候选键,然后选择一个为主键
这种主键确定相关的题一般都是让我们确定候选键元组
就比如如下两道题
这种题的做题方式是首先画出一个有向图
然后找到入度为0的属性,以此为起点,遍历所有有向图,如果可以遍历所有节点
就是候选键
如果入度为0的属性不能遍历所有节点,就加入一些中间节点到节点集中,直到节点集中的节点可以遍历所有的结点
那么第一道题,我们可以通过A1 遍历所有节点,且入度为0,那么候选就应该是A1
第二道题,我们画出如下的有向图
上面入度为0 的节点不少,但是都没法单独遍历所有节点,故需要多个结点打配合
至少需要一个C,然后是A,B,D
最后一题中,候选键可以是A和B,因为A可以到B C, B也可以到AC
其次是我们说下第一第二第三范式
对于第一范式
需要确保属性值都是不可分的原子值
其次是第二范式,是需要消除非主属性队候选键的部分依赖
到第三范式,需要消除非主属性队候选键的传递依赖
到BCNF,需要消除主属性队候选键的传递依赖
那么我们简单来看各个级别范式的实现,首先是第一范式
需要满足原子级别,就比如如下的关系
就不满足,需要我们将高级职称人数这一列去掉就可以了
第二范式就是需要先给予第一范式之上,确保每一个非主属性都依赖主键
对于这一个关系,SNO对应学生,GRADE绑定学生
CNO对应的课程,CREDIT绑定的课程
这就是非主属性依赖于两个主键,不符合第二范式,需要拆分SNO 和 CNO为两个表
最后是第三范式
当且仅当R是1NF,如果E没有非主属性传递依赖于码的时候,则称R为第三范式
其中,DNO指的是系链接,后面的DNAME和LOCATION依赖于DNO所以可以拆分出去,不符合第三范式
然后是BC范式,R是是一个关系模式,F是他的依赖集,R属于BCNF当且
仅当F中每个依赖的决定因素必定包含R的某个候选码
就比如关系模式STJ中,S表达学生,T是老师,J是课程,每个老师只教一个课程
每个课程都有若干老师,每门课在绑定学生的时候就对应一个老师了
这样无论是SJ还是ST都可以确定剩下属性
而SJ和ST都是候选项,也就是所有的推断公式的左边都是候选项,符合BC范式