范式(Normal Form):

    是一种离散数学的知识,为了解决一种数据的存储与优化的问题,保存数据的存储后,范式能够通过关系寻找出来的数据,坚决不再重复存。他是一种分层的结构,每一层都比上一层要更加严格,,若要满足下一层范式,前提是必须满足上一层范式。

    六层范式:1NF / 2NF / 3NF / 4NF / 5NF / 6NF 其中 1NF 是最底层,要求最低,6NF 是最高层,最严格。

    MYSQL 属于关系型数据库:有浪费空房间的地方,也致力于节省存储空间,那么这与范式所要解决的问题不谋而和。但是,数据库不但要解决空间问题,还要保证效率问题,范式只是为了解决空间问题,所以数据库的设计又不可能完全按照范式的要求来实现,所以折中,一般情况下,只有三种范式需要满足;

第一范式(1NF):

    在设计表存储数据的时候,如果表中设计的字段存储数据,在取出来之前还需要额外的拆分或处理,那么说明表的设计不满足第一范式,第一范式要求字段具有原子性即不可拆的性质:

第二范式(2NF):

    在数据库设计过程中,如果有复合主键(多字段主键),且表中字段并不是由整个主键来确定的而是依赖逐渐的部分问题,称之为部分依赖,第二范式要解决设计不允许出现部分依赖,那么说你们肯定是读不懂的。

第三范式(3NF):

    那么如果要满足第三范式,首先要先满足第二范式,如果表中存在部分字段岁某些字段存在着传递依赖,则称之为传递依赖,不符合第三范式;

    第三范式:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是简洁依赖于主键,这就被称作传递依赖与主属性。

逆规范化:

    有时候,在设计表的时候,如果一张表中有几个字段是需要从另外的表中获取信息,理论上来讲,的确可以获取想要的数据,但是效率会降低一些,所以有时候,我们在设计表的时候我们会可以的在某些表中,不去保存另外表的主键(逻辑主键)而是直接保存想要的数据信息,这样一来,在查询数据的时候,一张可以直接提供数据,而不需要多表查询,那么这就是逆规范化,逆规范化其实就是磁盘效率和查询的一个对抗!

最后更新: 2020年04月06日 23:25

原始链接: https://www.francisdu.com/articles/三范式介绍.html

× I am Groot!
打赏二维码