【软考备考】 数据模型:E-R模型、关系模型详解
一、E-R模型(实体-联系模型)
E-R模型是一种用于描述现实世界概念结构的图形化工具。它不关心计算机如何实现,只关注数据间的关系,是数据库设计人员进行概念结构设计的利器。
1. 核心三要素
E-R模型由三个基本元素构成:
实体:客观存在并可以相互区别的事物。
表示:矩形框。
举例:学生、课程、部门、订单。
属性:实体所具有的某一特性。
表示:椭圆形。
举例:学生的学号、姓名;课程的课程号、课程名。
键:
主键:能唯一标识一个实体的属性集(如学号)。
外键:...(外键更多在关系模型中讨论)。
联系:实体与实体之间的关系。
表示:菱形框。
举例:学生 选修 课程。
2. 联系的度数(类型)
这是E-R模型的重点和考点,指参与联系的实体型的数目。
一对一联系
定义:对于实体集A中的每个实体,实体集B中至多有一个实体与之联系,反之亦然。
表示:1:1
举例:一个公司只有一个CEO,一个CEO只在一个公司任职。(“任职”联系是1:1)
一对多联系
定义:对于实体集A中的每个实体,实体集B中可以有多个实体与之联系;而对于B中的每个实体,A中至多有一个实体与之联系。
表示:1:n
举例:一个部门有多个员工,一个员工只属于一个部门。(“属于”联系是1:n)
多对多联系
定义:对于实体集A中的每个实体,实体集B中可以有多个实体与之联系,反之亦然。
表示:m:n
举例:一个学生可以选修多门课程,一门课程可以被多个学生选修。(“选修”联系是m:n)
3. E-R图示例
下图展示了一个简单的教学管理系统E-R图:
说明:
实体:
STUDENT
,COURSE
,DEPARTMENT
。联系:
Selects
(m:n),Belongs_to
(1:n)。每个实体都有自己的属性(主键已标出)。
二、关系模型
关系模型是数据库的逻辑实现模型。它将数据组织成一张二维表格(关系),我们现在使用的大多数数据库(如MySQL, Oracle)都是关系型数据库。
1. 核心概念
关系:对应一张二维表。
元组:表中的一行,也称为记录。
属性:表中的一列,也称为字段。
主键:能唯一标识一个元组的属性或属性组。
外键:一个关系R中的某个属性或属性组,它不是R的主键,但它是另一个关系S的主键。这个属性或属性组称为R的外键。用于建立表与表之间的联系。
2. 从E-R图向关系模型的转换
这是数据库设计的关键步骤,也是软考的核心考点。
实体的转换
规则:一个实体转换为一个关系模式。
实体的属性就是关系的属性,实体的主键就是关系的主键。
举例:
STUDENT
实体 ->学生(学号, 姓名, ...)
关系模式。COURSE
实体 ->课程(课程号, 课程名, ...)
关系模式。
联系的转换
1:1 联系的转换
可以在任意一端的关系中加入另一端关系的主键作为外键。
举例:
公司(公司ID, 名称, ...)
和CEO(CEO_ID, 姓名, ...)
。可以在公司
表中加入CEO_ID
作为外键,或者在CEO
表中加入公司ID
作为外键。
1:n 联系的转换
在“n”端(多方)的关系中加入“1”端(一方)关系的主键作为外键。
举例:
部门(部门号, 名称, ...)
和员工(工号, 姓名, 部门号, ...)
。在“员工”表中加入“部门号”作为外键。
m:n 联系的转换
必须将“联系”也转换为一个独立的关系模式。
新关系模式的属性: 包括与该联系相连的各实体集的主键,以及联系本身的属性(如果有)。
新关系模式的主键: 由各实体集的主键组合而成。
举例:
学生(学号, 姓名, ...)
和课程(课程号, 课程名, ...)
之间的“选修”联系是m:n。需要转换为三个关系模式:
学生(学号, 姓名, ...)
主键:学号
课程(课程号, 课程名, ...)
主键:课程号
选修(学号, 课程号, 成绩)
主键:(学号, 课程号)
,外键:学号
参照学生
表,课程号
参照课程
表。成绩
是该联系本身的属性。
三、核心对比与联系
特性 | E-R模型 | 关系模型 |
---|---|---|
目的 | 概念模型,描述现实世界,与DBMS无关 | 逻辑模型,用于数据库实现 |
表示形式 | 图形化(矩形、菱形、椭圆) | 二维表格 |
核心元素 | 实体、属性、联系 | 关系、元组、属性 |
焦点 | 数据间语义和联系 | 数据的结构和约束(主键、外键) |
转换关系 | 设计基础,先有E-R图 | 实现结果,根据E-R图转换而来 |
关系:数据库设计通常遵循 现实世界 -> E-R模型 -> 关系模型 -> 物理数据库 的流程。E-R模型是沟通现实世界与关系数据库的桥梁。
四、软考常见考点与例题
概念选择题
题目:在E-R模型中,表示实体之间联系的图形符号是( )。
A. 矩形
B. 椭圆形
C. 菱形
D. 三角形答案:C
联系类型判断题
题目:一个病房可以住多个病人,一个病人只能住在一个病房。病房与病人之间的联系是( )。
A. 一对一
B. 一对多
C. 多对多
D. 多对一答案:B (“一”方是病房,“多”方是病人)
E-R图转关系模式题(综合大题)
题目:设有如下E-R图:实体“供应商”(属性:供应商编号,名称)、实体“项目”(属性:项目编号,预算)、联系“供应”(属性:供应量)。已知一个供应商可以为多个项目供应零件,一个项目可以由多个供应商供应零件。
(1) 判断“供应”联系的类型。
(2) 将该E-R图转换为关系模式集,并指出每个关系模式的主键和外键。解答:
(1) 多对多联系。
(2) 转换后的关系模式为:
*供应商(供应商编号, 名称)
主键:供应商编号
*项目(项目编号, 预算)
主键:项目编号
*供应(供应商编号, 项目编号, 供应量)
主键:(供应商编号, 项目编号);外键:供应商编号 参照 供应商(供应商编号),项目编号 参照 项目(项目编号)。