MySQL设计规约

最近越来越多的公司团队选择MySQL作为数据库,学习MySQL的新手也越来越多,所以想写一篇关于规约的文章,希望能起到抛砖引玉的作用。

命名法

 库、表、字段均采用“小写英文字母、_”命名,禁止使用大写字母、其他特殊字符、数字;

虽然PHP、Java等主流后台开发语言都可以通过配置文件控制大小写敏感,但何必给自己找麻烦呢?禁用大写字母,会给你的调试避免很多麻烦。

前缀表名加"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_userinfot_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将多余的字段过滤掉;



建议大家使用有道词典:)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值