94 lines
3.1 KiB
Markdown
94 lines
3.1 KiB
Markdown
# 训练表结构设计说明
|
||
|
||
## 问题描述
|
||
发现数据库表命名不一致的问题:
|
||
- 代码中引用了 `training_projects` 和 `ak_training_projects` 两个表名
|
||
- 数据库中只存在 `ak_training_plans`(训练计划)表
|
||
- 缺少 `training_projects`(训练项目)表的定义
|
||
|
||
## 概念区分
|
||
|
||
### Training Projects(训练项目)
|
||
- **概念**:可复用的训练活动模板
|
||
- **用途**:定义标准化的训练内容,如"5公里跑步"、"篮球基础训练"等
|
||
- **特点**:模板化、可重复使用、包含评分标准和训练要点
|
||
- **表名**:`training_projects` 和 `ak_training_projects`
|
||
|
||
### Training Plans(训练计划)
|
||
- **概念**:具体的训练安排
|
||
- **用途**:为特定用户制定的个性化训练计划
|
||
- **特点**:个人化、时间性、包含具体的开始结束日期
|
||
- **表名**:`ak_training_plans`
|
||
|
||
## 解决方案
|
||
|
||
### 1. 创建缺失的表
|
||
创建了 `create_training_projects_tables.sql` 文件,包含:
|
||
- `training_projects` 表(Service层使用)
|
||
- `ak_training_projects` 表(与现有命名约定保持一致)
|
||
|
||
### 2. 统一表名引用
|
||
修复了 `projects-management.uvue` 中的不一致问题:
|
||
- 将第7行的 `ak_training_projects` 改为 `training_projects`
|
||
- 保持第90行的 `training_projects` 不变
|
||
- 确保整个文件使用统一的表名
|
||
|
||
### 3. 字段设计
|
||
基于 `TrainingProject` 类型定义设计了完整的字段结构:
|
||
```sql
|
||
- id: SERIAL PRIMARY KEY
|
||
- name: VARCHAR(128) - 项目名称
|
||
- description: TEXT - 项目描述
|
||
- category: VARCHAR(64) - 项目分类
|
||
- difficulty: INTEGER - 难度等级(1-5)
|
||
- duration: INTEGER - 持续时间(分钟)
|
||
- training_points: TEXT - 训练要点
|
||
- scoring_criteria: TEXT - 评分标准
|
||
- image_url: VARCHAR(512) - 项目图片
|
||
- status: VARCHAR(16) - 状态(active/inactive)
|
||
- usage_count: INTEGER - 使用次数统计
|
||
- created_at: TIMESTAMP - 创建时间
|
||
- updated_at: TIMESTAMP - 更新时间
|
||
```
|
||
|
||
## 数据库部署
|
||
|
||
### 执行步骤
|
||
1. 运行 `create_training_projects_tables.sql` 创建表结构
|
||
2. 确认应用代码使用正确的表名
|
||
3. 测试功能是否正常工作
|
||
|
||
### 示例数据
|
||
已包含5个示例训练项目:
|
||
- 5公里跑步
|
||
- 俯卧撑训练
|
||
- 篮球基础
|
||
- 游泳训练
|
||
- 瑜伽基础
|
||
|
||
## 下一步工作
|
||
|
||
### 1. 代码检查
|
||
确认所有引用 `training_projects` 的地方都能正常工作:
|
||
- ✅ `sportsservice.uts` - 已使用正确表名
|
||
- ✅ `projects-management.uvue` - 已修复不一致问题
|
||
- 📋 其他可能的引用位置需要检查
|
||
|
||
### 2. 功能测试
|
||
- 📋 测试项目列表加载
|
||
- 📋 测试项目创建功能
|
||
- 📋 测试项目编辑功能
|
||
- 📋 测试项目状态切换
|
||
|
||
### 3. 数据迁移(如需要)
|
||
如果现有环境中有相关数据,可能需要数据迁移策略。
|
||
|
||
## 设计理念
|
||
|
||
这个设计遵循了以下原则:
|
||
1. **概念清晰**:训练项目和训练计划概念分离
|
||
2. **代码兼容**:支持现有Service层代码
|
||
3. **命名一致**:提供两个表名选项以适应不同的命名约定
|
||
4. **扩展性**:字段设计支持未来功能扩展
|
||
5. **数据完整性**:包含必要的约束和索引
|