当前位置 博文首页 > Monsterof的博客:Mysql数据库优化二(数据库设计)

    Monsterof的博客:Mysql数据库优化二(数据库设计)

    作者:[db:作者] 时间:2021-09-10 18:52

    相关文章

    Mysql数据库优化一(存储引擎)
    Mysql数据库优化三(SQL优化)

    数据库设计

    数据库设计三大范式

    第一范式1NF:字段原子性

    第一范式简单的说就是表中的字段是最小不可再分的,我们下边举个例子,我们看到以下一张用户表。里边的字段是不可再分的,这样就符合第一范式的原子性,可能有些朋友会疑问,这个地址还可以分成省份、城市、区/县三个字段,是的!如果是一个电商项目它需要再分,那么就不符合第一范式,所以具体还是看项目的需求,没有固定标准,在项目需求中它的设计已不可再分那么就符合第一范式!
    在这里插入图片描述

    第二范式2NF: 消除对主键的部分依赖

    第二范式的使用是需要满足第一范式为前提,在表中添加一个业务字段,而主键不用来做业务处理,比如我们的商品表有商品id,商品id为商品的主键,但是需要创建一个商品编号列来专门处理业务,因为id太敏感,我们处理业务都是用商品编号来处理,比如展示商品时展示编号等等!
    在这里插入图片描述

    第三范式3NF:在2NF的基础上添加外键

    第三范式的使用必须满足第二范式,要求表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键),比如下面的例子,订单表中有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可(外键),而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。如下图所示:
    在这里插入图片描述
    分离之后:
    在这里插入图片描述

    三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库!

    另外推荐小伙伴们积极参加:C站测评挑战赛

    cs