【软考备考】 数据模型: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) 转换后的关系模式为:

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

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

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

相关推荐
想用offer打牌3 小时前
seata要支持Oracle批量插入的语法了吗?
后端·架构·开源
cxr8284 小时前
深度解析顶级 Doc Agent System Prompt 的架构与实践
网络·人工智能·架构·prompt·ai智能体·ai赋能·上下文工程
q***65695 小时前
深入解析HDFS:定义、架构、原理、应用场景及常用命令
hadoop·hdfs·架构
创码小奇客6 小时前
Spring Boot依赖排坑指南:冲突、循环依赖全解析+实操方案
后端·面试·架构
绝无仅有7 小时前
Redis 面试题解析:某度互联网大厂
后端·面试·架构
绝无仅有8 小时前
某度互联网大厂 MySQL 面试题解析
后端·面试·架构
国科安芯8 小时前
核电厂执行器控制系统中的抗辐照MCU选型:为什么需要150krad(Si) TID指标?
服务器·单片机·嵌入式硬件·fpga开发·架构
卡奥斯开源社区官方14 小时前
NVIDIA Blackwell架构深度解析:2080亿晶体管如何重构AI算力规则?
人工智能·重构·架构
黄雪超15 小时前
从流批一体到湖仓一体架构演进的思考
大数据·架构·数据湖
周杰伦_Jay18 小时前
【智能体(Agent)技术深度解析】从架构到实现细节,核心是实现“感知环境→处理信息→决策行动→影响环境”的闭环
人工智能·机器学习·微服务·架构·golang·数据挖掘