【知识碎片】5:数据库规范化设计中的函数依赖和范式
2018-03-28 11:14
369 查看
数据库规范化设计
包含的方面
①数据依赖(核心):数据之间的联系②范式:关系模型的标准
③模式设计方法:规范化的方法
关系的五元组表示
R<U,D,Dom,F>即
关系名称<属性集,域,属性集和域的映射,函数依赖集>。
属性集U:包含现实问题的所有属性。
域D:属性的取值。
属性集和域的映射Dom:每个属性取什么域。
函数依赖集F:属性和属性间的联系。
简化的三元组表示
R<U,F>即
关系名称<属性集,函数依赖集>将精力着重在函数依赖(一种最重要的数据依赖)上。
关系模型的内涵和外延
内涵(Intension):即R,即
关系模式,即表的表头,与数据无关,仅是关系的结构。
外延(Extension):即
r∈R,即
关系,即具体的一张表。
内涵(关系模式)
①对数据的定义②对数据完整性约束的定义
[1]静态约束:数据依赖,主键设计,值域设计。
[2]动态约束:各种操作(插入,删除,修改)对关系值的影响。
泛关系和泛关系模式
泛关系:所研究的问题中的所有属性都在一张表中,这张具体的表为泛关系。泛关系模式:所研究的问题的所有属性组成的关系模式
R(U)。
关系模式的冗余和异常
①数据冗余指同一个数据在系统中多次重复出现。占用更多的存储空间并非大问题,主要问题在于数据冗余容易带来数据不一致的问题,影响一致性。
②操作异常
并非一定由数据冗余引起!
[1]修改异常:往往由数据冗余引起。
如(SNO,CNO,TNAME,…)中修改某门课的老师时需要修改所有选了该课的学生的教师。
[2]插入异常:需要破坏实体完整性才能实现的插入。
如只有(SNO,CNO,TNAME,…)表时,需要插入没有学生选修的一门课时,主属性之一的SNO却不能为空。
[3]删除异常:往往由数据间的依赖关系引起。
如只有(SNO,
4000
CNO,TNAME,…)表时,需要删除某个学生选的某个课,却需要将课程号和教师名字段一起删除。试想如果该课程只有这一位学生选了,该删除操作将使得数据库中无法表示”这位老师的这门课开课了”这件事。
函数依赖(FD)
定义对于任意的r属于R,对于任意的t和s属于r中的元组,t[X]=s[X]蕴含(则)t[Y]=s[Y],那么FD X->Y在关系模式R(U)中成立。称X决定Y,Y依赖于X。
FD的书写形式
形式为
属性集合 蕴含 属性,例如
(SNO,CNO)->GRADE。
FD的分类
①完全函数依赖写为
X-f->Y,X的任何真子集都不能决定Y。对于X和Y组成的关系模式,X一定是一组候选键。
②部分函数依赖
写为
X-P->Y,即存在X的真子集可以决定Y。对于X和Y组成的关系模式,X一定是一组超键。
③传递依赖
是指
X->Y,
Y->Z又有
Y-/->X(Y不能决定X)的
X->Z函数依赖。
两个与FD相关的判断
①不在函数依赖右边出现的属性,一定出现在候选键中。②只在函数依赖右边出现的属性,一定不在候选键中。
关系模式的范式
通过对关系进行拆分,来满足更严格的关系范式。如果数据库模式中每个模式都满足某一范式,则整个数据库模式为满足该范式的数据库模式。
①第一范式1NF
关系模式R的每个关系r的属性值都是不可再分的原子值。
②第二范式2NF
在1NF的基础上消除非主属性对候选键的部分依赖,即不存在非主属性部分依赖于候选键。
③第三范式3NF
在1NF的基础上消除非主属性对候选键的传递依赖,即不存在非主属性传递依赖于候选键。
3NF一定满足2NF,反证:若R不是2NF,则一定存在候选键K、非主属性A,使得
K-P->A,即存在K的子属性集k’,使得
K'->A,同时又有
K->K',同时又有
K'-/->K,所以
K->A是传递依赖,这和3NF矛盾。因此不是2NF一定不是3NF,即推出是3NF一定是2NF。
④BC范式BCNF
在3NF的基础上消除主属性对候选键的部分依赖和传递依赖。用一句话概括为所有的决定因素都包含码,即所有的函数依赖的左边都包含候选键。
使关系模式满足BC范式的分解可能会丢失某些函数依赖,这称为不保持函数依赖的分解,这样的分解会丢失某些语义。
相关文章推荐
- 数据库的设计范式知识
- 数据库设计之规范化--------几种范式详解
- 使用sqlite3(数据库知识)的接口函数完成一个用户注册功能模块设计 要封装成函数,在独立的main中调用测试
- 数据库范式及函数依赖
- 关系数据库规范化理论 函数依赖与范式理论
- 关系型数据库、范式、函数依赖
- 关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式)(转)
- 数据库设计 第一范式 二 三 INF 2NF 3NF 区别 详解 传递依赖
- 关系数据库设计理论(二)函数依赖的规则
- 关系数据库理论:范式判断、函数依赖、无损分解、正则覆盖
- 【转】数据库基本知识:(二)数据库设计三大范式
- 关系数据库设计理论(2) 函数依赖
- 【数据库】函数依赖和规范化
- 范式,数据库规范化,闭包,最小依赖,模式分解
- 关系数据库规范化理论 函数依赖与范式理论
- 数据库设计 范式 规范化实例
- Oracle基础知识笔记(16) 数据库设计范式
- 数据库设计模式规范化----范式
- 规范化理论-函数依赖-范式-简单粗暴
- 数据库的设计范式知识