数据库的三大范式

第一范式:

属性不可分割:每个属性都是不可分割的原子项(实体的属性就是表中的列)

数据库的三大范式_第1张图片

在上表中contact应该分为phone和adress两列

数据库的三大范式_第2张图片

第二范式: 

在满足第一范式的情况下,表中不存在部分依赖,非主键列要完全依赖于主键(主要是在联合主键的情况下,非主键列不能只依赖于主键的一部分)

数据库的三大范式_第3张图片

上面表中subject_id和student_id为联合主键,subject_name完全依赖于subject_id而与student_id完全无关,应该将其拆解为以下两个表

数据库的三大范式_第4张图片

数据库的三大范式_第5张图片

第三范式:

在满足第二范式的前提下不存在依赖传递

数据库的三大范式_第6张图片

即使在上表中只有student_id为主键,也不符合第三范式,subject_name依赖于subject_id,而subject_id则依赖于主键student_id,因此推出 subject_name依赖于studeng_id,但是subject_name不是直接依赖于主键,属于依赖传递,不符合第三范式,所以还是的拆为上面的两个表

你可能感兴趣的:(MySQL,数据库,mysql)