work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库表结构优化

Posted on 2021-02-27 13:47  work hard work smart  阅读(200)  评论(0编辑  收藏  举报

1、第一范式(1NF)

字段具有原子性,即数据库表的每一个字段都是不可分割的原子数据项,不能是集合、数组、记录等非原子数据项。

当实体中的某个属性有多个值时,必须拆分为不同的属性。

如地址address字段,可以拆分成省市区

 

2、第二范式(2NF)

满足1NF的基础上,要求每一行数据具有唯一性,并且非主键字段完全依赖主键字段。

 

3、第三方范式(3NF)

满足2NF的基础上,不能存在传递依赖

 

4、反模式设计

适当增加冗余,从而提升查询效率。

 

5、表设计原则

1) 原则1

字段少而精,建议20个以内(经验之谈,仅参考), 超过可以拆分。

可以把常用的字段放到一起。

把不常用的字段独立出去

大字段(TEXT/BLOB/CLOB等待) 独立出去。

2) 原则2

尽量用小型字段

用数组代替字符串。(节省空间,并提升性能)

避免使用允许NULL的字段 (因为允许NULL字段很难查询优化, 允许为NULL字段的索引需要额外的空间)

3) 原则3

合理平衡范式和冗余

如果数据量非常大,考虑分库分表。