【数据库学习笔记】1:关系型数据库规范化设计中的函数依赖和范式
数据库规范化设计包含的方面①数据依赖(核心):数据之间的联系②范式:关系模型的标准③模式设计方法:规范化的方法关系的五元组表示R<U,D,Dom,F>即关系名称<属性集,域,属性集和域的映射,函数依赖集>。属性集U:包含现实问题的所有属性。域D:属性的取值。属性集和域的映射Dom:每个属性取什么域。函数依赖集F:属性和属性间的联系。...
数据库规范化设计包含的方面
①数据依赖(核心):数据之间的联系
②范式:关系模型的标准
③模式设计方法:规范化的方法
关系的五元组表示
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,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范式的分解可能会丢失某些函数依赖,这称为不保持函数依赖的分解,这样的分解会丢失某些语义。
更多推荐
所有评论(0)