中级软件设计师:一文搞懂下午第二题——数据库设计
- 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种图形)来定义:
- 第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
- 第二类是静态图(Staticdiagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
- 第三类是行为图(Behaviordiagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
- 第四类是交互图(Interactivediagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。
- 第五类是实现图(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)
属性是实体某方面的特性。每个属性都有其取值范围。
- 简单属性和复合属性:
- 简单属性是原子的,不可再分的;
- 复合属性可以细分为更小的部分(如通信地址,可细分为省、市、街道)。
- 单值属性和多值属性
- 单值属性:定义的属性对于一个特定的实体都只有一个单独的一个值(如对于特定的职工,职工号只有一个
- 多值属性:一个属性可能对应一组值(如职工的亲属姓名可能有多个数目)
- NULL 属性
- 实体在某个属性上没有值或属性值未知时,使用NULL,表示无意义或不知道。
- 派生属性
- 派生属性是可以从其它属性得来。如学生实体中 “年龄” 和 “出生日期” 属性,“年龄” 可以有当前时间和 “出生日期” 计算得出,这里 “年龄” 就是一个派生属性。
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