【软考备考】 数据模型:E-R模型、关系模型详解

一、E-R模型(实体-联系模型)

E-R模型是一种用于描述现实世界概念结构 的图形化工具。它不关心计算机如何实现,只关注数据间的关系,是数据库设计人员进行概念结构设计的利器。

1. 核心三要素

E-R模型由三个基本元素构成:

  • 实体:客观存在并可以相互区别的事物。

    • 表示矩形框

    • 举例:学生、课程、部门、订单。

  • 属性:实体所具有的某一特性。

    • 表示椭圆形

    • 举例 :学生的学号姓名 ;课程的课程号课程名

      • 主键:能唯一标识一个实体的属性集(如学号)。

      • 外键:...(外键更多在关系模型中讨论)。

  • 联系:实体与实体之间的关系。

    • 表示菱形框

    • 举例 :学生 选修 课程。

2. 联系的度数(类型)

这是E-R模型的重点和考点,指参与联系的实体型的数目。

  1. 一对一联系

    • 定义 :对于实体集A中的每个实体,实体集B中至多有一个实体与之联系,反之亦然。

    • 表示:1:1

    • 举例:一个公司只有一个CEO,一个CEO只在一个公司任职。("任职"联系是1:1)

  2. 一对多联系

    • 定义 :对于实体集A中的每个实体,实体集B中可以有多个 实体与之联系;而对于B中的每个实体,A中至多有一个实体与之联系。

    • 表示:1:n

    • 举例:一个部门有多个员工,一个员工只属于一个部门。("属于"联系是1:n)

  3. 多对多联系

    • 定义 :对于实体集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图向关系模型的转换

这是数据库设计的关键步骤,也是软考的核心考点。

  1. 实体的转换

    • 规则:一个实体转换为一个关系模式。

    • 实体的属性就是关系的属性,实体的主键就是关系的主键。

    • 举例

      • STUDENT实体 -> 学生(学号, 姓名, ...) 关系模式。

      • COURSE实体 -> 课程(课程号, 课程名, ...) 关系模式。

  2. 联系的转换

    • 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模型是沟通现实世界与关系数据库的桥梁。


四、软考常见考点与例题

  1. 概念选择题

    • 题目 :在E-R模型中,表示实体之间联系的图形符号是( )。

      A. 矩形

      B. 椭圆形

      C. 菱形

      D. 三角形

    • 答案:C

  2. 联系类型判断题

    • 题目 :一个病房可以住多个病人,一个病人只能住在一个病房。病房与病人之间的联系是( )。

      A. 一对一

      B. 一对多

      C. 多对多

      D. 多对一

    • 答案:B ("一"方是病房,"多"方是病人)

  3. E-R图转关系模式题(综合大题)

    • 题目 :设有如下E-R图:实体"供应商"(属性:供应商编号,名称)、实体"项目"(属性:项目编号,预算)、联系"供应"(属性:供应量)。已知一个供应商可以为多个项目供应零件,一个项目可以由多个供应商供应零件。

      (1) 判断"供应"联系的类型。

      (2) 将该E-R图转换为关系模式集,并指出每个关系模式的主键和外键。

    • 解答

      (1) 多对多联系。

      (2) 转换后的关系模式为:

      * 供应商(供应商编号, 名称) 主键:供应商编号

      * 项目(项目编号, 预算) 主键:项目编号

      * 供应(供应商编号, 项目编号, 供应量) 主键:(供应商编号, 项目编号)外键:供应商编号 参照 供应商(供应商编号),项目编号 参照 项目(项目编号)

相关推荐
酷酷的鱼7 分钟前
2026 React Native新架构核心:JSI底层原理与老架构深度对比
react native·react.js·架构
京东零售技术7 分钟前
Kafka、RocketMQ、JMQ 存储架构深度对比
架构
love530love15 分钟前
EPGF 新手教程 22教学模板不是压缩包:EPGF 如何设计“可复制、可检查、可回收”的课程模板?
ide·人工智能·windows·python·架构·pycharm·epgf
道 心33 分钟前
[特殊字符] YOLO11 → YOLO26 架构级进化全解析
架构
TangGeeA2 小时前
从“工具”到“灵魂”:深度解构 Claude Code 的 Agent、Skills 与 MCP 架构哲学
架构·ai编程
y***n6142 小时前
springboot项目架构
spring boot·后端·架构
Lim小刘3 小时前
Amazon Bedrock AgentCore + Strands SDK:企业级代理架构实战指南
架构·amazon
好想来前端4 小时前
私有化部署 LLM 时,别再用 Nginx 硬扛流式请求了 —— 推荐一个专为 vLLM/TGI 设计的高性能网关
后端·架构·github
乾元5 小时前
构建你的个人「网络 AI 实验室」——硬件、模拟器与数据集清单
运维·网络·人工智能·网络协议·架构
王旭晨5 小时前
【高并发架构】从 0 到亿,从单机部署到 K8s 编排:高并发架构的 8 级演进之路
容器·架构·kubernetes