第 5 章:综合项目——学习记录库¶
📋 本章概览¶
| 项目 | 内容 |
|---|---|
| 学习时长 | 50 分钟 |
| 核心概念 | 表设计、关联查询、统计、验收 |
| 核心比喻 | 把课程档案和学习流水账组装成个人仪表盘 |
| 实践任务 | 交付可统计学习投入的 SQLite 数据库 |
| 难度等级 | ★★★★☆ |
完成一个小型数据库,支持:
- 维护课程信息
- 记录某天学习了某门课多少分钟
- 查询每门课累计学习时间
- 查询某个分类的学习投入
建议表结构¶
验收查询¶
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 程序中
- 给数据库初始化脚本加入版本号
完成后,你应该能解释每张表的职责、每个连接条件的含义,以及为什么某些查询需要索引。
✅ 验证步骤¶
- 插入至少三门课程和五条学习记录。
- 查询每门课程累计学习时间,包含没有记录的课程。
- 修改一门课程时长并用事务回滚一次,再提交一次。
- 用查询计划检查索引是否被使用。
📝 本章总结¶
- 数据库设计从业务对象和关系开始。
- 查询要同时考虑结果正确性和边界情况。
- 事务、索引和验收查询共同决定项目是否可靠。
✏️ 课后练习¶
- 增加课程完成状态和学习目标字段。
- 把查询封装到 Python 程序中,并为核心查询准备测试数据。
🔮 学完之后¶
建议把这个数据库接入 Python 记账本或学习面板,继续练习数据建模和应用集成。