数据库设计 · ER图 · 关系模式

软考 ER 图怎么画?

ER 图题不要一上来就急着画框。老师带这类题,通常先让你把材料里的名词分三类:实体、属性、联系。分清这三类,再判断联系是一对一、一对多还是多对多。画图只是最后一步,前面的识别才是得分关键。

数据库与软件设计专题 软考题库编辑部 持续更新

第一步先找实体,不要把所有名词都画成实体

实体通常是系统中需要长期记录和管理的对象,比如学生、课程、订单、客户、商品、教师。不是所有名词都要画成实体,有些只是属性,比如姓名、电话、订单日期;有些是动作或业务事件,要看题目是否需要单独记录。

判断实体有个土办法:问自己“它有没有自己的编号或主键?它会不会被单独增删改查?它下面有没有一组属性?”如果答案比较明确,它更可能是实体。

材料中的词更可能是什么判断理由
学生、课程、订单实体需要独立记录,有编号和属性
姓名、电话、价格属性描述某个实体
选课、购买、借阅联系或联系实体连接两个或多个实体
状态、类型、日期属性通常附着在实体或联系上

属性要不要画,看题目要求和图的用途

很多人搜索“ER 图要画属性吗”,答案不是固定的。考试如果明确要求画完整 ER 图,或者材料里给了主属性、普通属性、多值属性,就应该把关键属性画出来,尤其是能唯一标识实体的属性。考试如果只让你判断实体联系,或后面要转换关系模式,图上可以重点标实体、联系和基数,属性在关系模式里体现。

在模拟系统里绘制 ER 图时,也要看工具要求。有些工具要求每个实体下列属性,有些只画概念模型。答题时不要为了追求漂亮,把题目没要求的信息画得太满;画多了不一定加分,画错了反而暴露问题。

题目要求属性处理老师提醒
要求画完整 ER 图画出关键属性和标识属性主键或唯一标识不要漏
要求转换关系模式属性最终要进表结构重点看主键、外键和联系属性
只考联系类型实体和基数更重要别把时间耗在装饰图形上
模拟系统绘图按系统规则填写属性注意字段名和实体对应

一对一、一对多、多对多先在材料里找证据

ER 图最容易错的地方,是联系基数凭感觉写。比如“一个学生可以选多门课程,一门课程可以被多个学生选择”,这就是多对多;“一个班级有多个学生,一个学生属于一个班级”,这是班级到学生的一对多。不要看哪个词熟,就直接写 1:N。

关系类型会直接影响后面的关系模式转换。一对多通常外键放在多端;多对多通常要单独建立联系表;一对一要看业务约束,可以合并,也可以在某一端放外键。

小例子:学生选课

学生是实体,课程是实体。

选课是联系,因为它连接学生和课程。

一个学生能选多门课,一门课能被多个学生选,所以是多对多。

转换关系模式时,通常建立选课表,包含学生编号、课程编号,还可以有成绩、选课时间等联系属性。

ER 图题的易错点

第一个易错点,是把联系属性丢掉。学生选课里的成绩,不属于单独的学生,也不属于单独的课程,而是属于某个学生选某门课程这个联系。第二个易错点,是多对多不建联系表,硬把外键塞到一边,结果关系模式表达不完整。

第三个易错点,是把业务规则读反。题目说“一个部门可以有多个员工,一个员工只能属于一个部门”,和“一个员工可以参与多个项目,一个项目有多个员工”完全不是一回事。读题时先圈“一个”“多个”“只能”“可以”,这些词比图形本身更重要。