1.第一范式(1NF)
原子性:强调的是列的原子性,即数据库中每一列的字段都是单一属性,不可再分的。并且这个单一属性必须是由基本的数据类型所构成的,如整数、字符串等。
users表

上面表中address字段,可以按照省、市、区进行分割,因此不满足第一范式。
解决办法:将一个字段分割成多个字段

2.第二范式(2NF)
依赖性:在满足1NF的基础上再满足依赖性的两个约束:一张表必须有一个主键;非主键类必须完全依赖于主键。
用户表users

上面表中uid可以作为users表的主键,username,password,tel都依赖于uid,但是 role字段不依赖于uid.解决办法:将一张表拆分成多张表
用户表users


角色表 roles


拆分完成后,将关联关系放在多方上。
3.第三范式(3NF) 在满足2NF的基础上,另外再满足一个条件:非主键列必须直接依赖于主键,不能存在传递依赖。
选课表 sc

sname,cname,tname,credit,score都不依赖于scid,因此,要进行表的拆分。
选课表 sc


学生表students

课程表class

老师表teacher


多对多的解决办法: 创建一张新表:T_C

E-R图:

文章介绍了数据库设计中的三个范式:第一范式强调列的原子性,要求每个字段不可再分;第二范式要求表有一个主键,且非主键字段完全依赖主键;第三范式避免传递依赖,确保非主键列直接依赖主键。通过举例说明了如何通过表拆分来满足这些规范。
1203

被折叠的 条评论
为什么被折叠?



