当前位置: 首页 > news >正文

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

相关概念

关注上图中的两个部分:

概念结构设计

设计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:将维修单和维修工的关系由多对一改为多对多。那么维修单不需要把维修工的主键作为外键。新的关系模型有自己的主键、以及维修单和维修工的编号。

相关文章:

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

相关概念 关注上图中的两个部分: 概念结构设计 设计E-R图,也即实体-联系图。 工作步骤:选择局部应用、逐一设计分E-R图、E-R图合并。进行合并时,它们之间存在的冲突主要有以下3类: 属性冲突。同一属性可能会存在于…...

【全网最全】2024电工杯数学建模A题成品论文+前三题完整解答matlab+py代码等(后续会更新成品论文)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模A题成品论文前三题完整解答matlabpy代码等(后续会更新成品论文)「首先来看看目前已有的资料&am…...

基于.net开发的博客系统

基于.net开发可以批量上传md文件生成文章的博客系统 .NET 个人博客 基于.net开发的博客系统 个人博客系统,采用.net core微服务技术搭建,采用传统的MVC模式,使用EF core来对mysql数据库(sqlite数据库)进行CRUD操作项目 为什么要自己开发博客…...

python给图片加上图片水印

python给图片加上图片水印 作用效果代码 作用 给图片加上图片水印图片水印的透明度,位置可自定义 效果 原始图片: 水印图片: 添加水印后的图片: 代码 from PIL import Image, ImageDraw, ImageFontdef add_watermark(in…...

Redis实现MQ

MQ的提出 上游发出请求后阻塞等待下游给到反馈,否则整个流程将一直阻塞。 提出mq之后:即有producer mq consumer 三者 MQ的特点 异步解耦 在有了 mq 后,producer 不需要过分关心 consumer 的身份信息,只需要把消息按照指定的协议…...

【Linux】进程终止与进程等待

目录 进程终止 errno exit和_exit 进程等待 wait和waitpid 宏:WIFEXITED 非阻塞等待 进程终止 下面要谈的一个话题就是进程终止,就是说一个进程退出了,可能有三种情况 1.进程代码执行完,结果是正确的 2.进程代码执行完&…...

数据结构_链式二叉树(Chained binary tree)基础

✨✨所属专栏:数据结构✨✨ ✨✨作者主页:嶔某✨✨ 二叉树的遍历 前序、中序以及后序遍历 学习二叉树结构,最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则,依次对二叉树中的结点进行相应的操作&#xff…...

python梯度下降法求解三元线性回归系数,并绘制结果

import numpy as np import matplotlib.pyplot as plt # 生成随机数据 np.random.seed(0) X1 2 * np.random.rand(100, 1) X2 3 * np.random.rand(100, 1) X3 4 * np.random.rand(100, 1) y 4 3 * X1 5 * X2 2 * X3 np.random.randn(100, 1) # 合并特征 X_b np.hsta…...

Linux基础(五):常用基本命令

从本节开始,我们正式进入Linux的学习,通过前面的了解,我们知道我们要以命令的形式使用操作系统(使用操作系统提供的各类命令,以获得字符反馈的形式去使用操作系统。),因此,我们是很有…...

原始字面常量(C++11)

原始字面常量(C11) 文章目录 原始字面常量(C11)前言一、原始字面量二、代码示例总结 前言 字面量一般是指数值(12、454等)和字符串(“Hw”、“h\t”),但是有时候我们想表…...

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

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

【排序算法】——归并排序(递归与非递归)含动图

制作不易,三连支持一下吧!!! 文章目录 前言一.归并排序递归方法实现二.归并排序非递归方法实现 前言 这篇博客我们将介绍归并排序的原理和实现过程。 一、归并排序递归方法实现 基本思想: 归并排序(MERGE-…...

Mysql自增id、uuid、雪花算法id的比较

MySQL自增id: 优点: 1.简单易用 ​ MySQL自增id 由数据库自动生成。 2.效率高 自增id是按顺序递增的,可以提高插入和查询的效率。 3.索引效率高 自增id可以作为主键或索引列,提高查询效率。 缺点: 1.不适用于分布式系统 在分布式…...

【会议征稿,IEEE出版】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024,6月28-30)

第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024)将于2024年6月28-30日在中国绵阳举行。 ISCTT 2024将围绕 “信息科学”、"计算机技术”、“交通运输” 等最新研究领域,为来自国内外高等院校、科学研究所、企事业单位的专…...

二十八篇:嵌入式系统实战指南:案例研究与未来挑战

嵌入式系统实战指南:案例研究与未来挑战 1. 引言 1.1 嵌入式系统的重要性及其应用广度 在当今快速发展的技术领域中,嵌入式系统扮演着至关重要的角色。这些系统是专门设计的计算机硬件和软件的组合,旨在执行特定任务,如控制、监…...

探索编程乐趣:绘制螺旋图的奇幻之旅

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:编程的魔法世界 二、绘制螺旋图的准备工作 三、代码实战:…...

C# 语法糖

语法糖 var关键字(隐式类型变量):自动属性:简化的事件访问器:Lambda表达式和匿名方法:扩展方法:LINQ查询:异步编程(async和await):嵌套匿名类型&a…...

ubuntu 安装VMtool 实现复制粘贴

如果只是安装一个根本没有用,而是两个命令都要安装 sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop引用博客...

智慧仓储新动力:EasyCVR+AI视频智能监管系统方案助力仓储安全高效管理

一、背景 随着物流行业的快速发展和智能化水平的提升,智慧仓储视频智能监管系统已成为现代仓储管理的重要组成部分。本系统通过综合运用物联网、视频分析、边缘计算等技术手段,实现对仓储环境的全面监控、智能分析和高效管理。 TSINGSEE青犀视频汇聚Ea…...

gcc源码分析(AST抽象语法树)

文章目录 三、AST相关1、AST(抽象语法树)1.1 树结点的声明1.2 树结点的结构1.2.1 tree_node联合体1.2.2 tree_base结构体1.2.3 tree_common结构体1.2.4 常量结构体1.2.5 **标识符节点**2、符号绑定,作用域与block树节点2.1 lang_identifier结构体2.2 c_binding结构体2.3 scop…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

基于 TAPD 进行项目管理

起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...