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

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

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

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

相关推荐
CloudWeGo6 小时前
Eino ADK:一文搞定 AI Agent 核心设计模式,从 0 到 1 搭建智能体系统
架构
白帽子黑客罗哥8 小时前
云原生安全深度实战:从容器安全到零信任架构
安全·云原生·架构·零信任·容器安全·kubernetes安全·服务网络
oak隔壁找我8 小时前
反向代理详解
后端·架构
真正的醒悟9 小时前
什么是组网架构
网络·架构
1379号监听员_9 小时前
嵌入式软件架构--按键消息队列3(测试)
开发语言·stm32·单片机·嵌入式硬件·架构
东城绝神10 小时前
《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版分片集群》
linux·运维·mongodb·架构·分片集群
吃饺子不吃馅11 小时前
了解微前端:为何 Web Component 是绕不开的关键技术?
前端·javascript·架构
酷柚易汛智推官11 小时前
基于MemU的自主代理记忆管理系统:技术解析与实践
java·安全·架构