领导最近要求大家写一份MySQL设计编码规范,以便以后开发规范化...
项目组同事百度谷歌加个人统计出来如下一份...感觉挺不错的
1、禁止使用触发器、存储过程、外键约束。
2、所有命名都一律小写,分隔符使用下划线_。
数据库命名规范: $系统_$子系统,例如 crm_product、crm_contract等。
表命名规范:[t_v]_$模块名_$表名,例如 t_user_info、t_user_employee。
3、数据库表及字段均需要增加comment备注信息,方便理解
4、数据库表必须有主键、严禁使用组合主键,推荐使用id字段,且字段为unsigned、自增、pk、uniq
5、数据库字段均需设置为NOT NULL,避免null数据操作问题,同时设置默认值
6、数据库索引命名规则,非唯一索引idx_{name},唯一索引uniq_{name}
7、数据库库名、表名、字段名禁止超过32个字符
8、库名、表名、字段名禁止使用mysql保留字
9、临时库、表名必须以tmp为前缀,以日期为后缀,如:tmp_test01_20161127
10、尽量不使用TEXT、BLOB类型
11、禁止在数据库表中存储明文密码
12、使用尽可能小的varchar字段,varchar(N)中的N表示字符书而非字节数
13、数据库表使用INNODB存储引擎
14、数据库表字符集统一使用UTF8MB4字符集
15、禁止在数据库表中存储图片、文件等大数据
16、禁止在线上做数据库压力测试
17、禁止从测试、开发环境直连线上数据库
18、单张表索引数量不超过5个
19、单个索引中的字段数不超过5个
20、组合索引建议包含所有字段名,过长的字段名可用采用缩写形式,如:idx_mobile_token_valid
21、联表查询时,join列的数据类型必须相同,并且需要建立索引
22、跨模块之间严禁连接查询。
23、严禁三个表以上的链接查询。
24、严禁使用mysql函数,例如:now()、rand()、sysdate()、current_user()。
25、每个表不许超过20个字段,大字段务必拆分出来。
26、严格禁止单条记录超过8K。
27、禁止冗余索引,例如:(a,b,c)、(a,b),后者为冗余索引。