表的设计

表设计的注意事项

首先就是表设计的三大范式:列字段具有原子性;每一列都与主键相关;每一列都与主键直接相关(减少数据冗余)。在设计的时候需要兼顾查询效率与数据冗余的衡量,绝不可以盲目为了遵循三大范式而设计过于复杂的表结构。

表的设计建议

  • 根据需求选择引擎,如果是日志等报表类对存储需求较大可采用MyISAM,其他请使用InnoDB(更好的并发性、支持事务、支持外键、支持数据和索引的缓冲)
  • 所有表、字段均应使用comment描述表、字段的含义,如果是枚举值建议全都列出
  • 如无特殊说明,表的第一个字段id一定是主键且自动增长(可根据业务需求设置唯一不会改变的值为主键)
  • 如无特殊说明,表中必须包含创建时间和修改时间字段
  • 如无特殊说明,增加是否删除、是否活跃、是否采用字段,原则上不允许物理上删除数据
  • 用尽量少的存储空间存储一个字段的数据,但要给文本字段留足余量,注意选择设计金额方面的数据类型
  • 如无备注,所有字段设置为NOT NULL,并设置默认值
  • 禁止在数据库中存储明文密码
  • 如无特殊说明,所有的布尔值都设置默认值0
  • 如无特殊说明,排序字段order_id默认使用降序排列

索引设计

  • 索引的用途:去重、加速定位、避免排序、覆盖索引
  • 数量控制(两个五):一个表中不要超过5个索引,每个索引不要超过5个字段
  • 对字符串优先考虑前缀索引(不可group by、不可order by、不可使用覆盖索引)
  • 不要索引大型字段
  • 不要在低基数列索引、不要索引常用小型表、索引列不允许类型转换和数学(函数)运算、尽量不使用外键(会降低可用)

键的设计

  • 为关联字段关联外键,且外键总是关联唯一的字段
  • 所有的键必须唯一
  • 避免使用复合键
posted @ 2020-07-31 15:19  阿龙233  阅读(355)  评论(0编辑  收藏  举报