MYSQL建表规范

1、除了一些说明字段, 其他字段不要设置成null (在phpmyadmin建表时不点选nul选项),统一设置not null并设置默认值, 默认值一定不要是NULL,特别是索引列,这样会导致索引失效,可以用0,0.000, ‘’代替
2、为了查询方便,可以有冗余字段(各表之间字段又重复), 但是前提是要有严格的同步控制逻辑
3、始终以小写+下划线间隔命名
4、尽量不要设置text属性的字段,除非存储富文本字段,不要使用BLOB类型,建议tinyint实现BLOB功能
5、索引是必须的, 但是可以不要外键约束,且必须注意索引失效的条件和相关优化!!

外键约束条件并不是一定要建立,比如一些数据表繁杂的应用就不建立建立外键关联:

  • 使用外键有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。
  • 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。
  • 做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了外键约束,只能放弃。
  • 出现BUG的时候追踪很麻烦。
    索引失效的条件和相关优化参考
6、建议使用InnoDB存储引擎。
7、使用DECIMAL替代FLOAT和DOUBLE。
8、VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。
9、存储时间(精确到秒)建议使用TIMESTAMP类型
10、表的编码设置为utf8 - general-ci, 表中的字段说明尽量都填

你可能感兴趣的:(MYSQL建表规范)