命名法
库、表、字段均采用“小写英文字母、_”命名,禁止使用大写字母、其他特殊字符、数字;
前缀表名加"t_",对归属于一类业务的表,应采用相同的前缀,后缀命名应精准的描述业务;
例:任务执行者用户信息表“t_executer_userinfo”;
任务执行者登录记录表”t_executer_loginrecord”
对应后边关于外键的规约,看名字就知道哪个是外键,外键关联的主键在哪个表。
用词规则:除英文无法翻译的情况,禁用拼音;翻译用词应使用精准的翻译,且上下文保持一致,坚持“同义同词”原则;以项目为单位建立中英对照词典,及时更新维护;
外键命名规则:外键字段名应由MySQLWorkBench自动创建生成,其规则为“表名_表主键名“;
例:t_userinfo_id;(其中t_userinfo是表名,id是其主键字段名)
索引命名法:index_表名_字段名;
MySQLWorkBench默认创建的索引就是这个命名法,希望添加索引时,也遵循此命名法
设计
坚决杜绝“一源多存”现象(即同一个数据,被保存在多个表);
错例:t_userinfo中存有代表用户当前成绩的user_score字段;
t_usertest表中,也存有代表用户当前成绩的user_score字段;
正例:通过外键关联t_userinfo与t_usertest;
更新,回滚、定期同步等工作时相当繁琐的。
谨慎使用超过三层的主从表关系(即A的主键是B的外键,B的主键是C的外键,C的主键是D的外键),并留存说明文档;
谨慎使用外键约束,如需使用应附文档说明项目中所有的外键约束,并告知项目组所有成员(含产品、测试);
所有字段必须添加注释说明; 枚举型字段应说明枚举对应的意义;
所有表均必须有主键;谨慎使用复合主键;
·除默认索引外,需要添加索引时,应建立在文档中说明额外的索引;
规约不仅仅是为了方便别人,对你自己来说,维护1年前自己做的项目,也会希望当时自己留了足够的文档的。
SQL语句
封装函数(存储过程)组内审核;
自从MySQL5.0开始支持存储过,MySQL程序员也感觉高大上了起来。
禁用Select * ;
识别学生代码与专业代码最常见的标准。
JOIN与SELECT嵌套,原则上仅在表为主从关系时可以使用;并附加充分的注释说明;
最近的新人好多都是培训机构出来的,JOIN是真心用不明白啊。
在设计多重WHERE条件时,应将能筛选掉最多数据的WHERE条件放在句尾;
老鸟与菜鸟经验的差距就体现在这种细节问题上。
SQL关键字应全部大写(因命名法(1)中规定库名表名 字段名 全部为小写字母,所以很容易与关键字区分);
禁止在索引列使用计算;
错例: SELECT str_name FROM t_user_info WHEREf_pay*5>=200;
正例: SELECT str_name FROM t_user_info WHERE f_pay>=40;
尽量使用">=",避免使用”>”;
使用ORDER BY需配合索引;
注意字段保存的类型,不要在SQL语句中轻易的改变字段类型;
使用GROUP BY、ORDER BY之前,请先用WHERE将多余的字段过滤掉;