mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-14 05:03:43 +08:00
新增数据库开发规范
This commit is contained in:
@@ -1,4 +0,0 @@
|
||||
-- 为 chat_message 表添加 billing_type 字段
|
||||
ALTER TABLE chat_message
|
||||
ADD COLUMN billing_type char NULL COMMENT '计费类型(1-token计费,2-次数计费,null-普通消息)';
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
alter table chat_model
|
||||
add priority int default 1 null comment '模型优先级(值越大优先级越高)';
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 3
|
||||
WHERE t.id = 1782792839548735492;
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 6
|
||||
WHERE t.id = 1859570229117022212;
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 5
|
||||
WHERE t.id = 1859570229117022211;
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 4
|
||||
WHERE t.id = 1782792839548735493;
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 2
|
||||
WHERE t.id = 1828324413241466881;
|
||||
|
||||
UPDATE `ruoyi-ai`.chat_model t
|
||||
SET t.priority = 2
|
||||
WHERE t.id = 1782792839548735491;
|
||||
162
script/sql/update/database-specification.md
Normal file
162
script/sql/update/database-specification.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# 数据库开发规范
|
||||
|
||||
|
||||
## 1. 建表规约
|
||||
|
||||
### 1.1 表命名规范
|
||||
|
||||
**【强制】** 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。
|
||||
|
||||
**【强制】** 表名采用 `业务-模块-功能` 的命名方式,使用下划线分隔。
|
||||
|
||||
**正例:**
|
||||
```sql
|
||||
-- 聊天业务-配置模块-配置功能
|
||||
chat_config
|
||||
|
||||
-- 聊天业务-消息模块-消息功能
|
||||
chat_message
|
||||
|
||||
-- 聊天业务-模型模块-模型功能
|
||||
chat_model
|
||||
|
||||
-- 系统业务-用户模块-用户功能
|
||||
sys_user
|
||||
|
||||
-- 系统业务-角色模块-角色功能
|
||||
sys_role
|
||||
|
||||
-- 知识库业务-角色模块-角色功能
|
||||
knowledge_role
|
||||
```
|
||||
|
||||
**反例:**
|
||||
```sql
|
||||
-- 不规范的命名
|
||||
chatConfig
|
||||
ChatMessage
|
||||
chat-model
|
||||
user1
|
||||
2user
|
||||
user__info
|
||||
```
|
||||
|
||||
### 1.2 字段命名规范
|
||||
|
||||
**【强制】** 字段名必须使用小写字母或数字,使用下划线分隔。
|
||||
|
||||
**【推荐】** 表达是与否概念的字段,必须使用 `is_xxx` 的方式命名,数据类型是 `char(1)`,1 表示是,0 表示否。
|
||||
|
||||
**正例:** `is_deleted`、`is_enabled`
|
||||
|
||||
## 2. 公共字段规范
|
||||
|
||||
### 2.1 必备公共字段
|
||||
|
||||
|
||||
**【推荐】** 表增加以下公共字段:
|
||||
|
||||
| 字段名 | 类型 | 默认值 | 说明 | 是否必须 |
|
||||
|--------|------|--------|------|----------|
|
||||
| `id` | `bigint(20)` | AUTO_INCREMENT | 主键ID | 是 |
|
||||
| `create_time` | `datetime` | NULL | 创建时间 | 是 |
|
||||
| `update_time` | `datetime` | NULL | 更新时间 | 是 |
|
||||
| `create_by` | `bigint(20)` | NULL | 创建者ID | 是 |
|
||||
| `update_by` | `bigint(20)` | NULL | 更新者ID | 是 |
|
||||
| `create_dept` | `bigint(20)` | NULL | 创建部门ID | 是 |
|
||||
| `del_flag` | `char(1)` | '0' | 删除标志(0存在 1删除) | 推荐 |
|
||||
| `tenant_id` | `varchar(20)` | '000000' | 租户编号 | 多租户必须 |
|
||||
| `remark` | `varchar(500)` | NULL | 备注 | 是 |
|
||||
| `version` | `int(11)` | NULL | 版本号(乐观锁) | 可选 |
|
||||
|
||||
### 2.2 公共字段说明
|
||||
|
||||
- **`id`**: 主键,使用雪花算法生成的 bigint 类型
|
||||
- **`create_time`**: 记录创建时间,便于数据追踪和审计
|
||||
- **`update_time`**: 记录最后更新时间,便于数据同步和缓存失效
|
||||
- **`create_by`**: 创建者用户ID,便于权限控制和数据追溯
|
||||
- **`update_by`**: 更新者用户ID,便于操作审计
|
||||
- **`del_flag`**: 逻辑删除标志,0表示正常,1表示删除
|
||||
- **`tenant_id`**: 租户隔离字段,支持多租户架构
|
||||
- **`remark`**: 备注信息,便于业务说明
|
||||
|
||||
## 3. SQL 更新管理规范
|
||||
|
||||
### 3.1 目录结构
|
||||
|
||||
```
|
||||
script/
|
||||
├── sql/
|
||||
│ ├── ruoyi-ai.sql # 初始化SQL文件
|
||||
│ └── update/ # 增量更新SQL目录
|
||||
│ ├── 2024-05-24-chat-message-billing-type.sql
|
||||
│ ├── 2024-07-13-chat-model-priority.sql
|
||||
│ └── 2024-08-15-knowledge-role-bak.sql
|
||||
└── deploy/
|
||||
└── deploy/
|
||||
└── mysql-init/
|
||||
└── ruoyi-ai.sql # Docker初始化SQL(与主文件同步)
|
||||
```
|
||||
|
||||
### 3.2 更新SQL规范
|
||||
|
||||
**【强制】** 增量更新SQL文件必须放在 `script/sql/update/` 目录下。
|
||||
|
||||
**【强制】** 更新SQL文件命名格式:`YYYY-MM-DD-功能描述.sql`
|
||||
|
||||
**正例:**
|
||||
```
|
||||
2024-05-24-chat-message-billing-type.sql
|
||||
2024-07-13-chat-model-priority.sql
|
||||
2024-08-15-knowledge-role-backup.sql
|
||||
```
|
||||
|
||||
**【强制】** 每个更新SQL文件必须包含:
|
||||
- 文件头部注释说明变更内容
|
||||
- 变更日期和负责人
|
||||
- 具体的DDL/DML语句
|
||||
|
||||
**正例:**
|
||||
```sql
|
||||
-- 为 chat_message 表添加 billing_type 字段
|
||||
-- 变更日期: 2024-05-24
|
||||
-- 负责人: 张三
|
||||
-- 说明: 支持消息计费类型区分
|
||||
|
||||
ALTER TABLE chat_message
|
||||
ADD COLUMN billing_type char NULL COMMENT '计费类型(1-token计费,2-次数计费,null-普通消息)';
|
||||
```
|
||||
|
||||
### 3.3 部署流程
|
||||
|
||||
#### 3.3.1 首次部署
|
||||
|
||||
**【强制】** 首次初始化项目只需要执行:
|
||||
```bash
|
||||
mysql -u root -p database_name < script/sql/ruoyi-ai.sql
|
||||
```
|
||||
|
||||
#### 3.3.2 增量更新
|
||||
|
||||
**【强制】** 代码更新时,按日期顺序执行 `script/sql/update/` 下的补丁SQL:
|
||||
|
||||
```bash
|
||||
# 按文件名日期顺序执行
|
||||
mysql -u root -p database_name < script/sql/update/2024-05-24-chat-message-billing-type.sql
|
||||
mysql -u root -p database_name < script/sql/update/2024-07-13-chat-model-priority.sql
|
||||
```
|
||||
|
||||
#### 3.3.3 同步更新
|
||||
|
||||
**【强制】** 当数据库发生变化时,必须同时完成以下操作:
|
||||
|
||||
1. 在 `script/sql/update/` 下添加增量SQL补丁
|
||||
2. 将变更同步更新到初始化文件 `script/sql/ruoyi-ai.sql`
|
||||
3. 同步更新Docker初始化文件 `script/deploy/deploy/mysql-init/ruoyi-ai.sql`
|
||||
|
||||
**说明:** 确保三个文件的最终状态保持一致,新部署的环境和增量更新的环境数据库结构完全相同。
|
||||
|
||||
---
|
||||
|
||||
>
|
||||
> 最后更新时间:2025-09-17
|
||||
@@ -1,100 +0,0 @@
|
||||
/*
|
||||
Navicat Premium Dump SQL
|
||||
|
||||
Source Server : mysql-local-study
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80405 (8.4.5)
|
||||
Source Host : 100.168.0.1:3500
|
||||
Source Schema : ruoyi-ai
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80405 (8.4.5)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 20/07/2025 10:01:42
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for knowledge_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `knowledge_role`;
|
||||
CREATE TABLE `knowledge_role`
|
||||
(
|
||||
`id` bigint NOT NULL COMMENT '知识库角色id',
|
||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色name',
|
||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
`group_id` bigint NULL DEFAULT NULL COMMENT '知识库角色组id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色表'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for knowledge_role_group
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `knowledge_role_group`;
|
||||
CREATE TABLE `knowledge_role_group`
|
||||
(
|
||||
`id` bigint NOT NULL COMMENT '知识库角色组id',
|
||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色组name',
|
||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色组表'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for knowledge_role_relation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `knowledge_role_relation`;
|
||||
CREATE TABLE `knowledge_role_relation`
|
||||
(
|
||||
`id` bigint NOT NULL COMMENT 'id',
|
||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
`knowledge_role_id` bigint NULL DEFAULT NULL COMMENT '知识库角色id',
|
||||
`knowledge_id` bigint NULL DEFAULT NULL COMMENT '知识库id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色与知识库关联表'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
-- 菜单
|
||||
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`,
|
||||
`is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||
VALUES (1946483381643743233, '知识库角色管理', 1775500307898949634, '12', 'knowledgeRole',
|
||||
'operator/knowledgeRole/index', NULL, 1, 0, 'C', '0', '0', NULL, 'ri:user-3-fill', 103, 1,
|
||||
'2025-07-19 16:41:17', NULL, NULL, '知识库角色管理');
|
||||
|
||||
-- 用户表添加字段
|
||||
ALTER TABLE sys_user
|
||||
ADD COLUMN `krole_group_type` VARCHAR(50) COMMENT '关联知识库角色/角色组',
|
||||
ADD COLUMN `krole_group_ids` TEXT COMMENT '关联知识库角色/角色组id';
|
||||
|
||||
Reference in New Issue
Block a user