项目一:图书借阅数据库(第 2–5 周)#
目标#
只做数据库,不做漂亮界面。训练从业务需求到表结构、SQL、索引、事务和备份的完整过程。
必做功能#
- 用户、图书、作者、图书作者关系、借阅记录;
- 借书、归还、续借、逾期;
- 当前库存不能为负;一本书可有多个作者;
- 查询热门图书、逾期用户、从未借阅用户、月度借阅量;
- 借书过程使用事务;
- 有初始化数据、表结构脚本、查询脚本、备份和恢复说明。
交付物#
README.md、ER 图、迁移 SQL、种子数据、至少 20 条有业务意义的查询、执行计划对比、恢复记录。
验收#
随机提出 5 个查询需求,能独立完成 4 个;能说明每个约束和索引为什么存在;删除练习库后能从备份恢复。
项目二:任务管理 REST API(第 9–13 周)#
目标#
连接 HTTP、Express 和 PostgreSQL,完成可以被前端或手机调用的后端。
必做功能#
- 注册、登录、退出或令牌失效策略;
- 新建、查看、修改、删除任务;
- 分页、按完成状态筛选、按截止日期排序;
- 普通用户只能操作自己的任务;管理员权限单独设计;
- 输入校验、统一错误响应、请求日志;
- 数据库迁移与种子数据;
- 自动化测试覆盖正常、未认证、越权、无效输入、冲突。
推荐接口#
POST /api/v1/auth/register
POST /api/v1/auth/login
GET /api/v1/tasks?page=1&pageSize=20&completed=false
POST /api/v1/tasks
GET /api/v1/tasks/:id
PATCH /api/v1/tasks/:id
DELETE /api/v1/tasks/:id
GET /health/live
GET /health/ready验收#
用两个普通账号验证互相不能访问任务;运行测试;故意关闭数据库并观察错误和健康检查;解释请求从路由到 SQL 再返回的全过程。
项目三:可上线的个人内容平台(第 14–16 周)#
可做博客、学习笔记、书签收藏或小型社区。不要再照搬第二个项目,应增加真实业务关系。
必做功能#
- 用户、内容、标签、评论或收藏等至少 4 类实体;
- 草稿/发布状态、作者授权、分页搜索;
- PostgreSQL 数据持久化;
- Node.js + Express 后端;
- Docker Compose 管理应用和数据库;
- Nginx 反向代理、域名、HTTPS;
- 日志、健康检查、备份任务和恢复演练;
- 部署与故障排查文档。
上线演练#
- 在新环境按 README 从零部署;
- 创建账号和测试数据;
- 备份数据库;
- 模拟应用崩溃并恢复;
- 在新数据库恢复备份;
- 检查登录、内容列表和写入;
- 记录恢复时间、失败点和改进项。
最终作品自述#
能在 5 分钟内讲清:需求、架构、数据模型、最难问题、安全措施、测试策略、部署流程、一次真实故障及解决办法。讲不清的部分就是下一轮复习重点。