数据库三大范式概述

范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、巴斯-科德范式(BCNF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF,又称完美范式)。通常所用到的只是前三个范式。

第一范式(1NF)

每一列都是不可分割的原子数据项(强调的是列的原子性,即列不能够再分成其他几列)

例如:一个表:学号,姓名,系(系主任,系名),课程名称,分数;这个表中的系这一列还可以被分成两列不符合原子性了

把这个表变成学号,姓名,系主任,系名,课程名称,分数;就符合了。但是只是这样的话数据冗余太多,接着往下看

第二范式(2NF)

在1NF的基础上,非码属性必须完全依赖与码(在1NF基础上消除非主属性对主码的部分函数依赖)

函数依赖:例如:(属性)学号可以确定(属性)姓名的值,就说姓名依赖与学号

码:如果一张表中,一个属性或者属性组,被其他属性完全依赖,则称这个属性为该表的码;例如:学号,课程

主属性:码属性组中的所有属性;

非主属性:除了码属性组的全部属性

表中的非码属性现在是部分依赖与码,而不是完全依赖。如:姓名只依赖主属性中的一部分。

将两个表进行拆分:课程表:【学号,课程名称,分数】学生表:【学号,姓名,系名,系主任】这样设计分数就完全依赖主属性了

第三范式(3NF)

在2NF基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)

如2NF设计的表中:学生表:【学号,姓名,系名,系主任】系主任依赖于系名

在进行拆分:学生表:【学号,姓名,系名】系表【系名,系主任】这样就ok了数据的冗余也减少了许多,按照三大范式设计的数据库表,对数据库进行CRUD时,都不会出现太大的问题。


以上是自己学习完总结的一些,可能有些地方说的不严谨或者错误的,希望您能帮我提出来。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值