12、企业约束规范
12-1 库表字段约束规范:
表示是否的时候:is_vip 一定要使用类型:tinyint,为无符号。长度:1,只有0和1;
表名和字段名必须为小写字母,不能有大写字母。出现分隔单词必须用下划线隔开。
表名不能出现复数,表名不能起table(mysql里的);
索引名:
主键:pk__xxx
唯一键:uk _ _xxx
索引:idx__xxx
所有的小数全用decimal。
字符串很小时用char,别用varchar。
如果超过了5000,用text;
表里必须要有的字段id、create_time、update_time;
id必须为bigint,而且为无符号,id为单表时设为自增。
create_time 必须为datatime;
update_time 必须为datatime;
字段频繁查询,应该允许一定的冗余。
单表超过2w,分库分表。
年龄一般为tinyint,且无符号。
12-2 索引规范:
(1)限制每张表上的索引数量,建议单张表索引不超过5个:
索引并不是越多越好!索引可以提高效率同样可以降低效率。
索引可以增加查询效率,但同样会降低插入和更新效率,甚至可能会降低查询效率。
(2)禁止给表中的每一列都建立单独的索引:
(3)尽量避免使用外键索引。
(4)join数据类型两边必须一致。
12-3 SQL规范:
不要妄想使用count(xxx,xx,xx)去替代count(*),因为count星会统计null的行。如果某一列值都为null,你要注意count
不是name =null而是is null。
判断一个是不是空用is null。
不要用外键和级联。尤其是在高并发集群的项目中里,其他的表也要跟着改。一切外键的问题放在serve层解决或者应用层解决。
实际开发过程中禁止使用存储过程。存储过程很难调试,而且很难扩展。
删除和修改的时候先select出来查询错误,再删除
子查询的in操作能避免就避免
数据库全为utf8。