中级软件设计师:一文搞懂下午第二题——数据库设计

news2024/11/23 21:30:26

中级软件设计师:一文搞懂下午第二题——数据库设计

  • 1. 数据库设计过程
    • 1.1 ER模型
      • 1.1.0 浅谈UML
      • 1.1.1 实体(Entity)
      • 1.1.2 联系
      • 1.1.3 联系类型
      • 1.1.4 实体间的联系模型
    • 1.2 属性(Attribute)
    • 1.3 关系(Relationship)
    • 1.4 ER图对我们来说有什么作用呢?
    • 1.5 如何画出一张ER图
  • 2. 出题方式
    • 2.1 答题技巧
  • 3. 试试真题
    • 3.1 2022-11软考真题
      • 3.1.1 题目
      • 3.1.2 问题1
      • 3.1.3 问题2
      • 3.1.4 问题3
    • 3.2 2023-05软考真题
      • 3.2.1 题目
      • 3.2.2 问题1
      • 3.2.3 问题2
      • 3.2.4 问题3
  • 参考文献

以下内容是在阅读大量博客并结合个人理解后整理总结的,作为个人学习笔记分享给大家。文末将附上相关的参考资料链接。如果其中有涉及到侵权的内容,请及时告知,我会立即删除相关部分。在此,特别感谢各位前辈的无私分享和指导,也希望本文能够对读者有所帮助。

1. 数据库设计过程

每个阶段都要有对应的产出,例如:

  • 需求分析要出:数据流图、数据字典、需求说明书。
  • 概要概念设计:ER图/ER模型
  • 逻辑结构设计:关系模式图

1.1 ER模型

1.1.0 浅谈UML

首先!!!一定要区分 ER图和UML图:

ER图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。UML是统一建模语言,UML图共有九种。

我们先读一下什么是UML图,下一节,我们重点看UML,在这里我们一定要做一个区分!!!!!

UML的重要内容可以由下列五类UML图(共9种图形)来定义:

  1. 第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
  2. 第二类是静态图(Staticdiagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
  3. 第三类是行为图(Behaviordiagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
  4. 第四类是交互图(Interactivediagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。
  5. 第五类是实现图(Implementationdiagram)。其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。

1.1.1 实体(Entity)

实体用矩形表示; 实体是现实世界中可以区别于其它对象的 “事件” 或 “物体”。

在这里插入图片描述

1.1.2 联系

联系用菱形表示,并用无向边分别与有关实体连接起来,同时无向边旁标注联系的类型

在这里插入图片描述

1.1.3 联系类型

实体的联系分为实体内部的联系(反映数据在同一记录内部个字段间的联系),和实体与实体之间的联系。

1.1.4 实体间的联系模型

在这里插入图片描述

主要分为三种:1:1的联系、1:n的联系、m:n的联系
两个以上不同实体之间的联系存在:1:1:1、1:1:n、1:m:n 和 r:m:n
同一实体集内的二元联系:同一实体集内的各实体之间也存在 1:1、1:n 和 m :n 的联系

转换的基本原则是:实体和联系分别转换成关系,属性则转换成相应关系的属性

一对一联系、一对多联系、多对多联系、多元联系

1.2 属性(Attribute)

属性是实体某方面的特性。每个属性都有其取值范围。

  1. 简单属性和复合属性:
    • 简单属性是原子的,不可再分的;
    • 复合属性可以细分为更小的部分(如通信地址,可细分为省、市、街道)。
  2. 单值属性和多值属性
    • 单值属性:定义的属性对于一个特定的实体都只有一个单独的一个值(如对于特定的职工,职工号只有一个
    • 多值属性:一个属性可能对应一组值(如职工的亲属姓名可能有多个数目)
  3. NULL 属性
    • 实体在某个属性上没有值或属性值未知时,使用NULL,表示无意义或不知道。
  4. 派生属性
    • 派生属性是可以从其它属性得来。如学生实体中 “年龄” 和 “出生日期” 属性,“年龄” 可以有当前时间和 “出生日期” 计算得出,这里 “年龄” 就是一个派生属性。

1.3 关系(Relationship)

关系描述了实体之间的关联,通常在绘图中使用 菱形 表示关系。关系可以是一对一(1:1)、一对多(1:n)或多对多(m:n)。例如,学生与课程之间的关系就是一种多对多关系,因为一个学生可以选修多门课程,而一门课程也可以有多个学生选修。其中属性通过线条连接到实体,关系通过线条连接到相关的实体。

1.4 ER图对我们来说有什么作用呢?

  • 直观展示数据结构:ER图通过图形化的方式展示数据的结构和关系,便于理解和沟通。
  • 辅助数据库设计:在数据库设计过程中,ER图是重要的工具,它帮助设计者构建合理的数据模型,确保数据的完整性和一致性。
  • 文档化数据模型:ER图可以作为数据库设计的文档,记录数据模型的结构,为后续的数据库维护和扩展提供参考。

1.5 如何画出一张ER图

  • 识别实体:首先,确定数据库中需要包含的实体。这一步需要对实际业务进行分析,找出关键的对象。
  • 确定属性:为每个实体确定属性,描述实体的特征。注意区分简单属性和复合属性,确保属性的完整性。
  • 定义关系:确定实体之间的关系,描述它们之间的关联。要明确关系的类型(一对一、一对多或多对多),并为关系添加必要的属性。

2. 出题方式

(1)补充实体联系图,主要是填充联系(1:1,1:n,n:m)
(2)补充关系模型中空缺的属性;
(3)指出部分实体的主键和外键;
(4)简答题

2.1 答题技巧

(1)联系和联系判断

根据题干找出关键信息,判断实体联系的比值。

(2)关系模式属性判断

根据题干找出缺失的属性,或根据ER图转换为关系模式时属性的增加;

(3)简答题联系规范化理论进行作答

3. 试试真题

实际上,到目前为止,你已经掌握了作答下午ER模型题目的基本方法。通过前面的学习和理解,你已经具备了识别实体、属性以及它们之间关系的能力。接下来,只要细心审题,理解每个实体与关系的含义,你就能顺利解答ER模型题目了。相信自己,你已经准备好了!

3.1 2022-11软考真题

3.1.1 题目

某营销公司为了便于对各地的分公司及专卖店进行管理,拟开发一套业务管理系统,请根据下述需求描述完成该系统的数据库设计。

【需求描述】

(1)分公司信息包括:分公司编号、分公司名、地址和电话。其中,分公司编号唯一确定分公司关系的每一个元组。每个分公司拥有多家专卖店,每家专卖店只属于一个分公司

(2)专实店信息包括:专卖店号、专卖店名、店长、分公司编号、地址、电话,其中,店号唯一确定专卖店关系中的每一个元组。每家专卖店只有一名店长,负责专卖店的各项业务;每名店长只负责一家专卖店:每家专卖店有多名职员,每名职员只属于一家专卖店

(3)职员信息包括:职员号、职员名、专卖店号、岗位、电话、薪资。其中,职员号唯一标识职员关系中的每一个元组。岗位有店长、营业员等。

【概念模型设计】

根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。

在这里插入图片描述
【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)

分公司(分公司编号,分公司名,地址,电话)

专卖店(专卖店号,专卖店名,(a),地址,电话)

职员(职员号,职员名,(b),岗位,电话,薪资)

3.1.2 问题1

根据需求描述,图2-1实体联系图中缺少三个联系。请在答题纸对应的实体联系图中补充三个联系及联系类型。
注:联系名可用联系1、联系2、联系3;也可根据你对题意的理解取联系名。

观察我提炼的这些,回答:

  • 每个分公司拥有多家专卖店,每家专卖店只属于一个分公司
  • 每家专卖店只有一名店长,负责专卖店的各项业务;
  • 每名店长只负责一家专卖店:每家专卖店有多名职员,每名职员只属于一家专卖店

在这里插入图片描述

3.1.3 问题2

(1) 将关系模式中的空(a)、(b)的属性补充完整,并填入答题纸对应的位置上。
(2) 专卖店关系的主键:_(c)和外键:(d)
(3) 职员关系的主键:(e)和外键:(f)

  • a:分公司编号
  • b:专卖店号
  • c:专卖店号
  • d:店长、分公司编号
  • e:职员号
  • f:专卖店号

3.1.4 问题3

(1)为了在紧急情况发生时,能及时联系到职员的家人,专卖店要求每位职员至少要填写一位紧急联系人的姓名、与本人关系和联系电话。根据这种情况,在图2-1中还需添加的实体是 (g) ,职员关系与该实体的联系类型为 (h) 。
(2)给出该实体的关系模式。

(1)g:紧急联系人

(1)h:紧急联系人和职员:n:1

怎么写关系模式啊?别急!看第一题的描述!豁然开朗!

(2)紧急联系人(紧急联系人号,职员号,紧急联系人的姓,与本人关系,联系电话)

怎么样?不相信自己?? 再来一道!

3.2 2023-05软考真题

3.2.1 题目

【说明】某新能源汽车公司为了提升效率,需开发一个汽车零件采购系统。请完成系统的数据库设计。

【概念结构设计】

在这里插入图片描述

【需求描述】

  • 记录供应商的信息,包括供应商的名称,地址和一个电活
  • 记录零件的信息,包括零件的编码、名称和价格
  • 纪录车型信息,包括车型的编号,名称和规格
  • 记录零件采购信息,某个车型的某种零件可以从多家供应商采购,某种零件也可以被多个车型采用,某家供应商也可以供应多种零件,还包括采购数量和采购日期

【逻辑结构设计】

根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)
供应商(名称,地址,电话)
零件(编码,名称,价格)
车型(编号,名称,规格)
采购(车型编号,供应商名称,(a),(b),采购日期)

3.2.2 问题1

根据问题描述,补充图2-1的实体联系图(不增加新的实体)。

在这里插入图片描述

3.2.3 问题2

补充逻辑结构设计结果中的(a)(b)两处空缺,并标注主键和外健完整性约束。

a:零件编码
b:采购数量
主键(车型编号,零件编码,供应商名称),外键(车型编号,零件编码,供应商名称)

3.2.4 问题3

该汽车公司现新增如下需求:记录车型在全国门店的销售情况,门店信息包括门店的编号、地址、电话销售包括销售数量和销售日期等对原有设计进行以下修改以实现该需求:
(1)在图1中体现门店信息及其车型销售情况、并标明新增的实体和联系,及其核心属性。
(2)给出新增加的关系模式,并标注主键和外键完整性约束。

在这里插入图片描述

(2)给出新增加的关系模式,并标注主键和外键完整性约束。

  • 门店(编号,地址,电话)
  • 销售(门店编号,车型编号,销售数量,销售日期)
  • 门店:主键(编号),外键(无)
  • 销售:主键(门店编号,车型编号),外键(门店编号)

参考文献

【软件设计 - 下午题 -(2)E-R 图】https://blog.csdn.net/iuhart/article/details/136347119
【软考中级(软件设计师))一一数据库设计(下午15分)——数据结构及算法应用(最难的点1个答题15分-程序填空题-目标3-9分)原创】https://blog.51cto.com/laoshifu/5806797
【软考ER图历年真题】https://blog.csdn.net/tqhnet/article/details/137963447

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

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

相关文章

Python案例--动态奖金计算(个税计算)

在企业财务管理中,员工的奖金计算是一项关键任务,它直接关系到员工的积极性和忠诚度。一个合理的奖金制度能够激励员工更好地完成工作,提高企业的整体竞争力。本文将通过Python编程语言,详细探讨如何根据企业利润计算员工的奖金。…

ROS C++ : 使用ros::AsyncSpinner,实现多线程处理ROS消息

文章目录 1、原理说明1.1、ros::MultiThreadedSpinner1.2、ros::AsyncSpinner1.3、多线程原理1.3.1、 消息发布1.3.2、 消息订阅 2、ros::AsyncSpinner 示例13、ros::AsyncSpinner 示例24、使用 ros::AsyncSpinner, 多线程处理回调示例 1、原理说明 ROS提供了2中方…

风场可视化效果的实现,免费的预测数据获得方法

风场可视化是气象学、海洋学等领域中的重要研究工具,它能够直观地展示大气或海洋中的风速、风向等信息。通过风场的可视化,科研人员可以更好地理解气象数据的空间分布特征,分析风场的动力学特性。本文将介绍如何利用Python中的matplotlib、Ba…

git维护【.gitignore文件】

在工程下添加 .gitignore 文件【git忽略文件】 *.class .idea *.iml *.jar /*/target/

如何通过几个简单步骤创建博客

搭建博客不仅可以表达自我和分享知识,还可以成为一种潜在的收入来源。如果你也对搭建博客感兴趣,下面的几个步骤将帮助你轻松入门。 一、选择一个主题 确定你的兴趣点:首先,你需要选择一个你感兴趣且擅长的领域。你悉的领域既能激…

基于SpringBoot+Vue的蛋糕甜品商城系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网技术的飞速发展,电子商务已经深入人们的日常生活,各行各业都在积极拥抱数字化转型。蛋糕甜品行业也不例外,传统的销售模式已经无法满足消费者日益增长的多样化、便捷化需求。因此&a…

每日学习一个数据结构-树

文章目录 树的相关概念一、树的定义二、树的基本术语三、树的分类四、特殊类型的树五、树的遍历六、树的应用场景 树的遍历一、前序遍历二、中序遍历三、后序遍历使用java代码实现遍历总结 树的相关概念 树是一种重要的非线性数据结构,在计算机科学中有着广泛的应用…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。但远程文件包含漏洞的利用条件较为苛刻;因此,在web应用系统的功能设计上尽量不要让前端用户直接传变…

【GT240X】【04】你必须知道的 50 多个 Linux 命令

文章目录 一、介绍二、五十个linux命令一览表三、50个命令详解四、结论 你必须知道的 50 多个 Linux 命令 一、介绍 你经常使用 Linux 命令?今天,我们将介绍 50 多个你必须知道的 Linux 命令。下面列出的命令是一些最有用和最常用的 Linux 命令&#x…

jmeter学习(5)定时

Jmeter之定时器_jmeter定时器-CSDN博客 Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)-腾讯云开发者社区-腾讯云 (tencent.com) 定时器是在每个sampler之前执行的,无论定时器位置在sampler之前还是子节点下面当执行一个sam…

TypeScript 算法手册 【基数排序】

文章目录 1. 基数排序简介1.1 基数排序定义1.2 基数排序特点 2. 基数排序步骤过程拆解2.1 找出数组中的最大值2.2 从最低位开始,对每一位进行计数排序2.3 对某一位数进行计数排序2.4 将排序结果复制回原数组 3. 基数排序的优化3.1 处理负数3.2 字符串排序案例代码和…

Go语言实现随机森林 (Random Forest)算法

在 Go 语言中实现随机森林(Random Forest)算法通常涉及以下几个步骤: 数据准备:将数据集分为训练集和测试集,确保数据格式适合算法使用。 决策树的构建:随机森林是由多个决策树构成的,首先需要…

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置 目录 MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置一、MySQL 软件的下载二、安装 MySQL三、配置 MySQL1、配置环境变量2、安装并启动 MySQL 服务3、设置 MySQL 字符集4、为 root 用户设置登录密码 一…

使用前端三剑客实现一个备忘录

一,界面介绍 这个备忘录的界面效果如下: 可以实现任务的增删,并且在任务被勾选后会被放到已完成的下面。 示例: (1),增加一个任务 (2),勾选任务 &#xff…

【知乎直答】批量多线程生成原创文章软件-AI智能搜索聚合

【知乎直答】批量多线程生成原创文章软件介绍: 1、知乎发布的全新AI产品“知乎直答”是其AI搜索功能的产品化成果,旨在提升用户的提问、搜索体验以及结果生成和归纳的质量。 2、数据基础:该产品基于知乎平台上的真实问答数据及全网高质量问答…

Chromium 中前端js XMLHttpRequest接口c++代码实现

在JavaScript中发出HTTP请求的主要方式包括&#xff1a;XMLHttpRequest对象、Fetch API、Axios库和各种其他的HTTP客户端库。 本人主要分析下XMLHttpRequest接口在c中对应实现 一、上前端代码 <!DOCTYPE html> <html lang"en"> <head> <meta…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

Marp精华总结(二)进阶篇

概述 这是Marp精华总结的第二篇&#xff0c;主要补充第一篇未提到的一些内容。 系列目录 Marp精华总结&#xff08;一&#xff09;基础篇Marp精华总结&#xff08;二&#xff09;进阶篇Marp精华总结&#xff08;三&#xff09;高级篇 自适应标题 通过在标题行中插入<!-…

历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功能限制/运行时间限制/日期防篡改/跨平台

一、项目介绍 1.0 前言说明 标题一点都不夸张&#xff0c;从第一版的秘钥生成器到今天这个版本&#xff0c;确实经历了十年的时间&#xff0c;最初的版本做的非常简陋&#xff0c;就是搞了个异或加密&#xff0c;控制运行时间&#xff0c;后面又增加设备数量的控制&#xff0…