数据库结构

数据库结构优化的目的

  • 减少数据冗余
  • 尽量避免数据维护中出现更新,插入和删除异常,尽量按照范式化设计,避免这类异常
    插入异常:如果表中的某个实体随着另一个实体而存在
    更新异常:如果更改表中的某个实体的单独属性时,需对多行进行更新
    删除异常:如果删除表中的某一实体则会导致其他实体的消失
  • 节约存储空间
  • 提高查询的效率

设计步骤

  1. 需求分析:全面了解产品设计的存储需求、数据处理需求、数据的安全和完整性
  2. 逻辑设计:设计数据的逻辑存储结构,数据实体之间的逻辑关系,解决数据冗余和数据维护异常 设计范式
  3. 物理设计:根据所用数据库的特点进行表结构的设计 关系型数据库和非关系型数据库
  4. 维护优化:根据实际情况对索引、存储结构进行优化

数据库设计范式

根据数据库设计范式,可以设计出没有冗余和维护异常的数据库

  1. 数据库设计第一范式(确保每列保持原子)
    数据库表中的所有字段具有单一属性
    单一属性的列是由基本的数据类型所构成的
    设计出来的表都是简单的二维表
  2. 数据库设计第二范式(确保表中的每列都和主键相关)
    要求表中只能有单一主键,不能存在非主键列对部分主键的依赖关系
  3. 数据库设计第三范式(确保每列都和主键列直接相关,而不是间接相关)
    指每一个非主属性既不可部分依赖于也不可传递依赖于业务主键,也就是在第二范式基础上消除了非主属性对主键的传递依赖

范式化优点

  • 可以尽量减少数据的冗余
  • 范式化的更新操作比反范式化快
  • 范式化的表通常比反范式化更小

范式化缺点

  • 对于查询需要对多个表进行关联
  • 更难对查询进行索引优化

反范式化

通过违反范式化的方法,来达到提升数据库查询性能

反范式化优点

  • 可以减少表的关联
  • 可以更好进行索引优化

反法式化缺点

  • 存在数据冗余及数据维护异常
  • 对数据修改需要更多的成本

设计数据库应该结合两者,达到项目的需求和性能需求


物理设计

设计内容

  • 定义数据库、表及字段的命名规则
    数据库、表及字段要遵守可读性原则
    数据库、表及字段要遵守表意性原则
    数据库、表及字段要遵守长名原则
  • 选择合适的存储引擎
    无innodb所没有的需求,则选择innodb
  • 为表中的字段选择合适的数据类型
    当一个列可选择多种数据类型,应首选考虑数字类型,其次是日期或二进制类型,最后是字符类型
    对于相同级别的数据类型,应优先考虑占用空间小的数据类型
  • 建立数据库结构
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容