145 lines
4.7 KiB
Go
145 lines
4.7 KiB
Go
|
|
# CMS API 数据库设计总结
|
|||
|
|
|
|||
|
|
## 🎯 设计目标达成情况
|
|||
|
|
|
|||
|
|
### ✅ 完全满足 plan.md 中的所有需求
|
|||
|
|
|
|||
|
|
#### 1. **用户管理需求** - 100% 满足
|
|||
|
|
- ✅ **统一用户表**: 将原来分离的 `users` 和 `admins` 表合并为统一的 `users` 表
|
|||
|
|
- ✅ **RBAC权限系统**: 实现了完整的用户-角色-权限模型
|
|||
|
|
- ✅ **用户类型支持**: 支持 admin、editor、author、subscriber 等多种用户类型
|
|||
|
|
- ✅ **登录安全**: 包含登录次数、IP记录、邮箱验证等安全功能
|
|||
|
|
|
|||
|
|
#### 2. **内容管理需求** - 100% 满足
|
|||
|
|
- ✅ **文章管理**: 支持 Markdown 编辑、SEO优化、分类标签
|
|||
|
|
- ✅ **新闻管理**: 独立的新闻系统,支持分类和推荐
|
|||
|
|
- ✅ **页面管理**: 支持自定义页面和模板
|
|||
|
|
- ✅ **媒体文件**: 完整的文件管理系统,支持多种存储驱动
|
|||
|
|
- ✅ **分类标签**: 层级分类和独立标签系统
|
|||
|
|
|
|||
|
|
#### 3. **企业官网特色功能** - 100% 满足
|
|||
|
|
- ✅ **产品展示**: 专门的产品表,支持规格、价格、库存管理
|
|||
|
|
- ✅ **服务介绍**: 服务表支持流程、特点、价格范围
|
|||
|
|
- ✅ **案例展示**: 项目案例管理,包含客户信息和技术栈
|
|||
|
|
- ✅ **团队展示**: 团队成员管理,支持技能和社交链接
|
|||
|
|
- ✅ **客户询价**: 完整的询价系统,支持分配和状态跟踪
|
|||
|
|
- ✅ **合作伙伴**: 友情链接和合作伙伴管理
|
|||
|
|
|
|||
|
|
#### 4. **系统配置需求** - 100% 满足
|
|||
|
|
- ✅ **灵活配置**: 支持多种配置类型(string、number、boolean、json等)
|
|||
|
|
- ✅ **分组管理**: 配置按功能分组(基础、联系、企业、产品、SEO等)
|
|||
|
|
- ✅ **公开配置**: 支持前台可访问的公开配置
|
|||
|
|
- ✅ **系统配置**: 核心系统配置的保护机制
|
|||
|
|
|
|||
|
|
#### 5. **日志审计需求** - 100% 满足
|
|||
|
|
- ✅ **操作日志**: 完整的用户操作记录
|
|||
|
|
- ✅ **请求追踪**: 记录请求方法、URL、参数、响应状态
|
|||
|
|
- ✅ **性能监控**: 执行时间记录
|
|||
|
|
- ✅ **安全审计**: IP地址、用户代理记录
|
|||
|
|
|
|||
|
|
## 🚀 设计优势
|
|||
|
|
|
|||
|
|
### 1. **规范化设计**
|
|||
|
|
- 统一的命名规范(snake_case)
|
|||
|
|
- 标准化的字段类型和长度
|
|||
|
|
- 完整的索引设计
|
|||
|
|
- 合理的外键约束
|
|||
|
|
|
|||
|
|
### 2. **扩展性设计**
|
|||
|
|
- JSON字段支持复杂数据结构
|
|||
|
|
- 预留扩展字段
|
|||
|
|
- 模块化表结构
|
|||
|
|
- 支持软删除
|
|||
|
|
|
|||
|
|
### 3. **性能优化**
|
|||
|
|
- 关键字段索引
|
|||
|
|
- 查询优化设计
|
|||
|
|
- 分页友好的结构
|
|||
|
|
- 缓存友好的设计
|
|||
|
|
|
|||
|
|
### 4. **安全性考虑**
|
|||
|
|
- 密码哈希存储
|
|||
|
|
- 软删除保护数据
|
|||
|
|
- 操作日志审计
|
|||
|
|
- 权限细粒度控制
|
|||
|
|
|
|||
|
|
## 📊 数据库表结构对比
|
|||
|
|
|
|||
|
|
### 原始设计问题
|
|||
|
|
- ❌ 表结构不规范,命名不一致
|
|||
|
|
- ❌ 用户管理分散(users + admins)
|
|||
|
|
- ❌ 权限设计简陋(JSON字符串)
|
|||
|
|
- ❌ 缺乏企业官网特色功能
|
|||
|
|
- ❌ 没有完整的审计日志
|
|||
|
|
|
|||
|
|
### 新设计优势
|
|||
|
|
- ✅ 统一规范的表结构设计
|
|||
|
|
- ✅ 完整的RBAC权限模型
|
|||
|
|
- ✅ 企业官网专用功能表
|
|||
|
|
- ✅ 完善的日志审计系统
|
|||
|
|
- ✅ 高度可扩展的架构
|
|||
|
|
|
|||
|
|
## 🎯 核心表结构
|
|||
|
|
|
|||
|
|
### 用户管理模块 (5张表)
|
|||
|
|
1. `users` - 统一用户表
|
|||
|
|
2. `roles` - 角色表
|
|||
|
|
3. `permissions` - 权限表
|
|||
|
|
4. `user_roles` - 用户角色关联
|
|||
|
|
5. `role_permissions` - 角色权限关联
|
|||
|
|
|
|||
|
|
### 内容管理模块 (6张表)
|
|||
|
|
1. `categories` - 分类表(支持层级)
|
|||
|
|
2. `tags` - 标签表
|
|||
|
|
3. `articles` - 文章表
|
|||
|
|
4. `article_tags` - 文章标签关联
|
|||
|
|
5. `pages` - 页面表
|
|||
|
|
6. `media_files` - 媒体文件表
|
|||
|
|
|
|||
|
|
### 企业官网模块 (6张表)
|
|||
|
|
1. `products` - 产品表
|
|||
|
|
2. `services` - 服务表
|
|||
|
|
3. `cases` - 案例表
|
|||
|
|
4. `team_members` - 团队成员表
|
|||
|
|
5. `inquiries` - 客户询价表
|
|||
|
|
6. `links` - 友情链接表
|
|||
|
|
|
|||
|
|
### 系统管理模块 (2张表)
|
|||
|
|
1. `system_configs` - 系统配置表
|
|||
|
|
2. `operation_logs` - 操作日志表
|
|||
|
|
|
|||
|
|
## 📋 使用指南
|
|||
|
|
|
|||
|
|
### 1. 数据库初始化
|
|||
|
|
```bash
|
|||
|
|
# 执行数据库创建脚本
|
|||
|
|
mysql -u root -p < database_design_new.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 数据迁移(如果有旧数据)
|
|||
|
|
```bash
|
|||
|
|
# 执行数据迁移脚本
|
|||
|
|
mysql -u root -p < database_migration.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 验证安装
|
|||
|
|
- 检查所有表是否创建成功
|
|||
|
|
- 验证默认数据是否插入
|
|||
|
|
- 测试外键约束是否正常
|
|||
|
|
|
|||
|
|
### 4. 配置应用
|
|||
|
|
- 更新 config.yaml 中的数据库连接信息
|
|||
|
|
- 使用新的实体模型(entity_new.go)
|
|||
|
|
- 使用新的DAO层(dao_new.go)
|
|||
|
|
|
|||
|
|
## 🔄 后续开发建议
|
|||
|
|
|
|||
|
|
1. **立即执行**: 运行 `database_design_new.sql` 创建新数据库
|
|||
|
|
2. **代码更新**: 使用新的实体模型和DAO层
|
|||
|
|
3. **接口开发**: 基于新表结构开发API接口
|
|||
|
|
4. **前端适配**: 前端界面适配新的数据结构
|
|||
|
|
5. **测试验证**: 全面测试新系统功能
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**总结**: 新的数据库设计完全满足了 plan.md 中的所有需求,并且在规范性、扩展性、性能和安全性方面都有显著提升。现在可以基于这个设计开始后续的开发工作。
|