Files
akmon/doc_zhipao/TRAINING_TABLES_DESIGN.md
2026-01-20 08:04:15 +08:00

3.1 KiB
Raw Permalink Blame History

训练表结构设计说明

问题描述

发现数据库表命名不一致的问题:

  • 代码中引用了 training_projectsak_training_projects 两个表名
  • 数据库中只存在 ak_training_plans(训练计划)表
  • 缺少 training_projects(训练项目)表的定义

概念区分

Training Projects训练项目

  • 概念:可复用的训练活动模板
  • 用途:定义标准化的训练内容,如"5公里跑步"、"篮球基础训练"等
  • 特点:模板化、可重复使用、包含评分标准和训练要点
  • 表名training_projectsak_training_projects

Training Plans训练计划

  • 概念:具体的训练安排
  • 用途:为特定用户制定的个性化训练计划
  • 特点:个人化、时间性、包含具体的开始结束日期
  • 表名ak_training_plans

解决方案

1. 创建缺失的表

创建了 create_training_projects_tables.sql 文件,包含:

  • training_projectsService层使用
  • 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 - 更新时间

数据库部署

执行步骤

  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. 数据完整性:包含必要的约束和索引