数据模型 #

这一页描述当前 Phase 1 已经落地的核心实体关系,后续功能都建立在这套模型之上。

核心实体 #

  • User: 用户账户与登录身份,包含用户名、邮箱、密码哈希和角色
  • Course: 课程容器,由教师创建并作为教学主线
  • CourseMember: 课程成员关系,记录用户和课程之间的绑定以及成员角色
  • Experiment: 实验任务,隶属于某一门课程
  • Submission: 实验提交记录,记录学生每次提交的文件、时间和评估信息

关系约束 #

  • 一个 User 可以创建多个 Course
  • 一个 Course 只有一个负责人教师,但可以有多个成员
  • 一个 User 可以加入多个 Course
  • 一个 Course 下面可以有多个 Experiment
  • 一个 Experiment 可以有多个 Submission
  • 一个 User 对同一个 Experiment 可以提交多次,最新提交通过 latest 标记

约束原则 #

  • 课程成员关系必须通过中间表表达,不直接把学生列表冗余到课程表里
  • 提交记录必须保留历史,不能只存最后一次结果
  • 文件路径与数据库记录必须一致,避免提交丢失后无法追踪
  • 角色权限逻辑必须由后端统一控制,避免散落在页面或服务里