美文网首页
范式详解

范式详解

作者: MC_Honva | 来源:发表于2017-05-14 10:34 被阅读26次

    范式一共6层,范式也叫Normal Format

    一般只需要满足前三个范式,既1NF,2NF,3NF即可。因为越往下层,节省空间会越多,要求越严格,但是效率也会因此大打折扣。使用范式可以减少设计数据库的数据冗余。

    第一范式,1NF

    每个字段满足原子性,不可再拆分,如下所示,商品表的时间,存在进货时间和卖出时间,2者之间是可以再拆分的,既不是原子性的


    遵从第一范式,应该修改成如下所示

    第二范式,2NF

    存在复合主键,且其他字段依赖部分主键,则不满足第二范式。
    如下表,通过复合主键可以确定唯一的数据,复合主键为name和shop_name。其中shop_address依赖shop_name,而price则依赖name。则此时就不满足第二范式。


    解决的方法:
    添加逻辑主键,取消复合主键的使用。

    第三范式,3NF

    存在传递依赖,比如上表中price依赖name,而name又依赖id(价格依赖白菜这个品种,而白菜又依赖逻辑主键id)。shop_address和shop_name也一样。这就存在了传递依赖。
    解决的方法:
    将存在传递依赖的,拆分成几个表通过,逻辑主键连接。如下表所示。

    逆规范化

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

    相关文章

      网友评论

          本文标题:范式详解

          本文链接:https://www.haomeiwen.com/subject/wbpqnttx.html