MySQL开发规范

作为一名后端开发程序员,我们离不开与数据库打交道,最近也在做项目,遇到很多数据库上的设计问题,故整理下来与大家分享。

命名规范

表名

  • 使用小写字母、数字、下划线,不能以数字开头,不能在两个下划线之间只出现数字

  • 可读性高(使用英文,尽量不使用缩写,避免使用拼音),使用 业务名称_表的作用 形式命名

  • 不使用复数名词(表名应该表示表中的实体内容,而不应该表示实体的数量,对应的实体类名也应使用单数形式)

字段名

  • 使用小写字母、数字、下划线,不能以数字开头,不能在两个下划线之间只出现数字

  • 对于表达是与否的字段,使用 is_xxx 的形式命名,数据类型应为 unsigned tinyint,对应实体类的属性不应该添加 is 前缀,通过设置映射关系解决。

索引名

  • 主键索引名使用 pk_字段名

  • 唯一索引名使用 uk_字段名

  • 普通索引名使用 idx_字段名

字段规范

  • 每个表必须具有 id,create_time,update_time 字段。id为主键,类型为 unsigned bigint,单表时自增,步长为1; create_time,update_time为 datetime 类型。

  • 尽可能选择存储空间小的字段类型。 tinyint、smallint、int、bigint。

  • 如果需要存储的字符串长度几乎相等,使用 char 定长字符串类型。

  • varchar 长度不要超过5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。

  • 小数类型使用decimal。float和double存在精度损失的问题。

  • 尽可能使用 not null 定义字段,可防止出现空指针问题,NULL 值也可能导致索引失效。

索引规范

  • 对于索引字段,不使用左模糊或全模糊查询,防止索引失效。索引文件具有最左前缀匹配原则,如果左边的值未确定,则无法使用索引。

  • 建立组合索引时,区分度最高的字段在最左边

  • 业务上具有唯一特性的字段,即使是组合字段,也要建成唯一索引。

  • 在 varchar 字段上建立索引时,必须指定索引长度,根据实际字符串区分度决定索引长度。

使用explain命令对SQL进行性能优化时,type 要求是ref级别,至少要达到range级别,最好是consts级别。

  • range:对索引进行范围检索
  • ref:使用了普通索引
  • consts:使用了主键或者唯一索引

SQL语句规范

  • 不要使用count(列名)或count(1)代替count( * )。 count( * )是 SQL92 定义的标 准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

  • 使用ISNULL()判断是否为NULL值。(NULL与任何值的直接比较结果都是NULL)

  • 不要使用外键和级联,外键概念由应用层解决

  • 不要使用存储过程,存储过程难以调试和扩展

  • 涉及多个表时,都需要在字段前加表的别名进行限定

  • 表的别名前加 as ,并以t1、t2、t3…的顺序依次命名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值