数据库脚本开发规范

数据库脚本开发规范:

一、 新表创建规范

1、创建表的时候不要有drop表的语句

2、原则上,每个新建的表必须包含下面5个字段(只会新增,不会修改时,至少前面3个字段,如日志记录表):

  `uuid` char(32) NOT NULL DEFAULT '00000000000000000000000000000000' COMMENT '物理主键uuid',

  `created_by` varchar(50) NOT NULL COMMENT '创建人',

  `created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `updated_by` varchar(50) NOT NULL COMMENT '修改人',

  `updated_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',

其中,uuid、created_date、updated_date采用trigger或默认值由数据库自动赋值,sql语句中(insert/update)无需对这3个字段进行赋值。

 

3、原则上不使用自增id做唯一键,如果必须使用,命名方式请定义为具体业务含义的xxx_id,不能定义为通用模糊的‘id’两个字母。

 

4、表及每个字段必须有comment描述。

 

5、字段的命名需与Java中dto的字段命名保持一致,中间用‘_’分割,尽量用准确的英文来表述字段含义,不能出现无意义的字母、数字等定义字段。

 

6、字段的长度必须是有考究的,不能随便指定,需考虑可能的扩展,也不宜过长。

 

7、创建的索引必须要有对应的名称,不能使用工具自动生成的随机名称。索引命名方式:ix_表名_索引字段名,唯一索引命名方式uk_表名_索引字段名

 

8、创建的外键必须要有对应的名称,不能使用工具自动生成的随机名称。外键命名方式:fk_表名_外键字段名

 

9、创建的触发器必须要有对应的名称,不能使用工具自动生成的随机名称。触发器命名方式:tr_表名_触发字段名

 

10、表引擎使用innodb:ENGINE=InnoDB,字符集使用utf-8:CHARSET=utf8

 

11、created_by、updated_by字段不能用user_id等数字,需要使用更直观的user_name等来填充。

 

例子:

CREATE TABLE `pc_qrtz_job_details` (

  `uuid` char(32) NOT NULL DEFAULT '00000000000000000000000000000000' COMMENT '物理主键uuid',

  `job_name` varchar(50) NOT NULL DEFAULT '' COMMENT '任务名称',

  `job_group` varchar(50) NOT NULL COMMENT '任务分组',

  `target_bean_name` varchar(50) NOT NULL COMMENT '任务执行bean的名称',

  `system_owner` varchar(20) NOT NULL,

  `description` varchar(100) NOT NULL COMMENT '任务描述',

  `created_by` varchar(50) NOT NULL COMMENT '创建人',

  `created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `updated_by` varchar(50) NOT NULL COMMENT '修改人',

  `updated_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',

  PRIMARY KEY (`uuid`),

  UNIQUE KEY `uk_pc_qrtz_job_details_job_name_group` (`job_name`,`job_group`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

CREATE TRIGGER `tr_pc_qrtz_job_details_created_date` BEFORE INSERT ON `pc_qrtz_job_details` FOR EACH ROW SET new.uuid=uuid2();

 

CREATE TRIGGER `tr_pc_qrtz_job_details_updated_date` BEFORE UPDATE ON `pc_qrtz_job_details` FOR EACH ROW SET new.updated_date=NOW();

 

二、 字段新增/修改规范

新增或修改字段必须一个一个字段的新增或修改,不能做批量新增或修改。其他约束参考新表创建规范。

 

例子:

alter table py_users_integral add reserve_quota DECIMAL(11,2) NOT NULL DEFAULT '0.00' COMMENT '预约额度';

 

三、 初始化数据规范

对于大批量的数据初始化,如新增或修改记录超过1万行,需采用分段提交的方式处理。

 

例子:

后续补充。

 

数据库脚本命名规范:

ddl_database_01_zhangsan.sql

dml_database_01_zhangsan.sql
命名规则:1、脚本类型,ddl:创建或修改表结构、存储过程等,dml:初始化数据等数据操作;2、脚本执行对应数据库名称3、脚本序号,脚本序号代表了执行顺序,不允许有编号一样的4、该脚本负责人。

任何需移交的脚本都应该是在开发库上验证无错误的

posted @ 2021-09-01 22:11  Alex_designer  阅读(414)  评论(0编辑  收藏  举报