数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别_完全函数依赖和部分函数依赖是一样的-程序员宅基地

技术标签: 完全函数依赖  数据库范式  传递函数依赖  第一范式、第二范式、第三范式、BCNF范式  部分函数依赖  

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

 

在理解函数依赖之前,先来看一下函数依赖分析:

在关系中,包括在任何候选码中的属性称为主属性;不包括在任何候选码中的属性称为非主属性

函数依赖只分析关系中的非主属性对主属性之间的依赖关系,并不分析主属性对主键(码)的依赖关系。

 

具体关于部分函数依赖和完全函数依赖的定义,网上有很多,但大多都是概念,这里我从例子入手来分析,使大家更好的掌握部分函数依赖、完全函数依赖和传递函数依赖。

 

假设存在关系:

R(学号,姓名,性别,班级,班主任,课程号,课程名,学时数,成绩)

主键:学号+课程号

主属性:{学号,课程号}

非主属性有:{姓名,性别,班级,班主任,课程名,学时数,成绩}

 

完全函数依赖分析

成绩依赖于学号和课程号两个字段的组合;但只知道学号无法确定成绩,同理只知道课程号也无法确定成绩;只有学号和课程号组合在一起才能标识哪个学生哪门课程的成绩;

因此(学号,课程号)---->成绩  是“完全函数依赖”。

 


部分函数依赖分析

姓名、性别和班级三个属性只依赖于主键中的学号,与“课程号”无关。

因此(学号,课程号)---->姓名是“部分函数依赖”

(学号,课程号)---->性别是“部分函数依赖”

(学号,课程号)----->班级是“部分函数依赖”

课程名和学时数只依赖于课程号,

因此(学号,课程号)----->课程名是“部分函数依赖”

 

传递函数依赖分析

班主任依赖于班级,与学号无关,与课程号也无关

又因班级依赖于学号所以班主任间接依赖于学号

因此,(学号,课程号)----->班主任是传递函数依赖

 

范式这里就不说课本、网上那些晦涩难懂的概念了。

1NF:无重复的列(数据库表中的每一列都是不可分割的基本数据项)

2NF:满足1NF且非主键列都完全函数依赖于主键。

3NF:满足2NF且非主属性列都不传递依赖于主键。

BCNF:满足3NF且不允许主键的一部分被另一部分或其它部分所决定(即满足3范式,并且主属性之间没有依赖关系)。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mind_programmonkey/article/details/86001503

智能推荐

计算机科学创新大赛,全国青少年科技创新大赛-程序员宅基地

文章浏览阅读761次。全国青少年科技创新大赛China Adolescents Science & Technology Innovation Contest翰林青创赛战绩2020年计算机(选送全国)一等奖 1名计算机二等奖 1名化学二等奖 1名三等奖若干2019年数学一等奖 1名二等奖 1名三等奖若干项目介绍全国青少年科技创新大赛(China Adolescents Science & Tech..._青少年科技创新大赛计算机科学与信息技术

STM32CUBEMX学习笔记——陶晶驰串口屏中断接收数据_陶晶瓷串口屏怎么接收-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏26次。网上很多串口屏的开发都是基于标准库开发的,我本人接触到的开发模式是CUBEMX,两种开发环境导致很多资料之间有点割裂,因此我将自己之前学习标准库的开发方式利用CUBEMX实现的方法写在这,防止自己忘记。开发环境还是之前做的项目,以一个按钮为例通过这个按钮学习串口屏的通讯 。b4和b6还需要按下一秒后连续改变h1和n1的数值,因此顺便回顾一下如何实现:b4的按下事件中加入定时器,如果连续1000ms就进入使能:tm2.tim=1000tm2.en=1使能后就在定时器模块中:t_陶晶瓷串口屏怎么接收

web前端培训分享JavaScript学习笔记分支结构_if(ture)前端-程序员宅基地

文章浏览阅读169次。web前端培训分享JavaScript学习笔记分支结构,我们的 js 代码都是顺序执行的(从上到下)逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码IF 条件分支结构if 语句· 通过一个 if 语句来决定代码执行与否a· 语法: if (条件) { 要执行的代码 }· 通过 () 里面的条件是否成立来决定 {} 里面的代码是否执行// 条件为 true 的时候执行 {} 里面的代码if (true) {alert(‘因为条件是 true,我会执行’)}// 条件为 false 的_if(ture)前端

Java ExecutorService四种线程池的例子与说明_java executorservice 多线程 例子-程序员宅基地

文章浏览阅读160次。一、为什么使用线程池使用new Thread执行多个线程有如下一些问题: 每次new Thread新建对象性能差。 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的四种线程池的好处在于: 重用存在的线程,减少对象创建、消亡的..._java executorservice 多线程 例子

高级映射(一):一对一、一对多,多对多查询总结_购物车和商品是一对多还是多对多-程序员宅基地

文章浏览阅读2w次,点赞2次,收藏18次。多表之间的数据交互其实一对一和一对多映射,在前面的配置中已经接触到,我没在日志里直接说明,是因为想要在之后写一篇总结日志(就是本篇),总结这些高级映射的配置。例如一对一查询在关联的嵌套结果集查询中就涉及到,一对多查询则在这个基础上再加上一个或多个嵌套结果集,它们可以是一个实体类,或者是一个集合。多对多查询稍微有点复杂,举个例子来说,一个商城管理系统中,一名顾客在一个购物清单中可以有多件商品,而..._购物车和商品是一对多还是多对多

值得关注的 CI/CD 主要趋势-程序员宅基地

文章浏览阅读909次,点赞10次,收藏9次。CI/CD 是那些想要加速应用程序交付、发布周期、控制成本并降低开发风险的人的首选。适应用户反馈、提高对市场变化和业务优先级的响应能力以及提升竞争力取决于应用程序质量,CI/CD 成为提高开发速度的宝贵推动者。

随便推点

Linux里的防火墙:netfilter简介与Iptables的使用(上)_netfilter (policy drop)-程序员宅基地

文章浏览阅读3.6k次。什么是防火墙?防火墙可以是像360,金山,卡巴斯基等软件,也可以是硬件,我们来用OSI七层模型来划分的话。那么分为:1. 三层防火墙:它只负责检查数据从进入到第三层,还有从第三层流出,是否符合它规定的条件,如果是,那么就放行,反之就拦截。2.七成防火墙:它_netfilter (policy drop)

你了解 JDK 8 Stream 数据流效率吗?千万级数据量性能如何?-程序员宅基地

文章浏览阅读921次,点赞9次,收藏20次。当数据源中的数据上了流水线后,这个过程对数据进行的所有操作都称为“中间操作”;中间操作仍然会返回一个流对象,因此多个中间操作可以串连起来形成一个流水线;stream 提供了多种类型的中间操作,如 filter、distinct、map、sorted 等等;当所有的中间操作完成后,若要将数据从流水线上拿下来,则需要执行终端操作;stream 对于终端操作,可以直接提供一个中间操作的结果,或者将结果转换为特定的 collection、array、String 等;

2023最新软件测试学习思维导图(从小白到大师进阶之路)_测试进阶路线图-程序员宅基地

文章浏览阅读2.7k次,点赞6次,收藏41次。2023最新软件测试学习思维导图_测试进阶路线图

Zabbix监控系统与部署Zabbix5.0监控(系列操作完整版)-程序员宅基地

文章浏览阅读4.9k次,点赞17次,收藏38次。Zabbix监控系统的理论介绍与部署安装Zabbix5.0服务端、客户端、自定义监控项模板、设置邮件报警、自动发现、自动注册、代理服务器、SNMP监控实操_zabbix监控系统

在MyEclipse中将项目部署Tomcat_myeclipse部署web项目到tomcat-程序员宅基地

文章浏览阅读2k次。(1)配置Server(2)选择Tomcat 7.0 的解压目录。点击apply。点击ok即可。5.部署到Tomcat点击finish即可。然后ok。6.启动Tomcat,_myeclipse部署web项目到tomcat

Linux系统部署可视化数据多维表格APITable并实现无公网IP远程协同办公-程序员宅基地

文章浏览阅读7.9k次,点赞105次,收藏108次。Linux系统部署可视化数据多维表格APITable并实现无公网IP远程协同办公

推荐文章

热门文章

相关标签