数据库
首页 > 数据库> > 数据库设计心得

数据库设计心得

作者:互联网

数据库设计心得

什么是数据库设计

数据库设计就是根据业务系统的需求,综合我们选择的DBMS,为业务结构创造出最优的数据存储模型。并建立好数据库中的表结构与表之间的关联关系的过程。使之能有效的对应用系统中的数据进行存储,并可以提高对已经存储数据的访问。

优良的数据库设计

  1. 减少数据冗余
  2. 避免数据维护异常
  3. 节约存储空间
  4. 高效访问

数据库设计的大致步骤

  1. 需求分析(数据有哪些,数据有哪些属性,数据与属性它们各自的特点)
  2. 逻辑设计(ER图对数据库进行逻辑建模)
  3. 物理设计(根据选择的数据库的特点把逻辑设计转换成物理设计)
  4. 维护优化(新的需求建表,索引优化,大表拆分)

数据库需求分析

  1. 了解系统中所要存储的数据
    • 实体与实体之间的关系(1对1,1对多,多对多)
  2. 了解数据存储的特点
    • 实体属性的特点(唯一标识一个实体)
  3. 了解数据的生命周期
    • 数据存储特点(永久,暂时)

数据库逻辑设计

  1. 将需求转化成数据库的逻辑模型
  2. 通过ER图的形式对逻辑模型进行展示
    • 矩形:实体集
    • 菱形:关系集
    • 椭圆:实体属性
    • 线段:将实体连上属性,将实体连上关系

数据库逻辑设计规范

数据库物理设计

MySQL常用数据引擎

  1. MySAM
    • 不支持事务
    • 不支持表级锁
    • 不适合频繁读取
    • 读写速度快
  2. MRG_MySAM
    • 不支持事务
    • 不支持表级锁
    • 不适合全局查找
    • 适合分段归档,数据仓库
  3. Innodb
    • 支持事务
    • 支持MVCC事务锁
    • 适合事务处理
    • 读写高效
  4. Archive
    • 不支持事务
    • 行级锁
    • 仅支持insert,select
    • 占用空间小
  5. Ndb cluster
    • 支持事务
    • 行级锁
    • 高可用性

数据库优化

  1. 维护数据字典
    • 第三方工具对数据字典进行维护
    • 利用数据本身的备注字段来维护数据字典
  2. 维护索引
    • 选在在where,group by从句,order by从句中的列
    • 可选择性高的列要放在索引前面
    • 索引中不要包括太长的数据结构
  3. 维护表结构
    • 使用在线变更表结构工具
    • 同时对数据字典进行维护
    • 控制表的宽度与大小
  4. 数据库选择合适操作
    • 尽量选择批操作,而不是逐条结婚
    • 禁止使用select *
    • 控制用户使用自定义函数
    • 不要使用数据库中的全文索引
  5. 表拆分
    • 垂直拆分
      • 经常一起查询的列放一起
      • text,blog等大字段拆分出到附加表
    • 水平拆分
      • 表过大时,选择Hash,Key进行平均拆分

标签:存储,数据,数据库,选择,设计,心得,主键,逻辑设计
来源: https://www.cnblogs.com/zhaifeng/p/10743856.html