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, 表中的字段说明尽量都填
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容