数据库三范式的一些定义及理解

本文介绍了数据库设计中的三个基本范式:第一范式(1NF)确保数据列的原子性;第二范式(2NF)要求非主属性完全依赖于主键;第三范式(3NF)避免非主属性对候选键的传递依赖。通过范式理论,可以优化数据库结构,减少数据冗余,提高数据一致性。
摘要由CSDN通过智能技术生成

认识范式

范式是数据库的理论基础,也是设计数据库结构过程中要遵循的规则和指导方法,基本范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(3.5范式或BCNF)、第四范式(4NF)

第一范式(1NF)

第一范式的数据表必须是二维数据表,每一列都是不可再分割的基础数据,强调列的原子性,某一属性不能拥有几个值;同一列的类型相同,行的上下关系互不影响。
举🌰:

姓名ID生日职业
张三0011996/2/14职业规划师
李四0021997/2/16自由职业者、画家
王五0031996/3/15数据分析师

*李四职业同时有两个不符合第一范式

第二范式(2NF)

第二范式建立在第一范式的基础上,要求数据表每一个实例或者行必须被唯一标识。除满足第一范式外还有两个条件:一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

非主属性与主属性:在关系中,由一组属性决定另一组属性,即为超键。候选健集合中的属性为主属性,非候选键集合中的属性为非主属性。
比如,身份证号和姓名可以决定性别,(姓名,身份证号}为超键;其中身份证号这一单一属性即可决定性别,则姓名为多余属性,{身份证号}为候选键,主属性。
完全依赖与部分依赖:完全依赖是指不能存在仅依赖于主关键字一部分的属性,如果存在,则该属性与主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。

简单来说,就是要消除非主属性对主属性的部分依赖

举🌰:

姓名性别生日职业城市id城市城市人数
张三1996/2/14职业规划师001北京2600
李四1997/2/16画家002上海2500
王五1996/3/15数据分析师002上海2500

城市人数(非主属性)部分依赖于姓名(主属性)
城市id城市都可以决定城市人数

*拆分为以下即可

姓名性别生日职业
张三1996/2/14职业规划师
李四1997/2/16画家
王五1996/3/15数据分析师

城市id城市城市人数
001北京2600
002上海2500

第三范式(3NF)

第三范式在第二范式的基础上,要求消除非主属性对候选键的传递依赖

举🌰:

学号姓名所在系系地址
001张三计算机地址1
002李四自动化地址2
003王五自动化地址2

主属性
学号
非主属性
姓名、所在系、系地址

*通过学号可以得出系地址
学号得出所在系所在系得出系地址

拆分为以下即可:

学号姓名所在系
001张三计算机
002李四自动化
003王五自动化
所在系系地址
计算机地址1
自动化地址2

总结
1NF:列的原子性,保证表的每一列都不可再分割
2NF:在1NF的基础上,非关键字段必须依赖唯一的主键
3NF:在2NF的基础上,表中的每一列键都和主键直接相关,不能存在传递依赖

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值