A.3 数据库
设计并查询关联表
使用键、关系、连接和约束保持数据库一致性。
示例使用 Python,当前 IB 课程也允许使用 Java。
把每项事实放在正确的位置
主键唯一标识一行,外键引用关联表中的键。学生信息应在 Student 中存储一次,选课记录通过 StudentID 关联。如果每条选课记录都重复地址,地址改变时就会出现更新问题。
多对多关系通常需要 Enrollment(StudentID, CourseID) 这样的连接表,主键可以由两个标识符组成。约束表达唯一性和有效引用等规则,但不能取代理解数据含义。
把连接理解为关系
查询匹配两个表中的学生标识符,保留课程 CS 的选课记录并返回姓名。WHERE 条件筛选行。还应确认题目要求的是不重复姓名、计数还是所有匹配记录。
事务把相关操作组织为一个逻辑变更。若选课操作更新多个表,部分更新可能破坏系统规则。需要明确哪些修改必须同时成功或同时失败。
SELECT Student.Name FROM Student INNER JOIN Enrollment ON Student.StudentID = Enrollment.StudentID WHERE Enrollment.CourseID = 'CS';
自我检测
为什么不应只用学生姓名作主键?查看答案
学生可能重名,姓名也可能改变。应使用稳定且唯一的标识符。
编写这些课程时使用的参考资料
我们在编写本课程时参考了这些官方文件,用以确定考纲结构和课程要求。
International Baccalaureate · 2027 年首次评估
此 PDF 为 IB 公开学科简介。完整学科指南与评估要求可通过学校或 IB 课程资源中心获取。