MYSQL设计和开发规范(简易版)

1. 整体描述

多人团队开发时,难免会出现每个人的编码和开发习惯不一样,导致整个项目的编码风格多种多样,不利于项目后期开发和维护,所以设计和编码规范就起到了约束的作用,达到虽然多人编码,但是看着像一个人开发的一样。
不过,编码规范也有利有弊,弄得过于繁琐,也不利于开发人员实现,所以,适当指定编码规范是很重要和必要的。
本文对MYSQL的设计和使用加以规范,参考了阿里的规范说明,并进行的简单修改。

2. 数据库设计规范

2.1 表名命名规则

  1. 表名表示实体内容,不是实体数量,禁止使用复数;
  2. 表名以业务的包名开头,每个单词用_隔开。

2.2 是否字段

  1. 表达是否概念的字段,必须使用is_xxx的形式命名;
  2. 数据类型定义为 char(1);
  3. 1表示是,0表示否。

2.3 字母与数字

  1. 表名,字段名禁止出现大写;
  2. 禁止数字开头,禁止两个下划线中间只有数字。

2.4 禁止使用保留字

  1. 常见的例如:desc,range,match,delayed…

2.5 可变字符串规范

  1. 如果字符串长度较长,且内容长度差异较大,使用varchar;
  2. 如果字符串长度大部分超过5000,使用text,独立出一张表单独存储。

2.6 字段设计

  1. 必须具备id字段,类型为bigint,可以自增,也可以雪花ID,不具备业务含义;
  2. 必须具备status字段:类型为char(1),默认为0;
  3. 必须具备del_flag字段:类型为char(1) ,默认为0;
  4. 必须具备create_by字段,类型为varchar(64);
  5. 必须具备create_time字段:类型为datetime;
  6. 必须具备update_by字段,类型为varchar(64);
  7. 必须具备update_time字段:类型为datetime;
  8. 必须具备remark字段:类型为varchar(500);
  9. 执行insert操作时,将create_time和update_time都设置为当前时间,create_by和update_by都设置为当前操作人;
  10. 执行update操作时,update_time设置为当前时间,update_by设置为当前操作人。

3. 数据库索引规范

3.1 命名规则

  1. 正常索引,以:【idx_表名_字段名】进行命名,例如:在vpr_obj_part表的obj_id字段创建索引,索引名称应为:idx_vprobjpart_objid;
  2. 唯一索引,以:【unq_表名_字段名】进行命名,例如:在car_camera表的ip字段创建唯一索引,索引名称应为:unq_devcamera_ip。

3.2 唯一索引规范

  1. 理论上,业务上具备唯一特性的字段,应该创建唯一索引,例如:摄像头的ip。

3.3 join规范

  1. 禁止join数据量过多的表,一般业务数据表都是数据量比较多的;
  2. 需要join的字段,数据类型必须绝对一致;
  3. 被关联的字段要有索引。

3.4 varchar规范

  1. 没有必要对过长的varchar全字段建立索引;
  2. varchar字段上的索引必须指定索引长度。

3.5 模糊搜索规范

  1. 尽量不要使用左模糊或者全模糊查询。

4. 数据库SQL语句规范

4.1 语句复杂度

  1. SQL语句主要以增删改查,排序,计数等为主,不要在SQL语句里实现过于复杂的业务逻辑,业务逻辑用java代码实现。

4.2 count规范

  1. 不要使用count(column)或者count(1),请使用count(*);
  2. 如果要计算排除NULL值的不重复行计数,请使用count(distinct column)。

4.3 null规范

  1. 如果一列全是NULL,sum(column)返回的是NULL,因此在使用sum时,应用程序务必考虑NPE问题;
  2. 使用ISNULL(column)判断列是否为空,不要使用column is null 或者column is not null。

4.4 别名规范

  1. SQL中对于列的查询与修改,如果涉及多个表,必须使用表名(或者别名)对列进行限定。

4.5 外键规范

  1. 禁止使用外键。

4.6 存储过程规范

  1. 禁止使用存储过程。

4.7 视图规范

  1. 禁止使用视图。

相关推荐

  1. MYSQL设计开发规范简易

    2024-07-22 17:28:03       18 阅读
  2. MySQL设计开发&使用规范

    2024-07-22 17:28:03       46 阅读
  3. MySQL数据库开发设计规范总结

    2024-07-22 17:28:03       21 阅读
  4. Mysql设计规范

    2024-07-22 17:28:03       30 阅读
  5. 了解MySQL 开发规范

    2024-07-22 17:28:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 17:28:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 17:28:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 17:28:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 17:28:03       55 阅读

热门阅读

  1. 解决MySQL中LIMIT大偏移量加载慢的问题

    2024-07-22 17:28:03       15 阅读
  2. 【算法】Python中常见的三种优化算法介绍及使用

    2024-07-22 17:28:03       16 阅读
  3. C++版OpenCV_03_图像增强

    2024-07-22 17:28:03       18 阅读
  4. opengaussdb在oepnEuler上安装

    2024-07-22 17:28:03       16 阅读
  5. 求助Python字体下载!

    2024-07-22 17:28:03       13 阅读
  6. 如何在 Nginx 中配置访问日志的格式?

    2024-07-22 17:28:03       16 阅读
  7. 精简的力量:目标检测中的模型压缩技术解析

    2024-07-22 17:28:03       15 阅读
  8. 如何用外呼系统提高销售打电话效率

    2024-07-22 17:28:03       16 阅读