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

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

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

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

 

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

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

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

 

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

 

假设存在关系:

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

主键:学号+课程号

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

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

 

完全函数依赖分析

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

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

 

部分函数依赖分析

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

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

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

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

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

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

 

传递函数依赖分析

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

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

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

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

 

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

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

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

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

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

 

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

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

(0)
上一篇 2022年5月23日 下午1:20
下一篇 2022年5月23日 下午1:20


相关推荐

  • KeyPal硬件钱包[通俗易懂]

    KeyPal硬件钱包[通俗易懂]KeyPal-一款多场景、易操作、全方位保护多链数字资产的硬件钱包以下文章来源于KeyPal硬件钱包,作者KeyPal2021年8月9日,TokenPocket发布了第一款服务于区块链领域的硬件钱包产品——KeyPal。KeyPal硬件钱包是TokenPocket基于开源项目自行深度研发出的一款多链的、多重认证、多方位保护用户数字资产的硬件钱包。KeyPal具有诸多亮点,从安全性、外观表现、材质用料、智能应用和公链支持等各方面都有不错的表现,是当前市面上最具性价比的一款硬件钱包。下面就..

    2022年8月30日
    4
  • OPC协议测试

    OPC协议测试OPC 全称是 ObjectLinkin OLE forProcessCo 它的出现为基于 Windows 的应用程序和现场过程控制应用建立了桥梁 在过去 为了存取现场设备的数据信息 每一个应用软件开发商都需要编写专用的接口函数 由于现场设备的种类繁多 且产品的不断升级 往往给用户和软件开发商带来了巨大的工作负担 作用 解决软件和硬件之间的联系 KepServer 与 PLC 直接建立了连接 走的是 S7 协议 本质还是 TCP IP 协议 在这个过程中 KepServer

    2026年3月18日
    2
  • 最全jupyter快捷键

    最全jupyter快捷键将鼠标点击到 jupyter 命令行空白处 然后点击如下快捷键 实现对应的功能 F 查找并且替换 进入编辑模式 F 打开命令配置 P 打开命令配置 P 打开命令配置 运行代码块 选择下面的代码块 运行选中的代码块 运行选中的代码块 运行代码块并且在下面插入代码块 Y 把代码块变成代码 M 把代码块变成 MarkdownR 清除代码块格式 1 把代码块变成标题 12 把代码块变成标题 23 把代码块变成标题 34 把代码块变成

    2026年3月18日
    2
  • 什么是web services?

    什么是web services?WebServices 的简单理解我们可以这样来理解什么是 WebServices 它即是一种网络服务 当你的系统完成一个通用的功能以后 如果你想让别人使用你的功能的话 那么你就可以发布成为 WebServices 服务 别人就可以通过网络远程调用到你的服务接口

    2026年3月18日
    2
  • Kimi Claw 实测:OpenClaw 热潮之下,自动化 AI 仍是拓荒期|AI 上新

    Kimi Claw 实测:OpenClaw 热潮之下,自动化 AI 仍是拓荒期|AI 上新

    2026年3月13日
    2
  • 二叉树的前中后和层序遍历详细图解(递归和非递归写法)「建议收藏」

    二叉树的前中后和层序遍历详细图解(递归和非递归写法)「建议收藏」我家门前有两棵树,一棵是二叉树,另一棵也是二叉树。遍历一棵二叉树常用的有四种方法,前序(PreOrder)、中序(InOrder)、后序(PastOrder)还有层序(LevelOrder)。前中后序三种遍历方式都是以根节点相对于它的左右孩子的访问顺序定义的。例如根->左->右便是前序遍历,左->根->右便是中序遍历,左->右->根…

    2022年5月22日
    39

发表回复

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

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