学习记录:根据一次“按照关系模型组织”的课堂练习扩写;不对应某份试题的标准答案。
画出实体联系图之后,事情还没有结束
我曾经做过一个把 ER 图转换为关系模型的练习。看到示例时,我最初关心的是表应该怎么写、字段排列顺序是否一致。讨论之后才发现,真正重要的不是把方框重画成表格,而是把联系和约束表达清楚。
三条可以反复使用的规则
实体通常落成关系表
一个实体集通常对应一张表,实体的属性成为表的列。候选键或主键需要明确,不能只凭字段名字猜测唯一性。
一对多关系,外键一般放在“多”的一侧
例如一个班级对应多个学生,如果没有其他特殊约束,学生表可以保存班级编号,指向班级表的主键。
多对多关系,通常需要独立联系表
例如学生选课:
学生(学号 PK, 姓名, ...)
课程(课程号 PK, 课程名, ...)
选课(学号 FK, 课程号 FK, 成绩, ...)
其中选课表通常使用 (学号, 课程号) 作为组合主键,或使用替代键配合唯一约束。关键是不能允许同一学生与课程的关系被无意重复记录。
我会怎样检查自己的答案
逐一核对:实体有没有遗漏,主键是否唯一,一对一/一对多/多对多是否正确映射,联系本身有没有属性,是否存在可空性或级联规则需要说明。
从图到表看上去是“改写格式”,实际上是在把现实世界的约束写进数据结构。
