当前位置: 首页 > news >正文

数据库开发规范

一、概述

​    本规范规定了,软件项目团队开发数据库的全流程规范。规范覆盖了数据库设计、管理及配套文件等。

二、项目阶段

​    项目阶段包括需求评审(需求分析阶段)、技术评审(方案阶段)、数据库开发(开发阶段)、调试及试运行(结题交付阶段)、技术状态确定。

1.需求评审

​    该阶段明确用户对软件业务的数据需求。具体分析步骤如下:

  • ​ 用户需求分析,构建业务对象(数据库概念模型)
  • ​ 构建业务过程,确定业务数据流及输入输出(数据流图)
  • ​ 评估过程数据量,明确数据约束
  • ​ 数据建模(数据库逻辑模型,推荐使用PowerDesigner)

​    完成《软件数据要求说明》。

2.技术评审

​    该阶段根据软件业务的数据需求明确如下内容:

  •  技术选型:包括服务器、存储、数据库、数据库中间件等
  •  技术架构:确定数据库存储架构,如何部署,备份方案等
  •  技术难点预知:明确存在的技术难点,并确定解决方案
  •  性能瓶颈及风险预知:明确可能存在性能瓶颈的地方例如业务数据持续增长、高并发等,并确定应对措施

​    完成数据库物理模型设计,开始开展《软件数据库设计说明》。

3.数据库开发

  该阶段进行数据库的业务开发:

  • 完成数据库建库、建表、建索引等工作(推荐使用Navicat Premium 15)
  • 初步搭建数据库架构,完成数据库及中间件的环境配置(开启binlog日志)
  • 明确对外数据接口
  • 读写权限集中管理

  完成《软件数据库设计说明》、数据字典(推荐使用数据库表结构文档工具screw)。

3.1 管理规范

   数据库开发过程需要进行规范管理。

3.1.1建表规范

1. 库名、表名、字段名:小写,下划线,不超过32个字符,见名知意
2. 表必备四字段:id, create_time, update_time,deleted

- id 字段 bigint/varchar 类型,单表自增/由系统生成uuid
- create_time 字段 datetime 类型,默认值 CURRENT_TIMESTAMP
- update_time 字段 datetime 类型,默认值 CURRENT_TIMESTAMP,ON UPDATE CURRENT_TIMESTAMP
- deleted 字段 tinyint 类型,默认值 '0'

3. 单实例表数量必须不超过500
4. 单表列数目必须小于30
5. 禁止使用外键
6. 必须把字段定义为NOT NULL 并且提供默认值(NULL值多会影响数据库处理性能)  
7. 禁止用小数存储货币,用“分”为单位存储整数
8. 必须使用varchar(20)存储手机号
9. 禁止使用ENUM,用tinyint代替
10. 单表索引建议在5个以内
11. 单索引字段数不超过5个
12. 建立组合索引必须把区分度高的字段放在前面
13. 禁止使用select * ,必须查询具体字段
14. 禁止使用属性隐式转换
15. 禁止在where条件上使用函数或者表达式
16. 禁止使用负向查询以及模糊查询,会导致全表扫描
17. 禁止大表使用JOIN查询以及子查询
18. 禁止使用OR查询,必须使用IN
19. 枚举类表字段注释需要将所有枚举含义进行注释,修改或增加字段的状态描述,必须要及时同步更新注释

 示例:

```
 CREATE TABLE `t_change_data` (
     `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',
     `sync_status` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT '同步状态 0 未开始 1同步中 2同步成功 3失败',
     `sync_time` DATETIME NULL DEFAULT NULL COMMENT '同步时间',
     `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `update_time` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     `deleted`TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标记',
     PRIMARY KEY (`change_data_id`)
 )
```

20. 禁止非DBA对服务器上数据库进行数据结构更改,修改数据结构需由DBA执行

21. 应用程序必须捕获sql异常并处理

4.调试及试运行

   该阶段需完成数据准备工作,配合完成软件调试和系统演示,具体内容如下:

  • 配合开发人员完成对外系统交互接口调试,及时进行数据结构同步更新
  • 需准备一套历史数据,一套过程数据,一套新建数据用于系统演示
  • 需做好数据备份(备份工具推荐使用mysqldump,建立windows批处理文件快速执行)

5.技术状态确定

   软件具备发布条件后,完成数据库迁移:

  • 数据库及配置迁移至生产环境
  • 生产环境建立备份库,做好备份管理(全量和增量备份)

  完成《软件数据库设计说明》的更新。


​    

http://www.lryc.cn/news/479466.html

相关文章:

  • 使用python向钉钉群聊发送消息
  • YOLOv11改进:SE注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,与其他一些注意力机制相比,不仅准确度更高,而且模型更加轻量化。)
  • STM32 基于HAL库和STM32cubeIDE的应用教程 (二)--GPIO的使用
  • 【毫米波雷达(七)】自动驾驶汽车中的精准定位——RTK定位技术
  • Transformer和BERT的区别
  • linux 加载uPD720201固件
  • C语言中的信号量semaphore详解
  • 0087__DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区
  • Windows换机华为擎云(银河麒麟V10+麒麟9000C CPU)后,使用selenium的程序怎么办(20241030)
  • linux 下 signal() 函数的用法,信号类型在哪里定义的?
  • 享元模式及其运用场景:结合工厂模式和单例模式优化内存使用
  • 【物联网技术】ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
  • 【SQL Server】华中农业大学空间数据库实验报告 实验一 数据库
  • 操作系统页面置换算法Java实现(LFU,OPT,LRU,LFU,CLOCK)
  • Request和Response
  • 【青牛科技】GC8549替代LV8549/ONSEMI在摇头机、舞台灯、打印机和白色家电等产品上的应用分析
  • (十二)JavaWeb后端开发——MySQL数据库
  • pnpm管理多工作区依赖
  • 如何在本地Linux服务器搭建WordPress网站结合内网穿透随时随地可访问
  • 二、应用层,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》
  • 面粉直供系统|基于java和小程序的食品面粉直供系统设计与实现(源码+数据库+文档)
  • 十四:java web(6)-- Spring Spring MVC
  • Java代码实现策略模式处理支付付款业务
  • unity3d————四元数概念
  • spring相关的面试题
  • STM32外设之SPI的介绍
  • 二十三、Mysql8.0高可用集群架构实战
  • docker file 精简规则
  • 前端加密方式详解与选择指南
  • 【React】条件渲染——逻辑与运算符