继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

数据库设计的规则

judyW
关注TA
已关注
手记 47
粉丝 11
获赞 107
  1. 表名字段名尽量简短,但是要见名知意,单词间以下划线分割

  2. 每个表都要有自增主键,主键id以表名_id形式命名

  3. 每个字段都要标明注释

  4. 对于枚举类型字段,都使用tinyInt类型(能节省长度的时候尽量节省),写好每个枚举值对应的含义,有枚举值添加的时候,要记得更新

  5. 如果可以,尽量设计字段的默认值;尽量把字段设计为not null,null查询不会走索引

  6. 对于可预见的常用查询,一定要添加对于的索引

  7. 逻辑删除字段时候enabled_status

  8. 如果没有特殊情况,建议选择InoDB索引

  9. 存储时间时,建议使用timestamp类型,因为timestamp使用的是4字节,datetime使用的是8字节

  10. 每个表必须要有创建时间和最后更新时间

  11. 如果需要有创建人和更新人的信息,使用create_user_id,update_user_id 两个字段

  12. 如果要求数据有强的唯一性,一定要创建唯一索引
  13. 不要对数据库字段使用函数,使用函数会导致索引失效
  14. 尽量不要使用子查询

  15. 能不要join就不使用join,join的表最好在三张表以下

  16. 对于索引,普通索引使用idx_开头,后面跟上每个字段的名字即可;对于唯一索引,使用uni_开头。

  17. 每次添加字段,最好指定字段所在的位置,前面放比较常用的字段,后面放不怎么常用的字段,随后放创建,更新人以及创建更新时间信息等

  18. 对于其他表中,已经有的名词定义,一定要复用

  19. 对于乐观锁,使用字段采用version_number

  20. 要权衡好数据冗余的必要性(对于在其它表经常查询,但是并不会经常更新的,我们一般可以采用冗余)

  21. 不要使用union查询

  22. 不要使用外键

  23. 如果可以,主键id使用无符号类型

  24. 字符串长度使用2的幂次


`create_user_id` BIGINT(20) DEFAULT '0' COMMENT '执行创建操作的用户id',
`update_user_id` BIGINT(20) DEFAULT '0' COMMENT '执行更新操作的用户id',


`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP