说到部分函数依赖,传递函数依赖,必须谈到2个概念,“非主属性”和“主属性”。

主属性:组成候选码的属性,就是主属性。例如,属性集{学号,姓名,身份证号码,联系电话},学号是主键。学号,身份证号码都是候选码,都属于主属性。可以看出,主键不一定包含所有的主属性。

非主属性:除去主属性,就是非主属性。示例中,姓名,联系电话,是非主属性。

部分函数依赖与传递函数依赖,网上有很多,但大多都是概念,不好理解。我这里给出1个比较容易理解的定义:

部分函数依赖:当1个关系模式中主键由2个及以上的属性组成时,非主属性只依赖于其中1个主属性,就是部分函数依赖。举例,属性集{学号,姓名,联系电话,教师编号,教师姓名},主键是2个主属性(学号+教师号),教师编号决定了教师姓名,所以教师姓名依赖于教师编号,不依赖于学号,教师姓名只依赖于主键的其中1个主属性,所以就是部分函数依赖。

与部分函数依赖相反的是“完全函数依赖”。完全函数依赖是:非主属性完全依赖于主属性。举例1,属性集{学号,课程号,成绩},学号和课程号是主键,学号和课程号一起决定成绩,所以成绩完全依赖于学号和课程号,就是完全依赖。举例2,属性集{学号,姓名,联系电话},学号是主键,学号决定姓名,学号决定联系电话,姓名依赖学号,联系电话依赖学号,也是完全依赖。

传递函数依赖:当关系模式中,出现非主属性决定非主属性时,就是传递函数依赖。举例,属性集{学号,姓名,学校编号,学校名称},主键是学号,学号决定学校编号,学校编号决定学校名称,且学校编号、学校名称都属于非主属性,那么就是传递函数依赖。

范式判断,我就不说那些课本概念了,我做一下通俗易懂的定义:

1NF:  属性不可再分(数据库表中的每一列都是不可分割的基本数据项)

2NF:满足1NF且非主属性均完全函数依赖于候选键。

3NF:满足2NF且非主属性没有传递依赖于候选键。

BCNF:满足3NF、且主属性完全函数依赖于候选键、且主属性没有传递依赖与候选键。

2NF、3NF,解决是非属性对候选键的依赖问题。

BCNF,解决的是主属性对候选键的依赖问题。

数据库部分函数依赖、传递函数依赖的区别以及范式判断相关推荐

  1. 数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别

    数据库 部分函数依赖 完全函数依赖  传递函数依赖  第一范式.第二范式.第三范式.BCNF范式区别 在理解函数依赖之前,先来看一下函数依赖分析: 在关系中,包括在任何候选码中的属性称为主属性:不包括 ...

  2. 数据库逻辑设计 完全函数依赖、部分函数依赖、传递函数依赖、码、候选码、主码、范式

    数据库逻辑设计 R:关系名 U:组成该关系的属性名集合 D∶属性组U中属性所来自的域 DOM:属性 到域的映射 F:属性组U上的一组数据依赖 由于D.DOM对模式设计的关系不大,这里把关系模式简化为一 ...

  3. 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别

    要讲清楚范式,就先讲讲几个名词的含义吧: 部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X'是X的真子集,存在X'→Y,则称Y部分函数依赖于X. 举个例子:学生基本信息表R中(学号,身份 ...

  4. 关系数据理论(回顾关系模式、数据依赖、不规范的关系模式存在的问题、 函数依赖、非平凡函数依赖/平凡函数依赖、完全函数依赖/部分函数依赖定义、传递函数依赖,码)

    关系数据库的规范化理论是数据库逻辑设计的一个有力工具. 1.回顾关系模式         第2章中已经讲过,一个关系模式应当是一个五元组:                 R(U,D,DOM,F)   ...

  5. 传递函数依赖与第三范式

    基本概念 1.数据依赖 在计算机科学中,数据依赖是指一种状态,当程序结构导致数据引用之前处理过的数据时的状态.其中最重要的是函数依赖和多值依赖. 2.函数依赖 设X,Y是关系R的两个属性集合,当任何时 ...

  6. 数据库的部分依赖,完全依赖,传递依赖以及三种范式总结

    关系数据库理论也称为关系的规范化理论,是数据库的理论基础,同时也是数据库设计的有力工具. 规范化,数据依赖的公理系统和模式的分解是本科阶段要了解的内容,而后两者在研究生学习阶段需要加深巩固,所以对这几 ...

  7. 主码求法,范式判断,最小函数依赖求法

    发现在模式分解这里还是有网络上的资源蛮少,讲这个东西的人蛮少.而且大家发表的文章,几乎是一模一样的,说的话,举得的例子.所以,写一个尽量让大家都能理解的方法.我现在就说一哈,书本上的定义,我自己的理解 ...

  8. Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net...

    Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net 1. -catalog与schema的设计区别1 ...

  9. Database:Database数据库的简介、类型及其区别(关系数据库VS非关系型数据库)、案例应用之详细攻略

    Database:Database数据库的简介.类型及其区别(关系数据库VS非关系型数据库).案例应用之详细攻略 目录 Database数据库的简介 1.掌握数据库的方法-学会sql语言进而学会增.删 ...

最新文章

  1. php 接口使用场景,接口使用场景、trait基本功能
  2. C语言学习之用指针处理,输入a和 b两个整数,按先大后小的顺序输出a和 b
  3. Android 项目中常用到的第三方组件
  4. ASP.NET实现二维码(QRCode)的创建和读取
  5. java kryo register_java相关:Kryo框架使用方法代码示例
  6. java 实体类 代码重复_java – JPA两个单向@OneToMany关系到同一个实体导致重复输入...
  7. 开源协议概谈[转载]
  8. Android ImageView(插入图片)属性详解
  9. 极具破坏力的Linux系统命令
  10. Windows xp多国语言包
  11. 石油化工行业SCM供应链管理系统开发,优化供应链平台运营模式
  12. Python常用中文字体对应名称
  13. Windows 10 网络和Internet设置中WLAN选项消失
  14. ERC-3525 通过倒计时 SFT 是什么?有什么用?
  15. 【Docker】自定义dockerfile构建容器镜像并发布
  16. 分支定界法需要注意的是什么
  17. HOW TO:设置默认打印机
  18. BurpSuite插件
  19. 说说星河湾董事长黄文仔的初心与家国情怀
  20. 唯快不破,2019最快的固态硬盘(SSD)大盘点,绝对值得收藏

热门文章

  1. C语言中的sprint函数,求sprintf函数的详解
  2. 云和恩墨战略入股红象云腾(REDOOP),红象云腾发展进入快车道
  3. PCIe各版本结构剖析
  4. windows上删除不了文件
  5. Linux访问远程FTP服务器并下载文件
  6. 易语言从html中获取验证码,易语言过腾讯滑块验证码模块源码和调用例程
  7. cad模型轻量化_保持外观的CAD模型轻量化技术
  8. 利用DGL中的消息传递API手搭GCN实现节点分类
  9. 人工智能python怎么念_5分钟战胜人工智能+Python字符编码
  10. Consignment 寄售库存