数据库中的函数依赖,主码,候选码等的区别:点击打开链接

数据库中的范式:分为,1NF,2NF,3NF,BCNF,4NF。一般我们,我们设计数据库到第三范式就算完整的了。它们的关系如下:

第一范式:定义很多,其实说的就是列不可分。

如:

出厂日期

总额

数量

单价

在关系数据库中不能出现这种情况。

第二范式定义:若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。意思是非主属性完全依赖于码(候选码,主码),这里需要注意一下,是非主属性(候选码之外的属性),在前一篇文章已经说过。

如:

(学号, 系名, 课程号, 成绩) ∈1NF
(学号, 系名, 课程号, 成绩)不属于 2NF

在该关系模式中,学号+课程号是码,其他属性都是非主属性,但是只有成绩完全依赖于码,系名是部分依赖,因为学号就可以推出学生所在的系了。

第三范式定义它的定义。。不打了,太烦了。其实说的就是消除 传递依

。每一个非主属性都要直接依赖于码,不能传递依赖于码。如:在一个

学生表中,我们规定一个系的学生是住在同一个宿舍区域的,于是,该关

系模型为:

学生表(学号, 系名, 宿舍区)

在这关系中,学号为码,学号——>系名,学号——>宿舍区,但是,系名也能推出宿舍区,变成   学号——>系名——>宿舍区,即宿舍区传递依赖于学好了。

解决方法:拆分成两个表:

1(学号,系名),2(系名,宿舍区)

从上面我们可以看到,在两个表中我们可以看到,当两个表通过外键(1表的系名,2中系名为主健)关联后,另一个表的的信息(如2表中的宿舍区)不能再写到包含外键关系的表中(1表)。

BC范式:前面的三个范式是针对非主属性的,BC范式则是针对于码(什么是码,前篇文章说过),它要求每个函数的依赖关系中其决定因素都要包含码。

如:

在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。

           函数依赖:(S,J)→T,(S,T)→J, T→J 其中,(S,J)和(S,T)都是候选                 码。

可以看出STJ中,它是属于第三范式的,因为没有哪一组依赖关系中,非主属性传递或者部分 依赖于码,(记住是非主属性,是候选码以外的属性,T在候选码中),但是,它不属于BC范式,因为T是决定因素,T不包含码(候选码的任何一个真子集都不能叫候选码)。

多值依赖定义:第四范式需要掌握的一个内容。它说的就是设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关(想不到好的方法把它概括起来,哎!)

判定方法:对于任意关系中,如果存在两个元组(就是行),记为A,B,如果他们的某一属性X的值相等,那么我们交换它们另外的属性Y的值后,得到的新的两个元组,在表中是可以在原来的表中找到与它们相匹配的元组的。

如:

该表中的码为(C,T,B)我们可以找到第一和第四行,它们的属性X=物理是相同的,当我们交换Y=教员属性后得到(物理,王军,普通物理学)和(物理,李勇,普通 物理学),与原来的表相比,是一毛一样的。我们也可以交换第三行和第四行,得到(物理,王军,物理习题集)和(物理,李勇,普通物理学),与原来表相比,我们还是能找到与它们相匹配的元组的。

平凡多值依赖和非平凡的多值依赖:

若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖否则称X→→Y为非平凡的多值依赖。

多值依赖与函数依赖的区别:

1)若函数依赖X→Y在R(U)上成立,则对于任何Y' 属于Y均有X→Y' 成立

2)多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y' 属于Y有X→→Y' 成立,因为多值依赖中,其实就是一对一组,一个老师可能交多门课,所以不同老师可能有教相同的课,所以不能推出X→→Y' 成立。我们可以看出,如果把一组改为一个,实际上就是函数依赖,所以所函数依赖是多值依赖的特例,多值依赖不一定是函数依赖,但函数依赖一定是多值依赖。

多值依赖性质:

(1)多值依赖具有对称性

若X→→Y,则X→→Z,其中Z=U-X-Y

(2)多值依赖具有传递性

若X→→Y,Y→→Z, 则X→→Z –Y

(3)函数依赖是多值依赖的特殊情况。

若X→Y,则X→→Y。

(4)若X→→Y,X→→Z,则X→→YU Z。

(5)若X→→Y,X→→Z,则X→→Y∩Z。

(6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。

第四范式:1)不允许有非平凡且非函数依赖的多值依赖

                 2)允许的非平凡多值依赖是函数依赖

                 3)平凡的多值依赖属于第四范式

像,我们上面的图表(C,T,B),如果改成属于第四范式,就要分为:

                           CT(C, T) ∈ 4NF

             CB(C, B) ∈ 4NF

其中, C→→T, C→→B是平凡多值依赖。

总结:

目的:尽量消除插入、删除异常,修改复杂,数据冗余

数据库中的范式和多值依赖相关推荐

  1. Java学习笔记:数据库中的范式和反范式

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出率.优雅的数据库,否则可能会设计出 ...

  2. 数据库中的范式和反范式详解!

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出率.优雅的数据库,否则可能会设计出 ...

  3. Java学习之数据库中的范式和反范式

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出高效率.优雅的数据库,否则可能会设 ...

  4. 数据库中的范式——从1NF到BCNF

    范式 一张数据表的表结构所符合的某种设计标准的级别,范式越高,数据表的安全性越高,但查询速度越慢.数据库范式分为:1NF,2NF,3NF,BCNF,4NF,5NF,6NF:一般的数据库到3NF就可以满 ...

  5. 数据库中的范式:第一范式,第二范式,第三范式

    元组:表中的一行 码:表中的一列 候选码:可唯一标识,如通过(身份证号码)或者 (学校,班级,学号)可唯一标识一个人:主属性:候选码中出现过的属性 主码 : 也叫主键,从候选码中选出一个老大 外码也叫 ...

  6. 数据库中的范式 Normal Form(用最简单的语言描述!)

    今天暴雨,台风梅花袭击大连,不过还好,台风绕过大连了! 今天单位中午11 :45就放了. 下午闲来无事,上来学习学习. 1NF 每个字段都是最小单位,不可再分. 2NF 有主键.(每一条记录都能唯一标 ...

  7. 数据库中范式的理解1NF、2NF、3NF

    数据库中的范式作用就是保证设计的数据库具有良好的扩展性.常见的范式有三个:1NF.2NF.3NF: 1NF:就是保证数据库的原子性,即数据库中的各个列不可再分. 2NF:就是要求各个非关键字对主键完全 ...

  8. 数据库中的约束和三大范式

    一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我 ...

  9. mysql数据库五大约束_数据库基础知识:数据库中的约束和三大范式

    一.数据库中的范式: 范式,英文名称是NormalForm,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计 ...

最新文章

  1. Adobe Achemy入门指南(二)
  2. Linux防火墙iptables学习
  3. Oracle中根据表明获取对应表触发器名称
  4. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
  5. cadence软件_IC苦逼搬运工入职之——Cadence基本操作(1)
  6. PHP 内存泄漏分析定位
  7. GCC 编译时优化某一个或几个函数或者不优化某一个或几个函数
  8. weblogic与sitemesh乱码问题
  9. CSS原理解析之模型篇
  10. 32位PLSQL Developer无法登录Oracle 11g 64位
  11. 【转】ABP源码分析四十三:ZERO的本地化
  12. Java番外篇2——jdk8新特性
  13. day16- django
  14. 吃冻梨对人会有什么好处?
  15. C 标准库—— assert.h
  16. Swift高仿喜马拉雅APP之一Charles抓包、图片资源获取等
  17. 2019python二级真题_2019年3月二级python真题,上岸必备!
  18. QQ好友不在线也可发送自定义表情(转)
  19. 浅论cherry机械键盘与其在war3中的表现
  20. java计算器取负数_JAVA-复数计算器

热门文章

  1. C语言结构体的作用、定义、使用方法以及实例
  2. Go语言URL解码方案实践
  3. uniapp一键复制功能效果demo(整理)
  4. 回声消除AEC算法(含Matlab代码)
  5. 区块链政策区域特征分明 产业园区渐成聚集效应
  6. 美国教育部新规生效,意义深远
  7. IEDA跑若依后台跑不出来
  8. JS实现全屏展示的具体方法
  9. python requests+json爬取ajax加载 爱彼迎深圳所有房源
  10. 裁员降本,扭转颓势!通用汽车吹响智能电动「中国集结号」