数据库的这三大范式是为了处理数据冗余、构建比较严谨的数据库结构,设计数据库时必须遵循一定的规则。
在关系型数据库中这种规则就称为范式。
第一范式1NF(域的原子性)
- 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
第二范式 (2NF)(表中除主键外的字段都完全依赖主键)
- 第二范式是在第一范式基础上建立的。
- 第二范式有两个重点:
(1)表中必须有主键;
(2)其他非主属性必须完全依赖主键,不能只依赖主键的一部分(主要针对联合主键而言)。
通俗的来说,就是一个表只能描述一件事情。
通过第二范式可以分成为:
学生选修课成绩表
选修课信息表
将表中课程信息单独分离出来,符合了第二范式原则。表三中的非主属性都依赖于主键,即,“成绩”字段完全依赖于“学号”和“课程编号”组成的联合主键,符合第二范式原则
第三范式3NF(表中除主键外的字段都完全直接依赖,不能是传递依赖)
不能是传递依赖,即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。
将room里面的信息分开,在第一第二范式的前提之上,将传递依赖剔除掉。再讲第一二三范式放在一起进行总结(举例)。
一个数据表:
第一范式:
第二范式:
第三范式: