数据库---规范化理论、范式、模式分解

函数依赖

部分函数依赖;传递函数依赖

非关系化关系模式可能存在的问题

数据冗余、更新异常(数据不一致)、插入异常、删除异常

关系化关系的用途

解决非关系化模式存在的问题

键相关的概念


超键:

唯一标识元组,可能存在冗余属性

候选键:

唯一标识元组

超键与候选键的差异

比如:(SNo,SName,SSex) 其中(SNo,SName)超键

主键:

在候选键中任意选择一个作为主键

外键:

其他关系的主键

候选键的求法


图示法

先把属性转化为结点,把函数依赖转化为有向箭头
再找入度为0 的结点开始遍历有向图,若能遍历全图则说明该结点就是候选键。
若没有入度为0的结点,则选择既有入度又有出度的结开始遍历。

求候选键的相关例题

这里写图片描述

解题过程分析:

这里写图片描述

先把属性都转化为结点,把函数依赖转化为有向图的边,再从上图中找到入度为0的节点A1,从A1开始遍历有向图,我们发现从A1开始刚好可以遍历整个有向图,所以A1是候选关键字(候选码)

这里写图片描述

解题过程分析:

这里写图片描述

同理:先把属性都转化为结点,把函数依赖都转化为有向图的边,我们开始查找图中入度为0的结点,(转化结点的时候需要注意,由多个属性共同决定的结点需要把多个结点聚合一起后到达目标结点,而不是每个结点直接到达目标结点)观察图中入读为0的结点,发现A、B、C、D都是入读为0的结点,由于图示法已经将图分为了两部分,而由ABCD四个属性共同组成的候选字可以遍历整个有向图。即是,ABCD是所求

这里写图片描述

解题过程分析:

这里写图片描述

前期工作不再赘述,发现图中没有入度为0的结点,我们需要找既有入度又有出度的结点,C可以直接排除,而AB都是这样的结点,AB都可以遍历整个有向图,所以所求为A和B

范式


这里写图片描述

第一范式(1NF)

每个分量都是不可再分的数据项,若不是,只需删除可再分项

第二范式(2NF)

在第一范式的基础上,不存在部分依赖,单属性主键必定没有部分依赖

第三范式(3NF)

在第二范式的基础上没有传递依赖

BC范式(BCNF)

每个函数依赖的左边必须是候选键

模式分解


保持函数依赖分解

原关系的函数依赖全部保留为新的模式

无损(联接)分解

可以还原为原来的表

列表法

这里写图片描述
只要有一行全部为a则该分解为无损分解,适用于分解的表为多表,第一排为原表的属性,第一列为拆分后的关系模式,根据原有的函数依赖进行替换,用a示已有属性或者可以推出的属性,用b表示没有的属性

两表法

这里写图片描述

只适用于一分为二的情况,求分解后模式的、各自,若新依赖中有原有的依赖则为无损分解