数据库模型设计,第⼀范式、第⼆范式、第三范式简单例⼦理解数据库设计⼀般满⾜第三范式就够了
第⼀范式(⽆重复的列)
定义:数据库表的每⼀列都是不可分割的原⼦数据项,⽽不能是集合,数组,记录等⾮原⼦数据项。如果实体中的某个属性有多个值时,必须拆分为不同的属性
通俗解释:⼀个字段只存储⼀项信息
eg:班级:⾼三年1班,应改为2个字段,⼀个年级、⼀个班级,才满⾜第⼀范式
不满⾜第⼀范式
学号姓名班级
0001⼩红⾼三年1班
改成
学号姓名年级班级
0001⼩红⾼三年1班
第⼆范式(属性完全依赖于主键)
定义:满⾜第⼀范式前提,当存在多个主键的时候,才会发⽣不符合第⼆范式的情况。⽐如有两个主键,不能存在这样的属性,它只依赖于其中⼀个主键,这就是不符合第⼆范式
通俗解释:任意⼀个字段都只依赖表中的同⼀个字段
eg:⽐如不符合第⼆范式
学⽣证名称学⽣证号学⽣证办理时间借书证名称借书证号借书证办理时间
改成2张表如下
学⽣证表
学⽣证学⽣证号学⽣证办理时间
借书证表
借书证借书证号借书证把你拉时间
第三范式(属性不能传递依赖于主属性)
数据库简单吗
定义:满⾜第⼆范式前提,如果某⼀属性依赖于其他⾮主键属性,⽽其他⾮主键属性⼜依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。
通俗理解:⼀张表最多只存2层同类型信息
eg:爸爸资料表,不满⾜第三范式
爸爸⼉⼦⼥⼉⼥⼉的⼩熊⼥⼉的海绵宝宝
改成
爸爸信息表:
爸爸⼉⼦⼥⼉
⼥⼉信息表
⼥⼉⼥⼉的⼩熊⼥⼉的海绵宝宝