软件设计师备考 | 案例专题之数据库设计 概念与例题

相关概念

关注上图中的两个部分:

概念结构设计

设计E-R图,也即实体-联系图。

工作步骤:选择局部应用、逐一设计分E-R图、E-R图合并。进行合并时,它们之间存在的冲突主要有以下3类:

  • 属性冲突。同一属性可能会存在于不同的分E-R图中。
  • 命名冲突。相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义。
  • 结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。

逻辑结构设计

将E-R图,转换成关系模式。

工作步骤:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。

实体:客观存在并可相互区分的事物。

  • 实体集:具有相同类型和共享相同属性的实体的集合。如学生、课程。
  • 弱实体和强实体:弱实体依赖于强实体的存在而存在。

属性:实体所具有的特性。

  • 属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性(可以通过其它属性运算出来)
  • 域:属性的取值范围称为属性的域。
  • 码(key):唯一标识实体的属性集。

联系:实体内部的联系和实体之间的联系。

  • 一对一(M:1)
  • 一对多(1:N)    如部门和员工
  • 多对多(M:N)   如学生和所选课程

例题

某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。

【需求分析结果】
(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点
下订单,不直接与蔬菜供应商发生联系。
(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。

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

【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)蔬菜供货商(供货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号,(a))
客户(姓名,客户电话)
订单(订单编号,团购点编号,订单内容,日期,(b))、

【问题 1】(6 分)
根据问题描述,补充图 2-1 的实体联系图。
【问题 2】(4 分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
【问题 3】(5 分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取联系。“快递”关系模式包括快递编号、客户电论和日期。客户电话和日期。联系,对图 2-1 进行补充。

解析:

(1)由需求分析(3)客户与社区团购点为多对多的关系。另外,要对订单添加两个属性“订单内容”和“日期”。多对多的关系模式,应该有另外两张主表作为外键,即客户表和社区团购点,“团购点编号”和“客户电话”应该直接作为关系模式带进来,而不是订单自己拥有的属性。

(2)(a):供货应该有蔬菜供应商和社区团购点的主键作为外键。现在已经有了前者的供货商编号,还需要社区团购点的主键,即团购点编号。主键:(供货商编号、团购点编号)(b)客户电话。

(3)

2. 某汽车维修公司为了便于管理车辆的维修情况,拟开发一套汽车维修管理系统,请根据下述需求描述完成该系统的数据库设计。

【需求分析结果】
(1)客户信息包括:客户名、客户性质、折扣率、联系人、客户号联系电话。客户性质有个人或单位。客户号唯一标识客户关系中的每一个元组。

(2)车辆信息包括:车牌号、车型、产一个客户至少颜色和车辆类别。有一辆车,一辆车只属于一个客户,

(3)员工信息包括:贤工号、员工名、岗位电话、家庭住址。其中员工号唯一标识员工关系中的每一个元组。岗位有业务员、维修工主管。业务员根据车辆的故障情况填写维修单。

(4)部门信息包括:部门号、名称、主管和电话。其中,部门号唯一确定部门关系的每一个元组。每个部门只有一名主管,但每个部门有多名员工,每名员工只属于一个部门。

(5)维修单信息包括:维修单号、车牌号、维修内容、工时。其中维修单号唯一标识维修单关系中的每一个元组。一个维修工可以接多张维修单,但一张维修单只对应一个维修工。

【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示:

【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)客户(客户号,客户名,(a),折扣率,联系人,联系电话)
车辆(车牌号,(b),车型,颜色,车辆类别)
员工(员工号,员工名,岗位,(c),电话,家庭住址)
部门(部门号,名称,主管,电话)
维修单(维修单号(d,)维修内容,工时)

【问题 1】(6 分)
根据问题描述,补充3个联系,完善图 2-1的实体联系图。联系名可以用联系 1、联系2 和联系3代替,联系的类型为 1:1、1:n 和 m:n(或 1:1、1:*和*:*)
【问题 2】(4 分)
根据题意,将关系模式中的空(a)、(d)的属性补充完整,并填入答题纸对应的位置上
【问题 3】(2 分)
分别给出车辆关系和维修单关系的主键和外键。
【问题 4】(3 分)
如果一张维修单涉及多项维修内容,需要多个维修工来处理,那么这个联系类型会发生何种变化?你认为应该如何解决这一问题?

解析:

回答1:补充车辆与客户的联系,部门与员工的联系,维修单与维修工的联系

回答2:(a)为客户性质;(b)车辆信息的属性都在逻辑结构模型中,再填一个,代表天的是外键。车辆和客户是多对一的联系,再多对一的关系中,多有一的主键作为外键,因此(b)为客户表中的主键,即客户号。(c):应填外键,拥有部门号的主键作为外键,因此(c)为部门号。(d):车牌号。维修单与维修工有关系,作为“多”,应有维修工的主键作为外键,维修工为员工的弱实体,因此还应有维修工员工号。维修单与业务员也是多对一的关系,因此也应该拥有业务员的员工号。

回答3:车辆关系的主键是车牌号,外键为客户号。维修单关系中的主键那为维修单号,外键为维修工和业务员的员工工号。

回答4:将维修单和维修工的关系由多对一改为多对多。那么维修单不需要把维修工的主键作为外键。新的关系模型有自己的主键、以及维修单和维修工的编号。

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

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

相关文章

低功耗蓝牙模块轻松实现智能防丢器

低功耗蓝牙模块,作为集成蓝牙无线技术功能的PCBA板,主要用于短距离无线通讯,已经成为物联网无线传输发展的中坚力量。随着蓝牙技术不断更新换代,越来越多的智能可穿戴设备出现在我们的生活中,智能手环,智能…

电商公司需不需要建数字档案室呢

建立数字档案室对于电商公司来说是非常有必要的。以下是一些原因: 1. 空间节约:数字档案室可以将纸质文件转化为电子文件,节省了大量存储空间。这对于电商公司来说尤为重要,因为他们通常会有大量的订单、客户信息和供应商合同等文…

Java面向对象程序设计-Hash表

以下为翁恺老师在3.4Hash表中的示例代码&#xff1a; package coins;import java.util.HashMap; import java.util.Scanner;public class Coin {private HashMap<Integer,String> coinnamesnew HashMap<Integer,String>();public Coin(){coinnames.put(1,"pe…

贷款业务——还款方式以及计算公式对比

文章目录 等额本息等额本金先息后本&#xff08;按月付息&#xff0c;到期还本&#xff09;到期一次还本付息等本等息&#xff08;等额等息&#xff09;等本等息&#xff08;砍头息&#xff09; 等额本息 等额本息&#xff1a;借款人每月还的金额固定&#xff08;本金利息总额…

力扣538. 把二叉搜索树转换为累加树

Problem: 538. 把二叉搜索树转换为累加树 文章目录 题目描述思路复杂度Code 题目描述 思路 利用二叉搜索树中序遍历的特性&#xff0c;**降序遍历&#xff08;此处是想表达先遍历其右子树再遍历其左子树这样遍历的过程中每个节点值得大小排序是降序得&#xff09;**其节点&…

宝塔PHP环境安装配置Xdebug

宝塔PHP环境安装配置Xdebug 安装XdebugVSCode安装插件编辑配置文件编辑配置运行调试断点快捷键其他 安装Xdebug 在宝塔中&#xff0c;找到PHP&#xff0c;打开管理页面&#xff0c;选择xdebug扩展&#xff0c;点击操作栏中的安装按钮&#xff08;这里已经安装过了&#xff0c;…

砍死怪兽的概率

题目描述&#xff1a;给定3个参数&#xff0c;N&#xff0c;M&#xff0c;K&#xff0c;怪兽有N滴血&#xff0c;等着英雄来砍自己&#xff0c;英雄每一次打击&#xff0c;都会让怪兽流失[0,M]的血量&#xff0c;流失的值每次在[0,M]上等概率的获得一个值&#xff0c;求K次打击…

kafka单机安装及性能测试

kafka单机安装及性能测试 Apache Kafka是一个分布式流处理平台&#xff0c;最初由LinkedIn开发&#xff0c;并于2011年开源&#xff0c;随后成为Apache项目。Kafka的核心概念包括发布-订阅消息系统、持久化日志和流处理平台。它主要用于构建实时数据管道和流处理应用&#xff0…

电商项目之有趣的支付签名算法

文章目录 1 问题背景2 思路3 代码实现 1 问题背景 在发起支付的时候&#xff0c;一般都需要对发送的请求参数进行加密或者签名&#xff0c;下文简称这个过程为“签名”。行业内比较普遍的签发算法有&#xff1a; &#xff08;1&#xff09;按支付渠道给定的字段排序进行拼接&am…

C++|设计模式(〇)|设计模式的六大原则

这里文章只做简要描述&#xff0c;作为扫盲 在软件开发过程中&#xff0c;遵循一定的设计原则可以帮助开发者创建更加灵活、可维护和可扩展的系统。设计模式的六大原则是面向对象设计的核心理念&#xff0c;本文将详细介绍这些原则&#xff0c;并结合实例说明它们的重要性和应用…

Android Studio添加依赖 新版 和 旧版 的添加方式(Gradle添加依赖)(Java)

旧版的&#xff08;在线添加&#xff09; 1找 文件 在项目的build.gradle文件中添加依赖(在下面的节点中添加库 格式 ’ 组 &#xff1a;名字 &#xff1a; 版本号 ‘ ) dependencies {implementation com.example:library:1.0.0 }implementation 组:名字:版本…

【lambdastreammaven】

lambda 匿名函数 为了简化java中的匿名内部类 事件监听 写一个类 实现 ActionListener 接口 (外部类) | | 内部类 类在其他地方用不到, 索性就把这个类定义在类的内部使用 好处: 1.内部可以使用外部类的成员 …

互联网十万个为什么之什么是分布式计算?

分布式计算是一种计算方法&#xff0c;它将计算任务分散到多个物理或逻辑上分开的计算机&#xff08;称为节点&#xff09;上执行&#xff0c;这些节点通过网络互连并协作完成共同的目标。每个节点具备独立的处理能力和存储资源&#xff0c;在分布式系统中&#xff0c;它们共享…

论文阅读--CLIPasso

让计算机把真实图片抽象成简笔画&#xff0c;这个任务很有挑战性&#xff0c;需要模型捕获最本质的特征 以往的工作是找了素描的数据集&#xff0c;而且抽象程度不够高&#xff0c;笔画是固定好的&#xff0c;素描对象的种类不多&#xff0c;使得最后模型的效果十分受限 之所以…

小米财报:业绩远超预期,汽车推着手机跑!

随着一季度财报陆续出炉&#xff0c;企业间的分化越来越明显。 新环境下&#xff0c;很多公司都陷入停滞时&#xff0c;去讨论“掉队”已经没有多少意义&#xff0c;现在真正值得我们关注的&#xff0c;是那些在逆风情况下&#xff0c;还能“领先”的企业。毫无疑问&#xff0…

ES集群性能优化参考建议

Elasticsearch&#xff08;ES&#xff09;集群性能优化是一个多方面的任务&#xff0c;涉及硬件、配置、查询优化等多个方面。以下是一些建议&#xff0c;帮助你优化Elasticsearch集群的性能&#xff1a; 1. 硬件优化 内存&#xff1a;确保分配给Elasticsearch的内存足够大&a…

C++|设计模式(三)|抽象工厂模式

抽象工厂模式仍然属于创建型模式&#xff0c;我们在【简单工厂和工厂方法模式】这篇文章中&#xff0c;描述了简单工厂和工厂方法模式&#xff0c;并在文末&#xff0c;简单介绍了工厂方法模式的局限性。 本文将通过汽车工厂的例子继续来阐述使用抽象工厂模式相比较于工厂方法…

Linux修炼之路之冯系结构,操作系统

目录 一&#xff1a;冯诺依曼体系结构 1.五大组件 2.存储器存在的意义 3.几个问题 二&#xff1a;操作系统 接下来的日子会顺顺利利&#xff0c;万事胜意&#xff0c;生活明朗-----------林辞忧 一&#xff1a;冯诺依曼体系结构 我们当代的计算机的基本构成都是由冯诺依曼…

Kubernetes 容器编排

应用程序部署演变 主要有三个演变&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应用程序定义资源使用边界&#xff0c;很难合理地分配计算资源&…

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型&#xff0c;尤其是那些拥有千亿参数的模型&#xff0c;因其出色的商业应用表现而受到市场的青睐。但是&#xff0c;直接通过API使用这些模型可能会带来数据泄露的风险&#xff0c;尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…