1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖

符合3NF一定符合2NF、一定符合1IF

简单区分。2NF不存在部分函数依赖,3NF不存在传递函数依赖

第一范式1NF

  • 符合1NF的关系中的每个属性都不可再分。

第二范式2NF

  • 消除了1NF非主属性对主属性的部分函数依赖。

函数依赖:在属性(属性组)X的值确定的情况下,必定能够确定属性Y的值。
例如:学号–>班主任。(学号,课程名称)–>分数。

完全函数依赖:在一张表中,如果X–>Y,对于X的任意子集都不能确定Y。
例如(学号,课程)–>分数。单独的学号、和课程都不能确定分数。一个学号多个课程分成绩,一个课程对应多个同学的成绩。只能由学号和课程共同确定具体的分数。

部分函数依赖:Y函数依赖X函数,但是Y函数不完全依赖X函数。就称函数Y部分依赖函数X。
例如:(学号,课程名)–>姓名。一个学号对应一个学生姓名,但是课程名并不能对应具体的学生。

传递函数依赖:Z函数依赖Y函数,Y函数依赖X函数(Y不包含X,X不依赖Y前提)。Z函数依赖X函数。

判断是否是2NF:查看表中是否存在非主属性对于码的部分函数依赖。不存在部分函数依赖就是2NF

判断方法:

  • 1、找出数据表所有的码
  • 2、根据码找出主属性
  • 3、找出非主属性
  • 4、查看非主属性对码的部分函数依赖

找码的过程:
1、查看一个单一属性,其他属性值是否都能确定
2、查看两个属性:其他属性值能否全部确定
3、…

例如:(学号,课名,姓名,系名,系主任,分数)。
单一的学号不能确定分数,分数的确定需要学号和课程。

码(学号,课名)

(学号,课名)–>系名.单独的学号就可以确定。部分依赖

改为2NF,消除部分依赖
将分数搞出去,选课(课程名,学号,分数)
学生(学号,姓名,系名,系主任)

选课的码(课程名,学号)–>分数
学生的码(学号)–> 只有一个主属性,不存在部分函数依赖

第三范式:3NF

  • 消除了非主属性对码的传递函数依赖。

选课表(课程名,学号,分数)不存在传递函数依赖。(课程名,学号)为主码,传递也需要另外两个属性。

学生表中,学号–>系名。系名–>系主任。存在传递函数依赖。不符合3NF。
消除这个传递函数依赖
系(系名、系主任)
学生(学号,姓名,系名)

1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)相关推荐

  1. 数据库范式讲解(1NF、2NF、3NF、BCNF)

    数据库范式讲解(1NF.2NF.3NF.BCNF) R-关系模式 create schema <模式名> authorization <用户名> r-关系 U-属性集 F-为属 ...

  2. 字段缺失_区分Protobuf 3中缺失值和默认值

    来自公众号:新世界杂货铺 这两天翻了翻以前的项目,发现不同项目中关于Protobuf 3缺失值和默认值的区分居然有好几种实现.今天笔者冷饭新炒,结合项目中的实现以及切身经验共总结出如下六种方案. 增加 ...

  3. 关于“指针的指针”的认识(值传递、指针传递区分)

    [摘要]对于C语言的参数传递通常都是值传递,当传传递一个指针给函数的时,其实质上还是值传递.我们可以看以下常见的面试题: #include <stdio.h> #include <s ...

  4. 区分一下驻点和极值点以及最值-一元

    驻点和极值点 驻点和极值点的区别: 如果函数不可导的话那么他们没有关系 如果函数可导的话,那么驻点不一定是极值点,但是极值点一定是驻点 这里说明一下就是极值点要不就是不可导点要不就是驻点,如果函数可导 ...

  5. 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂

    如果你基本定义都理解了,建议直接跳到例题部分. 本篇讲的是范式及例题,如果函数依赖还不知道,请移步至另外一篇讲函数依赖的博客: 数据库原理:通过例题弄懂函数依赖,并附带题目_Allow-er的博客-C ...

  6. 数据库1NF,2NF,3NF,BCNF总结

    上述几个范式的定义自己曾理解了很多遍,但总是容易忘记,决定写个总结,忘了就来看看. 1NF:通俗的将是表的每一列(数据项)都是不可再分的一部分 2NF:在1NF的基础上,所有非主属性对码完全函数依赖( ...

  7. 第一范式(1NF)、第二范式(2NF)和第三范式(3NF)

    第一范式(1NF):   列1唯一确定列2, 列3, 列4, ...,即列2, 列3, 列4, ...不能再分裂出其它列.   假设有关系模式列1: 订单名; 列2: 商品.一个订单下可以有多个商品, ...

  8. [数据库原理] 理清数据库范式(1NF、2NF、3NF、BCNF)

    文章目录 数据库范式概念 第一范式(1NF) 第二范式(2NF) 不满足第2范式可能出现的问题 第三范式(3NF) NC范式(BCNF) 总结(考试要考) 数据库范式概念 数据库范式:Normal f ...

  9. 三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别

    第一范式(1NF):   列1唯一确定列2, 列3, 列4, ...,即列2, 列3, 列4, ...不能再分裂出其它列.   假设有关系模式列1: 订单名; 列2: 商品.一个订单下可以有多个商品, ...

最新文章

  1. ICCV2021|一种用于解决点云场景中同类对象分割的网络
  2. connect time out 获取token失败_Power Query之获取钉钉日志自动刷新Power BI报告
  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)定位 new 表达式
  4. 安卓程序如何保证低内存下依然存在
  5. [蓝桥杯][算法提高VIP]金陵十三钗(状压dp记忆化搜索)
  6. 大数据学习之Linux环境搭建(导航)
  7. HTML页面加载完毕后,再运行JS业务
  8. 我好吗 太阳照常升起梁静茹_明天太阳会升起吗?
  9. Asp.net五大对象
  10. python爬虫re_python网络爬虫之三re正则表达式模块
  11. 华为虚拟home键关闭_华为手机音量忽大忽小,不妨打开这3个开关调整,音量变大变清晰...
  12. 数据结构的时间复杂度与空间复杂度、及相关证明
  13. Ubuntu开启root账户ssh远程登录
  14. html中div弹出显示
  15. Spring简单的定时器
  16. NPDP第五章 工具与度量
  17. 8000401a错误解决方式(Excel)
  18. linux内存测试工具memtest,Linux基础教程:内存测试工具(Memtest86+)
  19. 红外解码软件 android,红外线遥控器软件解码程序(能解大部分遥控器的编码)
  20. [经典论道] 人工智能的四大哲学问题

热门文章

  1. 数据挖掘第二章 认识数据
  2. 使用C#通过串口控制IT6333B电流源
  3. 模电练习题-多路信号发生器(仿真解答)
  4. 利达主机联网接线端子_利达主机怎么编辑中文 利达主机接线端子说明
  5. OpenCV 的 GrabCut 可运行代码 及实例
  6. qt修改程序图标名称_【Qt开发】更改应用程序图标和任务栏图标
  7. matlab怎么求三次微分,Matlab – 求解三阶微分方程
  8. 利用谷歌语法查找网站后台和数据库
  9. dubbo实现原理介绍
  10. 面试时Dubbo原理记不住?来看看《Dubbo原理浅析——从RPC本质看Dubbo》