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

数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别数据库部分函数依赖完全函数依赖传递函数依赖第一范式、第二范式、第三范式、BCNF范式区别在理解函数依赖之前,先来看一下函数依赖分析:在关系中,包括在任何候选码中的属性称为主属性;不包括在任何候选码中的属性称为非主属性。函数依赖只分析关系中的非主属性对主属性之间的依赖关系,并不分析主属性对主键(码)的依赖关系。具体关于部分函数依赖和完全函数依赖的定义,网上有很…

大家好,又见面了,我是你们的朋友全栈君。

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

 

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

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

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

 

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

 

假设存在关系:

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

主键:学号+课程号

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

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

 

完全函数依赖分析

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

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

 

部分函数依赖分析

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

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

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

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

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

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

 

传递函数依赖分析

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

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

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

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

 

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

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

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

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142588.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时序数据 mysql存储_【时序数据库】时序数据库介绍

    时序数据 mysql存储_【时序数据库】时序数据库介绍1.基本概念时序数据库(TimeSeriesDatabase)是用于存储和管理时间序列数据的专业化数据库。时序数据库特别适用于物联网设备监控和互联网业务监控场景。下面介绍下时序数据库的一些基本概念(不同的时序数据库称呼略有不同)。1.1度量(metric)监测数据的指标,例如风力和温度。相当于关系型数据库中的table。1.2标签(tag)指标项监测针对的具体对象,属于指定度量下的数据子类…

    2022年9月28日
    0
  • 第一范式,第二范式,第三范式,BCNF范式理解

    第一范式,第二范式,第三范式,BCNF范式理解第一范式、第二范式、第三范式参考了https://www.zhihu.com/question/24696366https://www.cnblogs.com/lca1826/p/6601395.html基础知识实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也…

    2022年5月10日
    35
  • KindEditor用法介绍「建议收藏」

    KindEditor用法介绍「建议收藏」KindEditor是一套很方便的html编译器插件。在这里做一个简单的使用介绍。首先在官网上下载最新的KindEditor文件(里面有jsp,asp等不同版本文件夹,可以删掉你不需要的版本),把

    2022年7月3日
    160
  • 小米路由器3 opkg安装

    小米路由器3 opkg安装小米路由器3opkg安装1、复制opkg到小米路由的/data路径下。下载地址:http://sangbo.pub/soft/opkg/opkg2、修改/etc/opkg.conf文件,替换为以下内容:src/gzattitude_adjustment_basehttp://openwrt.sangbo.pub/barrier_breaker/14.07/ramips/mt7620a/

    2022年6月3日
    43
  • Eclipse配置Maven详细教程[通俗易懂]

    Eclipse配置Maven详细教程[通俗易懂]一.使用eclipse自带的maven插件首先,现在下载EclipseMars之后的版本,基本上都自带了maven插件,无需自己再安装maven.有几个注意点:1.默认的本地仓库的目录是在C:\Users\viruser.v-desktop\.m2\repository\如果使用系统默认的maven插件,那么建议还是修改下本地仓库的路径,这样节省C盘空间2.使用的maven版…

    2022年5月25日
    39
  • Java定时器(Timer)「建议收藏」

    Java定时器(Timer)「建议收藏」1.介绍Timer和TimerTask是用于在后台线程中调度任务的javautil类。简单地说,TimerTask是要执行的任务,Timer是调度器。2.调度一次性任务2.1指定延迟后执行让我们从简单地在定时器的帮助下运行单个任务开始:@TestpublicvoidgivenUsingTimer_whenSchedulingTaskOnce_thenCorrect(){TimerTasktask=newTimerTask(){publicvoid

    2022年7月7日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号