美文网首页
数据库结构

数据库结构

作者: code_nerd | 来源:发表于2017-10-27 09:42 被阅读0次

    数据库结构优化的目的

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

    设计步骤

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

    数据库设计范式

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

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

    范式化优点

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

    范式化缺点

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

    反范式化

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

    反范式化优点

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

    反法式化缺点

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

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


    物理设计

    设计内容

    • 定义数据库、表及字段的命名规则
      数据库、表及字段要遵守可读性原则
      数据库、表及字段要遵守表意性原则
      数据库、表及字段要遵守长名原则
    • 选择合适的存储引擎
      无innodb所没有的需求,则选择innodb
    • 为表中的字段选择合适的数据类型
      当一个列可选择多种数据类型,应首选考虑数字类型,其次是日期或二进制类型,最后是字符类型
      对于相同级别的数据类型,应优先考虑占用空间小的数据类型
    • 建立数据库结构

    相关文章

      网友评论

          本文标题:数据库结构

          本文链接:https://www.haomeiwen.com/subject/gicrpxtx.html