【系统架构设计师】数据库系统 ③ ( 数据库设计过程 | 概念结构设计 | ER 图 简介 | 概念设计阶段 工作拆分 )

news2025/3/31 11:00:28

文章目录

  • 一、数据库设计过程 概述
  • 二、ER 图 简介
    • 1、ER 图 概念
    • 2、ER 图 示例
    • 3、ER 图 关系类型
      • ① 一对一 ( 1:1 ) 关系
      • ② 一对多 ( 1:n ) 关系
      • ③ 多对多 ( n:n ) 关系
  • 三、概念设计阶段 工作拆分





一、数据库设计过程 概述



数据库设计过程 :

  • 需求分析阶段 : 明确 用户需求 ;
    • 输入 :
      • 用户业务需求 : 任务书 和 设计方案 , 当前和未来应用数据要求 , 数据处理要求 ;
      • 现有系统文档 ;
    • 输出 :
      • 数据流图 : 用 图形化 方式展示系统中 数据流动、存储、处理 的逻辑关系 , 包含 进程、数据流、数据存储、外部实体四要素 ;
      • 数据字典 : 结构化文档 , 详细定义 数据项名称、类型、长度、约束条件、来源及去向 ;
      • 需求说明书 : 汇总 用户功能性 与 非功能性 需求 的 正式文档 ;
  • 概念设计阶段 : 使用 ER 模型 描述数据关系 , 将 现实世界的需求 抽象出 概念模型 , 即 实体-关系图 ( ER 图 ) ;
    • 输入 :
      • 需求分析产物 : 包括 数据流图、数据字典、需求说明书 ;
      • 用户业务需求 ;
    • 输出 : ER 图 ( 实体-关系图 ) , 将需求 抽象为 可视化模型 , 实体 由 实体 ( 矩形 ) 、属性 ( 椭圆 ) 、联系 ( 菱形 ) 表现出来 , 实体之间的关系有 1:1、 1:N、 M:N ;
  • 逻辑设计阶段 : 将 ER 图 转换为 关系模式 ;
    • 输入 :
      • 概念设计阶段产物 : ER 图 ;
      • 规范化理论 : 通过 范式 消除数据冗余与更新异常 , 范式有 1NF、2NF、3NF ;
      • 关系模型 : 以表 ( 关系 ) 为核心的数据模型 , 支持关系代数操作 ( 如 : 选择、投影、连接 ) , 数据库 都是 基于 关系模型 实现 ;
    • 输出 :
      • 关系模式 : 就是 数据库表结构 , ER 图 转为 关系模式 ( 表结构 ) ;
      • 视图 : 虚拟表 , 简化复杂查询 、 隐藏敏感数据 、 提供逻辑数据抽象 ;
      • 完整性约束 : 主键 / 外键 / 检查约束 ;
  • 物理设计阶段 : 确定 存储结构 与 索引 , 考虑具体的 物理存储、物理分布、物理访问 的细节 ;
    • 输入 :
      • 逻辑设计阶段输出 : 视图、完整性约束
      • DBMS 特性 : 如 存储引擎 / 索引类型 等 ;
      • 硬件 和 操作系统特性 : 软硬件配置 ;
      • 数据处理要求 ;
    • 输出 :
      • 物理存储结构 : 决定数据基础存取效率 , 是 文件 的 组织方式 , 数据在 磁盘 上的 物理存储形式 ( 堆文件、顺序文件、索引文件、散列文件 ) , 直接影响读写效率 ;
      • 索引方式 : 平衡查询性能与存储成本 , 索引可以 加速数据检索 , 牺牲存储空间换取查询效率 , 常见的索引方式有 哈希索引、位图索引、B+树索引 ;
      • 分区策略 : 解决海量数据分布与扩展性问题 , 将大数据集划分为 逻辑 / 物理 独立单元 , 提升可管理性与性能 , 常见的分区策略有 水平分区 、 垂直分区 、 范围分区 、 列表分区 等 ;
      • 缓存优化方案 : 通过 空间 换 时间 突破 I/O 瓶颈 , 利用 高速存储介质 ( 如内存 ) 缓存热点数据 , 减少磁盘访问 , 常见的策略有 LRU 最近最少使用 、 LFU 最不经常使用 、 TTL 过期时间 等 ;

在这里插入图片描述





二、ER 图 简介




1、ER 图 概念


ER 图 ( Entity-Relationship Diagram , 实体-关系 图 ) : 是 用于 描述 现实世界概念模型 的工具 , 通过 图形化方式 展示如下元素 :

  • 实体 ( Entity ) : 现实中的独立对象 , 可区分的 物体或概念 , 用 实体用矩形表示 , 矩形框内写明实体名 ;
  • 属性 ( Attribute ) : 实体 或 关系 的某个特征 , 属性用椭圆形表示 , 并用 无向边 将 属性 与 相应的 实体或关系 连接起来 ;
  • 关系 ( Relationship ) : 实体间的关联 , 关系 用菱形表示 , 菱形框内写明 关系名 , 并用无向边分别与有关实体连接起来 , 同时在无向边旁标上联系的类型 ( 如 : 1:1、1:n、m:n ) ;

2、ER 图 示例


下图是一个 学生 选课 的 ER 图 :
在这里插入图片描述

  • 实体 : 学生 和 课程 是 实体 , 使用 矩形 表示 ;
  • 属性 : 学生的属性有 学号、姓名、性别、年龄 等属性 , 课程的属性有 课程号、课程名、任课教师 等属性 , 使用椭圆表示 , 使用无向边连接 矩形 ( 实体 ) 与 椭圆 ( 属性 ) ;
  • 关系 : 选课 是 学生 和 课程 两个实体之间的 关系 , 使用 菱形 表示 ;

3、ER 图 关系类型


ER 图 中的 关系类型 :

  • 一对一 ( 1:1 ) : 一个实体的实例 与 另一个实体的唯一实例 相关联 ; 如 : 一个班级 设有 一个班长 ;
  • 一对多 ( 1:n ) : 一个实体的实例 与 多个实例的另一个实体 相关联 ; 如 : 一个班级 拥有 多个学生 ;
  • 多对多 ( m:n ) : 多个实体的实例 与 多个实例的另一个实体 相关联 ; 如 : 多个学生 选修 多个课程

① 一对一 ( 1:1 ) 关系


一对一 ( 1:1 ) 关系 : 一个实体的实例 与 另一个实体的唯一实例 相关联 ; 如 : 一个班级 设有 一个班长 , 班级 与 班长 的 ER 图如下所示 :
在这里插入图片描述

  • 核心转换 : 班级 与 班长 之间 , 可以选择某一端作为核心 ;
    • 以 班级 为核心 , 班级 与 班长 是 1:1 的关系 ;
    • 以 班长 为核心 , 班长 与 班级 是 1:1 的关系 ;
  • 班级集合 与 班长集合 是 一对一 的 匹配关系 , 如下图所示 :
    在这里插入图片描述

② 一对多 ( 1:n ) 关系


一对多 ( 1:n ) : 一个实体的实例 与 多个实例的另一个实体 相关联 ; 如 : 一个班级 拥有 多个学生 ; 班级 与 学生 的 ER 图如下所示 :
在这里插入图片描述

  • 核心转换 : 班级 与 学生 之间 , 可以选择某一端作为核心 ;

    • 以 班级 为核心 , 班级 与 学生 是 1:n 的关系 ;
    • 以 学生 为核心 , 学生 与 班级 是 n:1 的关系 ;
  • 班级集合 与 学生集合 是 一对多 的 匹配关系 , 如下图所示 :
    在这里插入图片描述

  • 学生集合 与 班级集合 是 多对一 的 匹配关系 , 如下图所示 :
    在这里插入图片描述


③ 多对多 ( n:n ) 关系


多对多 ( m:n ) : 多个实体的实例 与 多个实例的另一个实体 相关联 ; 如 : 多个学生 选修 多个课程 ; 学生 与 课程 的 ER 图如下所示 :
在这里插入图片描述

  • 核心转换 : 课程 与 学生 之间 , 可以选择某一端作为核心 ;
    • 以 课程 为核心 , 课程 与 学生 是 n:n 的关系 ;
    • 以 学生 为核心 , 学生 与 课程 是 n:n 的关系 ;
  • 课程集合 与 学生集合 是 多对多 的 匹配关系 , 如下图所示 :
    在这里插入图片描述




三、概念设计阶段 工作拆分



概念结构设计 阶段 通过 逐步 抽象、建模、合并与优化 , 将 碎片化需求 转化为统一的全局数据模型 ,

其核心在于 平衡用户需求与技术实现 , 确保模型具备 完整性、一致性与高效性 , 为后续数据库逻辑设计奠定基础 ;


如果 信息系统 规模比较大时 , 单靠一个人是无法完成 概念结构设计的 , ER 图 由 不同的 人员 分开完成的 , 每个人 完成一部分 局部 ER 图 ;


此处需要将 概念结构设计阶段 的工作 进行如下图所示的 拆分 : 抽象数据 ->设计局部 ER 模型 -> 合并局部 ER 模型并消除冲突 -> 重构优化并消除冗余 ;

  • 抽象数据 : 从 需求分析 中提炼 核心数据元素 及其 关联关系 , 方法如下 :
    • 分类 : 将 同类对象 抽象为实体 ;
    • 聚集 : 组合相关属性形成实体 , 如 : 学生 有 姓名 年龄 等属性 ;
    • 概括 : 建立 继承关系 , 如 : 学生 与 高中生 ;
  • 设计局部 ER 模型 :不同 子系统 或 用户视图 构建 独立的 ER 模型 , 重点是 识别局部范围内的实体、属性及联系 , 标注主键、外键及多重性 ;
  • 合并局部 ER 模型 : 整合局部模型为全局 ER 模型 , 主要的 集成方法如下 :
    • 一次性集成 : 将 所有的 ER 模型 , 一次性集成为 完整的 系统 ER 图 ;
    • 逐步集成 : 使用 累加的方式 集成 ER 图 , 每次只集成 两个 ER 图 ;
  • 消除冲突 : 解决 ER 模型 之间 不一致问题 , 常见的冲突如下 :
    • 属性冲突 : 属性域 或 属性值 冲突 ;
    • 命名冲突 : 同名异义 或 异名同义 , 统一命名规范 , 协商实体定义 ;
    • 结构冲突 : 同一对象 在 不同应用中 抽象实体不同 , 同一个实体 在 不同的 局部 ER 图 中 包含的 属性个数 和 属性排列次序不同 ;
    • 关系冲突 : 同一个关系 在 不同的 局部 ER 模型中 表现不同 ;
  • 重构优化并消除冗余 : 提高模型效率 , 减少数据冗余 ;
    • 合并相似实体 : 通过 属性 区分类型 ;
    • 消除冗余属性 : 若属性可通过其他数据推导 , 则删除冗余 ;
    • 简化复杂联系 : 检查 多对多联系 是否需要 拆解为中间实体 ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet开发与生命周期详解-2

一、在集成开发环境当中开发Servlet程序 1.集成开发工具很多,其中目前使用比较多的是: IntelliJ IDEA(这个居多,IDEA在提示功能方面要强于Eclipse,也就是说IDEA使用起来比Eclipse更加智能,更好用。JetBrai…

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域,我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时,困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部,许多利益相关者&#…

NO.58十六届蓝桥杯备战|基础算法-枚举|普通枚举|二进制枚举|铺地毯|回文日期|扫雷|子集|费解的开关|Even Parity(C++)

枚举 顾名思义,就是把所有情况全都罗列出来,然后找出符合题⽬要求的那⼀个。因此,枚举是⼀种纯暴⼒的算法。 ⼀般情况下,枚举策略都是会超时的。此时要先根据题⽬的数据范围来判断暴⼒枚举是否可以通过。 使⽤枚举策略时&#xf…

Python正则表达式(二)

目录 六、re.findall()函数和分组 1、0/1分组情况 2、多分组情况 七、或“|”的用法 1、作用域 2、用法 八、贪婪模式和懒惰模式 1、量词的贪婪模式 2、量词的懒惰模式 九、匹配对象 1、相关函数 六、re.findall()函数和分组 1、0/1分组情况 在正则表达式中&#x…

图解AUTOSAR_SWS_FlashDriver

AUTOSAR Flash驱动(FLS)模块详解 AUTOSAR基础软件存储抽象层组件详细解析 目录 1. 概述 1.1. Flash驱动模块简介1.2. 功能和作用2. 架构设计 2.1. 模块架构2.2. API接口设计2.3. 状态机设计2.4. 异步操作时序2.5. 配置结构2.6. 任务处理流程3. 总结 3.1. 设计优势3.2. 应用场景…

哪吒汽车:一边熬夜蹦迪,一边找药投医

两年前,威马CEO沈晖发了个短视频,内容是“活下去,像牲口一样活下去”。 如今最能体会沈晖当时心情的,估计就是方运舟了。 作为哪吒汽车创始人兼董事长,他连续多次被限高,为了让哪吒汽车活下去&#xff0c…

Linux一步部署主DNS服务器

​ #!/bin/bash #部署DHCP服务 #userli 20250319if [ "$USER" ! "root" ]then echo"错误:非root用户,权限不足!"exit 0fi#防火墙与高级权限 systemctl stop firewalld && systemctl disable firewalld…

图片隐私清理工具

图片隐私清理助手:一键清除图片敏感信息的神器 在数字时代,我们每天都会拍摄和分享大量图片,但你是否注意过这些图片中可能暗藏隐私信息?相机的GPS定位、拍摄参数等EXIF数据,都可能在不经意间泄露你的隐私。今天介绍的…

【UE5】摄像机晃动

目录 效果 步骤 一、游戏中晃动视角 二、Sequence中晃动视角 效果 步骤 一、游戏中晃动视角 1. 新建一个蓝图,父类选择“CameraShakeBase” 这里命名为“BP_MyCameraShake” 打开“BP_MyCameraShake”,根晃动模式这里设置为“Perlin噪点摄像机晃…

类和对象—继承(1)

目录 1、继承1.1、继承的概念1.2、继承的语法 2、子类访问父类成员2.1、子类中访问父类的成员变量2.2、子类中访问父类的成员方法2.3、super 关键字 3、子类构造方法 1、继承 在 Java 中,类对现实中的实体进行描述,而类实例化的对象用来表示现实中的实体…

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能,让运维经验不再零散!只需将日常的运维操作和故障排查经验转化为标准化流程,就能一键复用,效率翻倍,从此告别重复劳动,把时间留给更有价值的创新工作。更贴心的是&…

Linux应用:线程基础

线程介绍 进程是程序在操作系统里的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文…

要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目

文章目录 要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目1. 创建Spring Boot项目2.项目配置2.1 依赖yml配置数据库表配置 3.代码实现3.1 实体类3.2 数据访问层3.3 服务层3.4 控制层3.5 Thymeleaf模板 要创建一…

解决Cubemx生产的 .ioc文件不能外部打开的方法

正常来说,cubemx生成的文件会有图标 但是当图标白色的时候,无法通过直接点击这个文件进入cubemx 1.首先检查java环境是不是装的JAVA8,如果是的话进行第二步操作; 2.重新安装一次cubemx,在安装的时候选择为我安装&…

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程(丐版,无需云服务器) 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花,实现内网穿透,邀…

Transformer | 一文了解:缩放、批量、多头、掩码、交叉注意力机制(Attention)

源自: AINLPer(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2025-3-27 更多:>>>>专注大模型/AIGC、学术前沿的知识分享! 引言 之前的文章:2万字长文!一文了解…

原型验证后客户推翻原有需求,如何止损

原型验证后客户推翻原有需求时止损的有效方法包括:迅速评估影响范围、立即开展沟通确认、调整项目计划和资源配置、更新变更管理流程、协商成本分担机制。其中,迅速评估影响范围是关键,项目团队必须立即明确此次变更的具体影响,包…

六、小白学JAVA-类和对象

1、什么是类和对象 人类---类:走路、说话、学习 人---对象:具体到某个人,就是对象,走路、说话、学习,每个人都是独特的人。 public class Person {String name;public void walk() {System.out.println("我会走…

STM32硬件IIC与OLED使用

OLED屏幕介绍 OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术 OLED显示…

基于Spring Boot的电动车智能充电服务平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…