530 lines
17 KiB
Markdown
530 lines
17 KiB
Markdown
# 项目管理系统数据库设计文档
|
||
|
||
## 文档信息
|
||
- **文档版本**: V1.0
|
||
- **创建日期**: 2026-01-26
|
||
- **文档类型**: 数据库设计文档 (DDD)
|
||
|
||
---
|
||
|
||
## 1. 数据库概述
|
||
|
||
### 1.1 数据库选型
|
||
- **数据库类型**: 关系型数据库
|
||
- **推荐数据库**: MySQL / PostgreSQL
|
||
|
||
### 1.2 数据库设计原则
|
||
- 遵循第三范式(3NF)
|
||
- 合理使用索引提高查询性能
|
||
- 考虑数据完整性和一致性
|
||
- 支持事务处理
|
||
- 便于扩展和维护
|
||
|
||
---
|
||
|
||
## 2. 数据库表设计
|
||
|
||
### 2.1 用户表 (sys_user)
|
||
|
||
#### 2.1.1 表说明
|
||
存储系统用户的基本信息和认证信息。
|
||
|
||
#### 2.1.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| user_id | VARCHAR | 32 | 是 | - | 用户ID,主键 |
|
||
| username | VARCHAR | 50 | 是 | - | 用户名,唯一 |
|
||
| password | VARCHAR | 128 | 是 | - | 密码,加密存储 |
|
||
| real_name | VARCHAR | 50 | 是 | - | 真实姓名 |
|
||
| department | VARCHAR | 50 | 是 | - | 部门 |
|
||
| phone | VARCHAR | 20 | 否 | NULL | 联系电话 |
|
||
| email | VARCHAR | 100 | 否 | NULL | 邮箱 |
|
||
| role | VARCHAR | 20 | 是 | - | 角色 |
|
||
| status | TINYINT | 1 | 是 | 1 | 状态:1-正常,0-禁用 |
|
||
| create_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
|
||
| update_time | DATETIME | - | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||
| last_login_time | DATETIME | - | 否 | NULL | 最后登录时间 |
|
||
|
||
#### 2.1.3 索引设计
|
||
- PRIMARY KEY: user_id
|
||
- UNIQUE KEY: uk_username (username)
|
||
- INDEX: idx_department (department)
|
||
- INDEX: idx_role (role)
|
||
- INDEX: idx_status (status)
|
||
|
||
#### 2.1.4 外键约束
|
||
无
|
||
|
||
---
|
||
|
||
### 2.2 项目表 (project)
|
||
|
||
#### 2.2.1 表说明
|
||
存储项目的基本信息和详细内容。
|
||
|
||
#### 2.2.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| project_id | VARCHAR | 32 | 是 | - | 项目ID,主键 |
|
||
| project_no | VARCHAR | 20 | 是 | - | 项目编号,唯一 |
|
||
| project_name | VARCHAR | 200 | 是 | - | 项目名称 |
|
||
| status | VARCHAR | 20 | 是 | 'NOT_STARTED' | 项目状态 |
|
||
| create_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
|
||
| creator | VARCHAR | 50 | 是 | - | 创建人 |
|
||
| update_time | DATETIME | - | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 最后修改时间 |
|
||
| last_modifier | VARCHAR | 50 | 否 | NULL | 最后修改人 |
|
||
| leader | VARCHAR | 50 | 是 | - | 负责人 |
|
||
| phone | VARCHAR | 20 | 否 | NULL | 联系电话 |
|
||
| email | VARCHAR | 100 | 否 | NULL | 邮箱 |
|
||
| background | TEXT | - | 否 | NULL | 项目背景 |
|
||
| goal | TEXT | - | 否 | NULL | 项目目标 |
|
||
| scope | TEXT | - | 否 | NULL | 项目范围 |
|
||
| start_date | DATE | - | 是 | - | 开始日期 |
|
||
| planned_end_date | DATE | - | 是 | - | 预计结束日期 |
|
||
| actual_end_date | DATE | - | 否 | NULL | 实际结束日期 |
|
||
| total_budget | DECIMAL | 15,2 | 是 | 0.00 | 总预算 |
|
||
| used_budget | DECIMAL | 15,2 | 是 | 0.00 | 已使用预算 |
|
||
| remaining_budget | DECIMAL | 15,2 | 是 | 0.00 | 剩余预算 |
|
||
| remarks | TEXT | - | 否 | NULL | 备注 |
|
||
|
||
#### 2.2.3 索引设计
|
||
- PRIMARY KEY: project_id
|
||
- UNIQUE KEY: uk_project_no (project_no)
|
||
- INDEX: idx_status (status)
|
||
- INDEX: idx_creator (creator)
|
||
- INDEX: idx_leader (leader)
|
||
- INDEX: idx_create_time (create_time)
|
||
- INDEX: idx_update_time (update_time)
|
||
|
||
#### 2.2.4 外键约束
|
||
无
|
||
|
||
---
|
||
|
||
### 2.3 项目成员表 (project_member)
|
||
|
||
#### 2.3.1 表说明
|
||
存储项目成员信息。
|
||
|
||
#### 2.3.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| member_id | VARCHAR | 32 | 是 | - | 成员ID,主键 |
|
||
| project_id | VARCHAR | 32 | 是 | - | 项目ID,外键 |
|
||
| name | VARCHAR | 50 | 是 | - | 姓名 |
|
||
| role | VARCHAR | 50 | 是 | - | 角色 |
|
||
| department | VARCHAR | 50 | 是 | - | 部门 |
|
||
| create_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
|
||
|
||
#### 2.3.3 索引设计
|
||
- PRIMARY KEY: member_id
|
||
- INDEX: idx_project_id (project_id)
|
||
|
||
#### 2.3.4 外键约束
|
||
- FOREIGN KEY: project_id -> project(project_id) ON DELETE CASCADE
|
||
|
||
---
|
||
|
||
### 2.4 项目里程碑表 (project_milestone)
|
||
|
||
#### 2.4.1 表说明
|
||
存储项目里程碑信息。
|
||
|
||
#### 2.4.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| milestone_id | VARCHAR | 32 | 是 | - | 里程碑ID,主键 |
|
||
| project_id | VARCHAR | 32 | 是 | - | 项目ID,外键 |
|
||
| name | VARCHAR | 200 | 是 | - | 名称 |
|
||
| planned_date | DATE | - | 是 | - | 计划日期 |
|
||
| actual_date | DATE | - | 否 | NULL | 实际日期 |
|
||
| status | VARCHAR | 20 | 是 | 'NOT_STARTED' | 状态 |
|
||
| create_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
|
||
| update_time | DATETIME | - | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||
|
||
#### 2.4.3 索引设计
|
||
- PRIMARY KEY: milestone_id
|
||
- INDEX: idx_project_id (project_id)
|
||
- INDEX: idx_status (status)
|
||
|
||
#### 2.4.4 外键约束
|
||
- FOREIGN KEY: project_id -> project(project_id) ON DELETE CASCADE
|
||
|
||
---
|
||
|
||
### 2.5 项目风险表 (project_risk)
|
||
|
||
#### 2.5.1 表说明
|
||
存储项目风险信息。
|
||
|
||
#### 2.5.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| risk_id | VARCHAR | 32 | 是 | - | 风险ID,主键 |
|
||
| project_id | VARCHAR | 32 | 是 | - | 项目ID,外键 |
|
||
| description | TEXT | - | 是 | - | 描述 |
|
||
| level | VARCHAR | 20 | 是 | - | 等级 |
|
||
| measure | TEXT | - | 是 | - | 应对措施 |
|
||
| create_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
|
||
|
||
#### 2.5.3 索引设计
|
||
- PRIMARY KEY: risk_id
|
||
- INDEX: idx_project_id (project_id)
|
||
- INDEX: idx_level (level)
|
||
|
||
#### 2.5.4 外键约束
|
||
- FOREIGN KEY: project_id -> project(project_id) ON DELETE CASCADE
|
||
|
||
---
|
||
|
||
### 2.6 项目历史记录表 (project_history)
|
||
|
||
#### 2.6.1 表说明
|
||
存储项目修改历史记录。
|
||
|
||
#### 2.6.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| history_id | VARCHAR | 32 | 是 | - | 历史记录ID,主键 |
|
||
| project_id | VARCHAR | 32 | 是 | - | 项目ID,外键 |
|
||
| project_no | VARCHAR | 20 | 是 | - | 项目编号 |
|
||
| operation_type | VARCHAR | 20 | 是 | - | 操作类型 |
|
||
| operator | VARCHAR | 50 | 是 | - | 操作人 |
|
||
| operation_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 操作时间 |
|
||
| field_name | VARCHAR | 100 | 是 | - | 字段名 |
|
||
| old_value | TEXT | - | 否 | NULL | 修改前值 |
|
||
| new_value | TEXT | - | 否 | NULL | 修改后值 |
|
||
|
||
#### 2.6.3 索引设计
|
||
- PRIMARY KEY: history_id
|
||
- INDEX: idx_project_id (project_id)
|
||
- INDEX: idx_project_no (project_no)
|
||
- INDEX: idx_operation_time (operation_time)
|
||
- INDEX: idx_operator (operator)
|
||
|
||
#### 2.6.4 外键约束
|
||
- FOREIGN KEY: project_id -> project(project_id) ON DELETE CASCADE
|
||
|
||
---
|
||
|
||
### 2.7 操作日志表 (operation_log)
|
||
|
||
#### 2.7.1 表说明
|
||
存储用户操作日志。
|
||
|
||
#### 2.7.2 表结构
|
||
|
||
| 字段名 | 数据类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||
|--------|----------|------|----------|--------|------|
|
||
| log_id | VARCHAR | 32 | 是 | - | 日志ID,主键 |
|
||
| user_id | VARCHAR | 32 | 是 | - | 用户ID,外键 |
|
||
| username | VARCHAR | 50 | 是 | - | 用户名 |
|
||
| operation | VARCHAR | 100 | 是 | - | 操作内容 |
|
||
| ip_address | VARCHAR | 50 | 否 | NULL | IP地址 |
|
||
| user_agent | VARCHAR | 500 | 否 | NULL | 用户代理 |
|
||
| operation_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 操作时间 |
|
||
|
||
#### 2.7.3 索引设计
|
||
- PRIMARY KEY: log_id
|
||
- INDEX: idx_user_id (user_id)
|
||
- INDEX: idx_operation_time (operation_time)
|
||
|
||
#### 2.7.4 外键约束
|
||
- FOREIGN KEY: user_id -> sys_user(user_id) ON DELETE CASCADE
|
||
|
||
---
|
||
|
||
## 3. 数据库关系图
|
||
|
||
### 3.1 ER图描述
|
||
|
||
```
|
||
sys_user (用户表)
|
||
|
|
||
| 1
|
||
|
|
||
| N
|
||
|
|
||
operation_log (操作日志表)
|
||
|
||
project (项目表)
|
||
|
|
||
| 1
|
||
|
|
||
| N
|
||
|
|
||
+-- project_member (项目成员表)
|
||
|
|
||
| 1
|
||
|
|
||
| N
|
||
|
|
||
+-- project_milestone (项目里程碑表)
|
||
|
|
||
| 1
|
||
|
|
||
| N
|
||
|
|
||
+-- project_risk (项目风险表)
|
||
|
|
||
| 1
|
||
|
|
||
| N
|
||
|
|
||
+-- project_history (项目历史记录表)
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 数据字典
|
||
|
||
### 4.1 用户角色枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| ADMIN | 管理员 |
|
||
| MARKETING | 市场部 |
|
||
| OTHER | 其他部门 |
|
||
|
||
### 4.2 项目状态枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| NOT_STARTED | 未开始 |
|
||
| IN_PROGRESS | 进行中 |
|
||
| COMPLETED | 已完成 |
|
||
| PAUSED | 已暂停 |
|
||
| CANCELLED | 已取消 |
|
||
|
||
### 4.3 里程碑状态枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| NOT_STARTED | 未开始 |
|
||
| IN_PROGRESS | 进行中 |
|
||
| COMPLETED | 已完成 |
|
||
|
||
### 4.4 风险等级枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| HIGH | 高 |
|
||
| MEDIUM | 中 |
|
||
| LOW | 低 |
|
||
|
||
### 4.5 操作类型枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| CREATE | 创建 |
|
||
| UPDATE | 更新 |
|
||
| DELETE | 删除 |
|
||
|
||
### 4.6 部门枚举值
|
||
| 值 | 说明 |
|
||
|----|------|
|
||
| MARKETING | 市场部 |
|
||
| TECHNOLOGY | 技术部 |
|
||
| DESIGN | 设计部 |
|
||
| FINANCE | 财务部 |
|
||
| HR | 人力资源部 |
|
||
|
||
---
|
||
|
||
## 5. 数据库初始化脚本
|
||
|
||
### 5.1 建表脚本
|
||
|
||
```sql
|
||
-- 创建用户表
|
||
CREATE TABLE sys_user (
|
||
user_id VARCHAR(32) PRIMARY KEY COMMENT '用户ID',
|
||
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
|
||
password VARCHAR(128) NOT NULL COMMENT '密码',
|
||
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
|
||
department VARCHAR(50) NOT NULL COMMENT '部门',
|
||
phone VARCHAR(20) COMMENT '联系电话',
|
||
email VARCHAR(100) COMMENT '邮箱',
|
||
role VARCHAR(20) NOT NULL COMMENT '角色',
|
||
status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态:1-正常,0-禁用',
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
last_login_time DATETIME COMMENT '最后登录时间',
|
||
INDEX idx_department (department),
|
||
INDEX idx_role (role),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||
|
||
-- 创建项目表
|
||
CREATE TABLE project (
|
||
project_id VARCHAR(32) PRIMARY KEY COMMENT '项目ID',
|
||
project_no VARCHAR(20) NOT NULL UNIQUE COMMENT '项目编号',
|
||
project_name VARCHAR(200) NOT NULL COMMENT '项目名称',
|
||
status VARCHAR(20) NOT NULL DEFAULT 'NOT_STARTED' COMMENT '项目状态',
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
creator VARCHAR(50) NOT NULL COMMENT '创建人',
|
||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
|
||
last_modifier VARCHAR(50) COMMENT '最后修改人',
|
||
leader VARCHAR(50) NOT NULL COMMENT '负责人',
|
||
phone VARCHAR(20) COMMENT '联系电话',
|
||
email VARCHAR(100) COMMENT '邮箱',
|
||
background TEXT COMMENT '项目背景',
|
||
goal TEXT COMMENT '项目目标',
|
||
scope TEXT COMMENT '项目范围',
|
||
start_date DATE NOT NULL COMMENT '开始日期',
|
||
planned_end_date DATE NOT NULL COMMENT '预计结束日期',
|
||
actual_end_date DATE COMMENT '实际结束日期',
|
||
total_budget DECIMAL(15,2) NOT NULL DEFAULT 0.00 COMMENT '总预算',
|
||
used_budget DECIMAL(15,2) NOT NULL DEFAULT 0.00 COMMENT '已使用预算',
|
||
remaining_budget DECIMAL(15,2) NOT NULL DEFAULT 0.00 COMMENT '剩余预算',
|
||
remarks TEXT COMMENT '备注',
|
||
INDEX idx_status (status),
|
||
INDEX idx_creator (creator),
|
||
INDEX idx_leader (leader),
|
||
INDEX idx_create_time (create_time),
|
||
INDEX idx_update_time (update_time)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表';
|
||
|
||
-- 创建项目成员表
|
||
CREATE TABLE project_member (
|
||
member_id VARCHAR(32) PRIMARY KEY COMMENT '成员ID',
|
||
project_id VARCHAR(32) NOT NULL COMMENT '项目ID',
|
||
name VARCHAR(50) NOT NULL COMMENT '姓名',
|
||
role VARCHAR(50) NOT NULL COMMENT '角色',
|
||
department VARCHAR(50) NOT NULL COMMENT '部门',
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
FOREIGN KEY (project_id) REFERENCES project(project_id) ON DELETE CASCADE,
|
||
INDEX idx_project_id (project_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目成员表';
|
||
|
||
-- 创建项目里程碑表
|
||
CREATE TABLE project_milestone (
|
||
milestone_id VARCHAR(32) PRIMARY KEY COMMENT '里程碑ID',
|
||
project_id VARCHAR(32) NOT NULL COMMENT '项目ID',
|
||
name VARCHAR(200) NOT NULL COMMENT '名称',
|
||
planned_date DATE NOT NULL COMMENT '计划日期',
|
||
actual_date DATE COMMENT '实际日期',
|
||
status VARCHAR(20) NOT NULL DEFAULT 'NOT_STARTED' COMMENT '状态',
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
FOREIGN KEY (project_id) REFERENCES project(project_id) ON DELETE CASCADE,
|
||
INDEX idx_project_id (project_id),
|
||
INDEX idx_status (status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目里程碑表';
|
||
|
||
-- 创建项目风险表
|
||
CREATE TABLE project_risk (
|
||
risk_id VARCHAR(32) PRIMARY KEY COMMENT '风险ID',
|
||
project_id VARCHAR(32) NOT NULL COMMENT '项目ID',
|
||
description TEXT NOT NULL COMMENT '描述',
|
||
level VARCHAR(20) NOT NULL COMMENT '等级',
|
||
measure TEXT NOT NULL COMMENT '应对措施',
|
||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
FOREIGN KEY (project_id) REFERENCES project(project_id) ON DELETE CASCADE,
|
||
INDEX idx_project_id (project_id),
|
||
INDEX idx_level (level)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目风险表';
|
||
|
||
-- 创建项目历史记录表
|
||
CREATE TABLE project_history (
|
||
history_id VARCHAR(32) PRIMARY KEY COMMENT '历史记录ID',
|
||
project_id VARCHAR(32) NOT NULL COMMENT '项目ID',
|
||
project_no VARCHAR(20) NOT NULL COMMENT '项目编号',
|
||
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型',
|
||
operator VARCHAR(50) NOT NULL COMMENT '操作人',
|
||
operation_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||
field_name VARCHAR(100) NOT NULL COMMENT '字段名',
|
||
old_value TEXT COMMENT '修改前值',
|
||
new_value TEXT COMMENT '修改后值',
|
||
FOREIGN KEY (project_id) REFERENCES project(project_id) ON DELETE CASCADE,
|
||
INDEX idx_project_id (project_id),
|
||
INDEX idx_project_no (project_no),
|
||
INDEX idx_operation_time (operation_time),
|
||
INDEX idx_operator (operator)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目历史记录表';
|
||
|
||
-- 创建操作日志表
|
||
CREATE TABLE operation_log (
|
||
log_id VARCHAR(32) PRIMARY KEY COMMENT '日志ID',
|
||
user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
|
||
username VARCHAR(50) NOT NULL COMMENT '用户名',
|
||
operation VARCHAR(100) NOT NULL COMMENT '操作内容',
|
||
ip_address VARCHAR(50) COMMENT 'IP地址',
|
||
user_agent VARCHAR(500) COMMENT '用户代理',
|
||
operation_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||
FOREIGN KEY (user_id) REFERENCES sys_user(user_id) ON DELETE CASCADE,
|
||
INDEX idx_user_id (user_id),
|
||
INDEX idx_operation_time (operation_time)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
|
||
```
|
||
|
||
### 5.2 初始化数据脚本
|
||
|
||
```sql
|
||
-- 插入管理员用户
|
||
INSERT INTO sys_user (user_id, username, password, real_name, department, role, status)
|
||
VALUES ('admin001', 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '系统管理员', 'ADMIN', 'ADMIN', 1);
|
||
|
||
-- 插入市场部用户
|
||
INSERT INTO sys_user (user_id, username, password, real_name, department, role, status)
|
||
VALUES ('marketing001', 'marketing', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '市场部经理', 'MARKETING', 'MARKETING', 1);
|
||
|
||
-- 插入其他部门用户
|
||
INSERT INTO sys_user (user_id, username, password, real_name, department, role, status)
|
||
VALUES ('other001', 'other', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '技术部经理', 'TECHNOLOGY', 'OTHER', 1);
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 数据库性能优化建议
|
||
|
||
### 6.1 索引优化
|
||
- 为常用查询字段创建索引
|
||
- 避免在索引列上进行函数操作
|
||
- 定期分析和优化索引
|
||
|
||
### 6.2 查询优化
|
||
- 避免使用SELECT *
|
||
- 合理使用JOIN
|
||
- 使用分页查询减少数据传输量
|
||
- 对大表进行分区处理
|
||
|
||
### 6.3 存储优化
|
||
- 定期清理历史数据
|
||
- 对大文本字段考虑单独存储
|
||
- 使用合适的数据类型减少存储空间
|
||
|
||
### 6.4 备份策略
|
||
- 每日全量备份
|
||
- 每小时增量备份
|
||
- 定期测试备份恢复
|
||
|
||
---
|
||
|
||
## 7. 数据库安全建议
|
||
|
||
### 7.1 访问控制
|
||
- 使用最小权限原则
|
||
- 定期修改数据库密码
|
||
- 限制数据库访问IP
|
||
|
||
### 7.2 数据加密
|
||
- 敏感字段加密存储
|
||
- 使用SSL连接数据库
|
||
- 定期更新加密算法
|
||
|
||
### 7.3 审计日志
|
||
- 记录所有数据库操作
|
||
- 定期审计日志
|
||
- 异常操作及时报警
|
||
|
||
---
|
||
|
||
## 8. 附录
|
||
|
||
### 8.1 变更记录
|
||
| 版本 | 日期 | 修改人 | 修改内容 |
|
||
|------|------|--------|----------|
|
||
| V1.0 | 2026-01-26 | - | 初始版本创建 |
|