跳转至

第 5 章:综合项目——学习记录库

📋 本章概览

项目 内容
学习时长 50 分钟
核心概念 表设计、关联查询、统计、验收
核心比喻 把课程档案和学习流水账组装成个人仪表盘
实践任务 交付可统计学习投入的 SQLite 数据库
难度等级 ★★★★☆

完成一个小型数据库,支持:

  • 维护课程信息
  • 记录某天学习了某门课多少分钟
  • 查询每门课累计学习时间
  • 查询某个分类的学习投入

建议表结构

courses
  id, name, category, hours

study_records
  id, course_id, minutes, studied_at

验收查询

SELECT
    c.name,
    COALESCE(SUM(r.minutes), 0) AS total_minutes
FROM courses AS c
LEFT JOIN study_records AS r ON r.course_id = c.id
GROUP BY c.id, c.name
ORDER BY total_minutes DESC;

继续升级

  • 增加学生表并记录每位学生的学习情况
  • 添加课程完成状态
  • 为重复课程名增加唯一约束
  • 把查询封装到 Python 程序中
  • 给数据库初始化脚本加入版本号

完成后,你应该能解释每张表的职责、每个连接条件的含义,以及为什么某些查询需要索引。

✅ 验证步骤

  1. 插入至少三门课程和五条学习记录。
  2. 查询每门课程累计学习时间,包含没有记录的课程。
  3. 修改一门课程时长并用事务回滚一次,再提交一次。
  4. 用查询计划检查索引是否被使用。

📝 本章总结

  • 数据库设计从业务对象和关系开始。
  • 查询要同时考虑结果正确性和边界情况。
  • 事务、索引和验收查询共同决定项目是否可靠。

✏️ 课后练习

  1. 增加课程完成状态和学习目标字段。
  2. 把查询封装到 Python 程序中,并为核心查询准备测试数据。

🔮 学完之后

建议把这个数据库接入 Python 记账本或学习面板,继续练习数据建模和应用集成。