• 数据库 范式化和反范式化


    第一范式 1NF

    主要确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值为不可再次拆分的最小数据单元

    第二范式 2NF

    在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。

    第三范式 3NF

    在满足第二范式的基础上,确保数据表中的每一个非主键字段都和主键字段直接相关,也就是说,要求数据表中的所有非主键字段不能依赖于其它非主键字段(即,不能存在非主属性A依赖于非主属性B,这个B依赖于主键C的情况,A——>B——>C)。
    该规则的意思是所有非主键属性之间不能有依赖关系**,必须相互独立**

    BCNF

    在这里插入图片描述

    总结:
    1NF:告诉我们字段属性需要是原子性
    2NF:一张表就是一个独立的对象,一张表只表示一个意思,要求实体的属性完全依赖主关键字。如果存在不完全依赖,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与元实体之间是一对多的关系。
    3NF:2NF和3NF 概括:每个非主键属性依赖于主键,依赖于整个主键(联合主键),并且出来主键别无他物
    在这里插入图片描述

    反范式化

    有时候不能简单按照规范要求设计数据库,因为有点数据看似冗余,其实对业务来说十分重要。这个时候,我们就要遵循业务优先的原则,首先满足业务需求,再尽量减少冗余
    如果数据库中的数据量比较大,系统的UV和PV访问批次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。如果我们相对查询效率进行优化,反范式优化也是一种优化思路。此时通过在数据表中增加冗余字段来提高数据库的读性能
    反范式的应用场景
    在这里插入图片描述

    在这里插入图片描述

    规范化 VS 性能
    1. 为满足某种商业目标,数据库性能比规范化数据库更重要
    2. 在数据库规范的同时,要综合考虑数据库的性能
    3. 通过在给定的表中添加额外的字段,以2大量减少需要从中搜索信息所需要的时间
    4. 通过在给定的表中插入计算列,以方便查询
  • 相关阅读:
    2.1_4 编码和调制
    千元投影小明Q1 Pro和极米NEW Play谁更好?和哈趣K1比哪款配置更高?
    17.1 隐藏执行CMD命令
    mac下node-sass安装报错
    vue3使用cesium实现跟随弹框
    JAVAEE三层架构详细解释以及代码分层编写
    短链系统设计-服务设计
    3、matlab单目相机标定原理、流程及实验
    【接雨水】python刷题记录
    Filebeat+Kafka+ELK日志分析架构
  • 原文地址:https://blog.csdn.net/u013400314/article/details/132719078