下面把 ER(实体-联系图)相关的所有知识点系统整理成一份完整文档,从概念、符号、联系类型、转换规则、范式到考试题型和答题方法,层层递进,最后给出检查清单和背诵口诀。
ER 实体-联系图 · 系统整理
一、ER 图是什么
ER 图(Entity-Relationship Diagram,实体-联系图)是概念设计阶段的工具,用图形方式描述业务中的实体、属性和联系。它回答三个问题:业务中有哪些对象、每个对象有哪些特征、对象之间是什么关系。
ER 图是下午试题二(15分必答)的核心,通常与“E-R 图转关系模式、判断主键外键、判断范式”结合考查。考试中很少要求从零画完整 ER 图,更多是补充缺失的联系或属性,然后把图转换成关系模式。
二、ER 图的三种基本元素
ER 图只有三种基本符号,形状必须标准,命名和标注规则必须遵守。
| 元素 | 标准图形 | 内部写什么 | 命名规则 | 连线方式 |
|---|---|---|---|---|
| 实体 | 封闭矩形 | 实体名称 | 名词(客户、订单、学生、课程) | — |
| 属性 | 椭圆 | 属性名称 | 名词(学号、姓名、成绩) | 用无向边(不带箭头)连到所属实体或联系 |
| 联系 | 菱形 | 联系名称 | 动词(选修、预订、属于) | 用无向边连到相关实体,连线旁标联系类型 |
各元素详解
实体
- 业务中需要长期管理的对象,用封闭矩形表示。
- 命名用名词,如“客户”“订单”“商品”“学生”“课程”。
- 矩形四边全封,与 DFD 的外部实体形状相同,但语义不同:ER 的实体是业务对象,DFD 的外部实体是系统边界之外的数据源点。
属性
- 描述实体或联系的特征,用椭圆表示。
- 用无向边(不带箭头的实线)连接到所属实体或联系。
- 主键标注:能唯一标识实体的属性(主键),在椭圆内属性名下方画一条实线下划线。例如“学号”加下划线表示它是学生实体的主键。
- 外键标注:通常用虚下划线标注(下午题关系模式填空时常用实下划线标主键)。
- 属性连线不能带箭头,带箭头是高频错误。
联系
- 表示实体之间的业务关联,用菱形表示。
- 命名用动词或动词短语,如“选修”“预订”“属于”“供应”。
- 用无向边分别连接到相关实体。
- 联系类型必须标在连线旁(不是写在菱形里),用
1:1、1:n、m:n表示。
三、三种联系类型及画法
1:1(一对一)
- 标注方式:菱形两侧连线旁都标
1(或1:1)。 - 示例:班级与班长——一个班只有一个班长,一个班长只在一个班。
- 画法:班级 —1— ◇属于◇ —1— 班长
1:n(一对多)
- 标注方式:连接到“1端”实体的线旁标
1,连接到“多端”实体的线旁标n或m。 - 示例:部门与员工——一个部门有多名员工,一名员工只属于一个部门。部门旁标
1,员工旁标n。 - 画法:部门 —1— ◇拥有◇ —n— 员工
- 注意:“1”端和“n”端不能反,“1”在少的一端,“n”在多的一端。
m:n(多对多)
- 标注方式:菱形两侧连线旁分别标
m和n。 - 示例:学生与课程——一个学生选多门课,一门课被多个学生选。学生旁标
m,课程旁标n。 - 画法:学生 —m— ◇选修◇ —n— 课程
联系类型标注的三个关键
- 标在连线旁,不是写在菱形里面。
- 不用箭头,ER 图用无向边加数字标注,不用箭头表示方向。
- 两端都要标,不能只标一端。
四、联系自身的属性(高频丢分点)
属性不只能属于实体,联系本身也可以有属性。
- 示例:“学生”与“课程”的“选修”联系,属性“成绩”描述的是“某个学生选修某门课程”这件事,应画一个椭圆连接到菱形上,而不是连到学生或课程实体上。
- 判断方法:题干中出现“数量、日期、成绩、时间、金额”这类描述关系状态的词,基本就是联系属性。
- 经典错误:把“成绩”画成学生或课程的属性,而不是选修联系的属性。
五、E-R 图转关系模式(必背规则)
这是下午题第二题的核心得分点,三种联系类型的转换规则必须条件反射。
| 联系类型 | 转换规则 | 示例 |
|---|---|---|
| 1:1 | 任一方主键放入另一方作外键(或两表合并) | 班级(班级号,班级名,班长学号);班长(学号,姓名) |
| 1:n | 1端主键放入n端作外键 | 部门(部门号,部门名);员工(员工号,姓名,部门号) |
| m:n | 必须单独建一张联系表,字段 = 双方主键 + 联系自身属性;主键 = 双方主键的组合,两主键各自也是外键 | 学生(学号,姓名);课程(课程号,课程名);选修(学号,课程号,成绩) |
转换规则详解
1:1 转换
- 两种做法:把一方主键放进另一方作外键,或两表合并。
- 考试中通常选择“把一方主键放入另一方”,具体放哪一方看题干语义(通常把可选性低的一方主键放入另一方)。
1:n 转换
- 1端主键放入n端作外键,这是唯一正确方向。
- 例如部门与员工:员工表里加“部门号”作外键,而不是部门表里加“员工号”。
- 方向搞反是高频错误。
m:n 转换
- 必须单独建表,不能把一方主键塞进另一方。
- 联系表的字段 = 双方主键 + 联系自身属性。
- 联系表的主键 = 双方主键的组合。
- 双方主键在联系表中各自也是外键,分别参照两个实体表。
- 示例:学生选课,单独建“选修(学号,课程号,成绩)”,主键是(学号,课程号),学号和课程号各自是外键。
主键与外键判定
主键判定:
- 题干出现“唯一标识”“编号”“身份证号”的,基本是主键候选。
- 订单表的主键通常是“订单编号”,而不是“客户编号 + 商品编号”的组合(除非题意明确订单号不唯一)。
- m:n 联系表的主键是双方主键的组合。
外键判定:
- 如果 A 表里出现了 B 表的主键,它就是外键。
- m:n 联系表中,双方主键的组合是主键,同时各自也是外键,分别参照两个实体表。
- 1:n 转换中,n 端表中的 1 端主键是外键。
答题格式:关系模式写成 表名(主键加下划线,外键用波浪线或文字说明),并在答案中明确写出“主键是XX,外键是XX,参照XX表”。
六、范式判定(送分题)
范式判定通常与关系模式转换结合考查,判断转换后的关系模式属于第几范式。
| 范式 | 判定条件 | 通俗理解 |
|---|---|---|
| 1NF | 属性不可再分 | 每个格子只放一个值,不能放“多个电话”这种复合值 |
| 2NF | 消除非主属性对码的部分函数依赖 | 联合主键中,某个非主属性不能只依赖主键的一部分 |
| 3NF | 消除非主属性对码的传递函数依赖 | 非主属性不能经由另一个非主属性间接依赖主键 |
判定方法
- 1NF:看有没有“多值属性”或“复合属性”,有就不满足1NF。
- 2NF:先找主键。如果主键是联合主键(多个属性组合),看有没有非主属性只依赖其中一部分。有则不是2NF。
- 3NF:看有没有“A→B,B→C”且B不是候选键的情况。有则是传递依赖,不是3NF。
- 考试常见答案:转换后的关系模式通常能达到3NF;如果题干强调“存在传递依赖”,则答案是2NF。
范式一句话
1NF 列不可分;2NF 消除部分依赖;3NF 消除传递依赖。
七、考试题型与答题方法
题型一:补充 ER 图中的联系或属性
问法:“根据题干说明,补充ER图中缺失的联系”“指出某联系的类型”“补充某实体的属性”。
方法:
- 读题干,找“A和B之间是什么关系”的描述,判断联系类型(1:1、1:n、m:n)。
- 联系类型标在连线旁,两端都要标。
- 如果题干说“某关系有某属性”(如“订单有订单日期”),把属性画成椭圆连到菱形上。
题型二:将 ER 图转换为关系模式
问法:“将ER图转换为关系模式”“补充关系模式中的空缺”“指出每个关系模式的主键和外键”。
方法:
- 按“1:1、1:n、m:n”三种规则逐一转换。
- 1:n 把1端主键放n端;m:n 单独建表,主键为组合。
- 主键加下划线,外键明确写出参照关系。
- 答案格式:
表名(主键,属性1,属性2,外键),并注明主键和外键。
题型三:判断范式
问法:“该关系模式属于第几范式”“是否存在部分依赖/传递依赖”。
方法:
- 先找主键,再看非主属性对主键的依赖关系。
- 有部分依赖→1NF;有传递依赖→2NF;都没有→3NF。
- 答题时写出判断依据,如“因为存在非主属性对联合主键的部分依赖,所以不是2NF”。
题型四:补充关系模式中的空缺
问法:“补充(a)(b)处的属性”“指出空缺处应填什么”。
方法:
- 看关系模式的已有字段,缺的通常是外键或联系自身属性。
- 如果缺的是外键,从相关实体表的主键中找。
- 如果缺的是联系属性(如“成绩”“数量”),从题干描述中找。
答题规范
- 关系模式写成
表名(属性1,属性2,……),主键加下划线。 - 明确写出“主键是XX,外键是XX,参照XX表”。
- 范式判定要写出依据(部分依赖/传递依赖)。
- 用题干原词命名实体、属性和联系,不要自己发明名称。
八、高频易错点汇总
- 形状画错:实体画成椭圆、属性画成矩形、联系画成矩形。
- 联系类型漏标或标错位置:
1:n必须标在连线旁,且“1”端和“n”端不能反。 - 联系属性错挂实体:成绩、数量、日期这类描述“关系”的属性,必须挂到菱形上。
- 主键漏下划线:主键属性必须加实线下划线。
- 属性连线带箭头:属性与实体/联系之间用无向边,不要画箭头。
- 1:n 转换方向搞反:必须是1端主键放入n端,不能反过来。
- m:n 忘记单独建表:m:n 联系必须单独建一张表,不能把一方主键塞进另一方。
- m:n 建表后主键漏组合:联系表的主键必须是双方主键的组合,不能只用其中一方。
- 外键漏标或标错参照:外键必须明确参照哪个实体表。
- 范式判定只写结论不写依据:要写出“存在部分依赖/传递依赖”作为判断理由。
- 实体命名用动词:实体必须是名词(“订单”不是“下订单”)。
- 联系命名用名词:联系通常是动词(“选修”不是“选课关系”)。
九、ER 答题检查清单
答完 ER 题,按以下顺序自查:
第一步:形状
- 实体是封闭矩形?
- 属性是椭圆?
- 联系是菱形?
- 属性连线是无向边(不带箭头)?
第二步:标注
- 联系类型(1:1、1:n、m:n)标在连线旁了吗?
- 两端都标了吗?“1”端和“n”端没反吧?
- 主键属性加下划线了吗?
- 联系自身的属性挂到菱形上了吗?
第三步:转换
- 1:n 是否把1端主键放进了n端?
- m:n 是否单独建表了?
- 联系表的主键是否是双方主键的组合?
- 双方主键在联系表中是否都标了外键?
- 每个关系模式的主键和外键都明确写出了吗?
第四步:范式
- 先找主键,再看非主属性对主键的依赖。
- 有部分依赖→1NF;有传递依赖→2NF;都没有→3NF。
- 判断依据写出来了吗?
十、ER 背诵清单(直接背)
- 三种元素:实体(矩形)、属性(椭圆)、联系(菱形)。
- 命名规则:实体名词、属性名词、联系动词。
- 属性连线:无向边,不带箭头。
- 主键标注:属性名下方实线下划线。
- 联系类型:1:1、1:n、m:n,标在连线旁,两端都标,不用箭头。
- 联系属性:描述关系状态的属性(成绩、数量、日期)挂到菱形上。
- 1:1 转换:任一方主键放入另一方作外键(或合并)。
- 1:n 转换:1端主键放入n端作外键,方向不能反。
- m:n 转换:必须单独建表,字段=双方主键+联系属性,主键=双方主键组合,双方主键各自也是外键。
- 主键判定:题干“唯一标识”“编号”“身份证号”是主键候选。
- 外键判定:A表出现B表主键,它就是外键。
- 范式口诀:1NF列不可分;2NF消除部分依赖;3NF消除传递依赖。
- 答题格式:表名(主键加下划线,属性,外键),明确写出主键和外键参照关系。
- 范式答题:写出判断依据(部分依赖/传递依赖),不能只写结论。
十一、ER 速记口诀
实体矩形属性椭圆,联系菱形在中间;
联系类型标线旁,主键属性下划线。
联系属性挂菱形,m:n 单独建表记心间;
1:n 把1端主键放n端,主外键判定看编号。
1NF列不可分,2NF消部分,3NF消传递;
转换先找主键,再判依赖,最后写清参照关系。
十二、ER 与 DFD 的区分(防止混淆)
| 对比项 | ER 图 | DFD |
|---|---|---|
| 用途 | 概念设计,描述业务对象和关系 | 结构化分析,描述数据流动和加工 |
| 矩形 | 实体(业务对象) | 外部实体(系统边界之外的数据源点) |
| 椭圆/圆 | 属性 | 加工(圆角矩形或圆) |
| 菱形 | 联系 | 无 |
| 开口矩形/平行线 | 无 | 数据存储 |
| 连线 | 无向边(不带箭头) | 带箭头的直线(数据流) |
| 标注 | 联系类型标线旁、主键下划线 | 数据流用名词、加工用动宾 |
核心区分:ER 图的矩形是业务实体,DFD 的矩形是系统外部实体;ER 图连线不带箭头,DFD 数据流带箭头;ER 图有菱形联系,DFD 没有菱形。
把以上内容按“符号→联系类型→转换规则→范式→题型→易错点”的顺序过一遍,再拿历年真题的数据库设计题练手,重点练“m:n 单独建表”和“1:n 方向不能反”,这两条是 ER 题最高频的采分点和丢分点。