MySQL学习笔记——CSDN学习记录一:三大范式

MySQL 三大范式

1. 第一范式:

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

        例如,表 3-1 所示的 t_user 数据表的设计不符合第一范式。

         其中 user_info 字段为用户信息,可以进一步拆分为更小粒度的字段,不符合数据库设计对第一范式的要求。将 user_info 拆分后的数据表设计为如表 3-2 所示。

         表3-2所示的数据表设计符合 MySQL 第一范式。

2. 第二范式

        是指在第一范式的基础上,确保数据表中除了主键之外的每个字段都必须依赖主键。例如,表 3-3 所示的数据表设计不符合第二范式。

         由于商品的名称和价格字段不依赖于商品类别的主键 id,所以不符合第二范式。可将其修改为表 3-4 和表 3-5 所示的表设计。

         商品信息表 t_goods 通过商品类别 id 字段 category_id 与商品类别数据表 t_goods_category 进行关联。

3. 第三范式:

        在第二范式基础上,确保数据表中的每一列都和主键字段直接相关,即要求数据表中的所有非主键字段不能依赖于其他非主键字段。

        在第三范式下,需要将表 3-5 所示的 t_goods 数据表进一步拆分成表 3-6 和表 3-7 所示的商品信息表,以及商品信息表与商品类别数据表的关联表。

4. 反范式化:

        如果数据库中的数据量比较大,系统 UV 和 PV 访问频次比较高,则完全按照 MySQL 三大范式设计数据库,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。此时,可以通过在数据表中增加冗余字段来提高数据库的读性能。

        例如,可以将商品信息表设计成表 3-8 所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaJucy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值