博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数据库设计范式]简明介绍第二范式与第三范式之间的区别
阅读量:2216 次
发布时间:2019-05-07

本文共 919 字,大约阅读时间需要 3 分钟。

网络上已经有人介绍第二范式与第三范式之间的区别,但是我看了之后觉得甚是模糊,很不清晰.为此特意写了这篇博客再来解释一下第二范式与第三范式之间的区别.

直接给结论:第二范式要求非主键属性与所有主键相关(针对联合主键,单主键必然满足第二范式),第三范式则在第二范式的基础上要求所有非主键属性互相独立,即互不相关.

如何区分?

给出两者定义(来自百度百科):

第二范式(Second Normal Form,2nd NF)是指每个表必须有一个(而且仅有一个)数据元素为主关键字(Primary key),其他数据元素与主关键字一一对应。通常称这种关系为函数依赖(Functional dependence)关系,即表中其他数据元素都依赖于主关键字,或称该数据元素惟一地被主关键字所标识。第二范式是数据库规范化中所使用的一种正规形式。它的规则是要求数据表里的所有非主属性都要和该数据表的主键有完全依赖关系;如果有哪些非主属性只和主键的一部份有关的话,它就不符合第二范式。同时可以得出:如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式(前提是该数据表符合第一范式)。

简单的说第二范式要求确保数据库表中的每一列都与主键相关,而不能只与主键的某一部分相关(针对联合主键而言),即一个表存只能储存一种数据.

第三范式(Third Normal Form,3rd NF)就是指表中的所有数据元素不但要能惟一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。也就是说,对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。

简单的说第三范式要求确保数据表中的每一列数据都和主键直接相关,而不能间接相关,属性不能依赖于其他非主属性.

如何判断?

判断的时候首先依次取每一个非主属性查看其与主键的关系,若每个非主属性与所有主键都相关,那么可以说这张表满足了第二范式.

更进一步,依次取每一个非主属性查看其与其他非主属性的关系,若每个非主属性之间相互独立,那么可以说这张表满足了第三范式.

最后

用一句比较深奥的话做总结:第二范式是完全函数依赖,第三范式是消除传递依赖.

转载地址:http://fczfb.baihongyu.com/

你可能感兴趣的文章
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>