数据三大范式

合理的数据库:

1.结构合理

2.冗余较小

3.尽量避免避免插入、删除、修改异常

范式(NF:Normal Form)

要设计一个结构合理的数据库,必须满足一定的范式

第一范式,第二范式,第三范式 (依次嵌套包含  范式越高  设计质量越高)

第一范式:数据表中每一列都是不可分割的基本数据项(即同一列不能有多个值  原子性)

如:用户表(用户名 家庭地址)

  用户表(用户名 省 城市  详细地址)   实际业务需求:如按省 或 市查询

应用:第一范式的合理遵循需要根据实际业务需求来定

第二范式:数据表中的每一列都和主键(联合主键)相关,而不能只与主键的某一部分相关(解决多对多

     (即数据表中只能存一种数据,不可以把多种数据存在同一张数据表中)

                    

       (学生--课程  多对多)

       学号,课程编号作为联合主键, 课程名称只依赖于课程编号,但是与学号没有关系。

       冗余较多 如课程名称  修改不方便 如 修改张三的名字  所以上表不合理!

       解决方案如下:

       

 

第三范式数据表中的数据都和主键直接相关,而不能间接相关(解决一对多

      

 范式的优缺点

数据库表之间的关系: 一对一:学生和学生证

         一对多:学生和班级

         多对多:学生和课程

如何表示数据库表之间关系:

        一对一:外键+唯一

        一对多:外键

        多对多:引入中间表,1个多对多 --> 2个一对多(参考第二范式)

原文地址:https://www.cnblogs.com/qingfengzhuimeng/p/6905103.html