Files
nl_cms-api/DATABASE_DESIGN_SUMMARY.md

145 lines
4.7 KiB
Go
Raw Normal View History

2025-07-29 12:45:07 +08:00
# CMS API 数据库设计总结
## 🎯 设计目标达成情况
### 完全满足 plan.md 中的所有需求
#### 1. **用户管理需求** - 100% 满足
- **统一用户表**: 将原来分离的 `users` `admins` 表合并为统一的 `users`
- **RBAC权限系统**: 实现了完整的用户-角色-权限模型
- **用户类型支持**: 支持 admineditorauthorsubscriber 等多种用户类型
- **登录安全**: 包含登录次数IP记录邮箱验证等安全功能
#### 2. **内容管理需求** - 100% 满足
- **文章管理**: 支持 Markdown 编辑SEO优化分类标签
- **新闻管理**: 独立的新闻系统支持分类和推荐
- **页面管理**: 支持自定义页面和模板
- **媒体文件**: 完整的文件管理系统支持多种存储驱动
- **分类标签**: 层级分类和独立标签系统
#### 3. **企业官网特色功能** - 100% 满足
- **产品展示**: 专门的产品表支持规格价格库存管理
- **服务介绍**: 服务表支持流程特点价格范围
- **案例展示**: 项目案例管理包含客户信息和技术栈
- **团队展示**: 团队成员管理支持技能和社交链接
- **客户询价**: 完整的询价系统支持分配和状态跟踪
- **合作伙伴**: 友情链接和合作伙伴管理
#### 4. **系统配置需求** - 100% 满足
- **灵活配置**: 支持多种配置类型stringnumberbooleanjson等
- **分组管理**: 配置按功能分组基础联系企业产品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 中的所有需求并且在规范性扩展性性能和安全性方面都有显著提升现在可以基于这个设计开始后续的开发工作