第一步先找实体,不要把所有名词都画成实体
实体通常是系统中需要长期记录和管理的对象,比如学生、课程、订单、客户、商品、教师。不是所有名词都要画成实体,有些只是属性,比如姓名、电话、订单日期;有些是动作或业务事件,要看题目是否需要单独记录。
判断实体有个土办法:问自己“它有没有自己的编号或主键?它会不会被单独增删改查?它下面有没有一组属性?”如果答案比较明确,它更可能是实体。
| 材料中的词 | 更可能是什么 | 判断理由 |
|---|---|---|
| 学生、课程、订单 | 实体 | 需要独立记录,有编号和属性 |
| 姓名、电话、价格 | 属性 | 描述某个实体 |
| 选课、购买、借阅 | 联系或联系实体 | 连接两个或多个实体 |
| 状态、类型、日期 | 属性 | 通常附着在实体或联系上 |
属性要不要画,看题目要求和图的用途
很多人搜索“ER 图要画属性吗”,答案不是固定的。考试如果明确要求画完整 ER 图,或者材料里给了主属性、普通属性、多值属性,就应该把关键属性画出来,尤其是能唯一标识实体的属性。考试如果只让你判断实体联系,或后面要转换关系模式,图上可以重点标实体、联系和基数,属性在关系模式里体现。
在模拟系统里绘制 ER 图时,也要看工具要求。有些工具要求每个实体下列属性,有些只画概念模型。答题时不要为了追求漂亮,把题目没要求的信息画得太满;画多了不一定加分,画错了反而暴露问题。
| 题目要求 | 属性处理 | 老师提醒 |
|---|---|---|
| 要求画完整 ER 图 | 画出关键属性和标识属性 | 主键或唯一标识不要漏 |
| 要求转换关系模式 | 属性最终要进表结构 | 重点看主键、外键和联系属性 |
| 只考联系类型 | 实体和基数更重要 | 别把时间耗在装饰图形上 |
| 模拟系统绘图 | 按系统规则填写属性 | 注意字段名和实体对应 |
一对一、一对多、多对多先在材料里找证据
ER 图最容易错的地方,是联系基数凭感觉写。比如“一个学生可以选多门课程,一门课程可以被多个学生选择”,这就是多对多;“一个班级有多个学生,一个学生属于一个班级”,这是班级到学生的一对多。不要看哪个词熟,就直接写 1:N。
关系类型会直接影响后面的关系模式转换。一对多通常外键放在多端;多对多通常要单独建立联系表;一对一要看业务约束,可以合并,也可以在某一端放外键。
小例子:学生选课
学生是实体,课程是实体。
选课是联系,因为它连接学生和课程。
一个学生能选多门课,一门课能被多个学生选,所以是多对多。
转换关系模式时,通常建立选课表,包含学生编号、课程编号,还可以有成绩、选课时间等联系属性。
ER 图题的易错点
第一个易错点,是把联系属性丢掉。学生选课里的成绩,不属于单独的学生,也不属于单独的课程,而是属于某个学生选某门课程这个联系。第二个易错点,是多对多不建联系表,硬把外键塞到一边,结果关系模式表达不完整。
第三个易错点,是把业务规则读反。题目说“一个部门可以有多个员工,一个员工只能属于一个部门”,和“一个员工可以参与多个项目,一个项目有多个员工”完全不是一回事。读题时先圈“一个”“多个”“只能”“可以”,这些词比图形本身更重要。