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

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

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

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

 

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

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

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

 

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

 

假设存在关系:

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

主键:学号+课程号

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

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

 

完全函数依赖分析

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

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

 

部分函数依赖分析

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

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

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

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

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

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

 

传递函数依赖分析

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

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

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

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

 

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

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

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

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

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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql的慢查询日志怎么查看_mysql慢查询优化

    mysql的慢查询日志怎么查看_mysql慢查询优化MySQL数据库,慢查询日志

  • 网络爬虫之动态内容爬取

    根据联合国网站可访问性审计报告,73%的主流网站都在其重要功能中依赖JavaScript。和单页面应用的简单表单事件不通,使用JavaScript时,不再是加载后立即下载所有页面内容。这样会造成许多网

    2021年12月29日
  • javascript中void(0);用法及常见问题解析

    javascript中void(0);用法及常见问题解析转载这篇文章使用过ajax的朋友经常会见到这样的代码:here,这里面的void是一个操作符,该操作符指定要计算一个表达式但是不返回值。javascript:void(0)在某些情况下会有浏览器不兼容的bug。下面我们先来看下javascript:void(0)的基础介绍及用法,然后再来看使用它会出现什么问题,该怎么解决。提示:在学习一下内容之前,你可以先通过javascript:vo…

  • linux系统抓包工具_kali 抓包

    linux系统抓包工具_kali 抓包在使用ECS服务器时,发现网络流量异常,或者发现服务器有异常向外发包行为,可使用抓包工具抓取网络流量包,分析流量包的特征,看看这些流量包来自哪里,或者发向哪里了。根据这些信息,可进一步诊断异常。本文介绍Linux系统,使用tcpdump工具分析流量的方法。TcpDump可将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、not、or等逻…

  • Nginx实现动静分离「建议收藏」

    Nginx实现动静分离「建议收藏」前言之前项目中需要用到百度地图,由于项目的特殊环境,所以需要下载百度的离线地图。我们知道,地图的展示其实就是一张张地图的图片展示,我们在网页上浏览查找位置的时候,其实都是在发送图片请求。这些图片请求相对于jsp,servlet来说就是所谓的静态资源,当然服务中的静态资源不仅仅只是图片,像页面样式css文件,js脚本文件这些都可以看着是静态资源。tomcat既可以静态资源也可以处理动态资源。但是…

  • easyui,layui和 vue.js的区别

    easyui,layui和 vue.js的区别easyui,layui和 vue.js的区别

发表回复

您的电子邮箱地址不会被公开。

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