3.1 KiB
3.1 KiB
训练表结构设计说明
问题描述
发现数据库表命名不一致的问题:
- 代码中引用了
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 类型定义设计了完整的字段结构:
- 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 - 更新时间
数据库部署
执行步骤
- 运行
create_training_projects_tables.sql创建表结构 - 确认应用代码使用正确的表名
- 测试功能是否正常工作
示例数据
已包含5个示例训练项目:
- 5公里跑步
- 俯卧撑训练
- 篮球基础
- 游泳训练
- 瑜伽基础
下一步工作
1. 代码检查
确认所有引用 training_projects 的地方都能正常工作:
- ✅
sportsservice.uts- 已使用正确表名 - ✅
projects-management.uvue- 已修复不一致问题 - 📋 其他可能的引用位置需要检查
2. 功能测试
- 📋 测试项目列表加载
- 📋 测试项目创建功能
- 📋 测试项目编辑功能
- 📋 测试项目状态切换
3. 数据迁移(如需要)
如果现有环境中有相关数据,可能需要数据迁移策略。
设计理念
这个设计遵循了以下原则:
- 概念清晰:训练项目和训练计划概念分离
- 代码兼容:支持现有Service层代码
- 命名一致:提供两个表名选项以适应不同的命名约定
- 扩展性:字段设计支持未来功能扩展
- 数据完整性:包含必要的约束和索引