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

news2024/12/23 2:40:39

相关概念

关注上图中的两个部分:

概念结构设计

设计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.coloradmin.cn/o/1693738.html

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

相关文章

基于hive的酒店价格数据可视化分析系统设计和实现

摘要 本文基于Django框架和Hive技术,设计和实现了一种酒店价格数据可视化分析系 统,旨在为酒店管理者提供直观、清晰的数据洞察和决策支持。在研究中,首先深入分 析了酒店价格数据可视化分析系统的背景和意义,认识到对于酒店行…

【微积分】CH16 integrals and vector fields听课笔记

【托马斯微积分学习日记】13.1-线积分_哔哩哔哩_bilibili 概述 16.1line integrals of scalar functions [中英双语]可视化多元微积分 - 线积分介绍_哔哩哔哩_bilibili 16.2vector fields and line integrals: work circulation and flux 向量场差不多也是描述某种…

Study--Oracle-03-Oracle19C--RAC集群部署

一、硬件信息及配套软件 1、硬件设置 RAC集群虚拟机:CPU:2C、内存:9G、操作系统:30G、数据库安装目录:100G 数据存储:50G (10G*5) 共享存储:2G (1G*2) 2…

【C++STL详解(四)------vector的模拟实现】

文章目录 vector各函数接口总览vector当中的成员变量介绍默认成员函数构造函数1构造函数2构造函数3拷贝构造函数赋值运算符重载函数析构函数 迭代器相关函数begin和end 容量和大小相关函数size和capacityreserveresizeempty 修改容器内容相关函数push_backpop_backinserterases…

面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

Linux-命令上

at是一次性的任务,crond是循环的定时任务 如果 cron.allow 文件存在,只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户&am…

编程基础:掌握运算符与优先级

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、运算符的基石:加减乘除 二、比较运算符:判断数值大小 三、整除…

Postgresql源码(133)优化器动态规划生成连接路径的实例分析

物理算子的生成分为两步,基表的扫描路径生成set_base_rel_pathlists;连接路径生成(make_rel_from_joinlist动态规划)。本篇简单分析实现。看过代码会发现,“基表的扫描路径生成”其实就是作为连接路径生成dp计算的第一…

【Git】版本控制工具——Git介绍及使用

目录 版本控制版本控制系统的主要目标分类小结 分布式版本控制系统——GitGit特点Git与SVN的区别Git的工作机制 Git安装Git 团队协作机制团队内协作跨团队协作远程仓库远程仓库的作用有以下几个方面远程仓库操作流程/团队协作流程 Git分支什么是分支分支的好处 Git的常用命令Gi…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

JS根据所选ID数组在源数据中取出对象

let selectIds [1, 3] // 选中id数组let allData [{ id: 1, name: 123 },{ id: 2, name: 234 },{ id: 3, name: 345 },{ id: 4, name: 456 },] // 源数据let newList [] // 最终数据selectIds.map((i) > {allData.filter((item) > {item.id i && newList.pus…

Linux服务器安装docker,基于Linux(openEuler、CentOS8)

本实验环境为openEuler系统(以server方式安装)&#xff08;CentOS8基本一致&#xff0c;可参考本文) 目录 知识点实验 知识点 实验 查看yum源docker版本 dnf search docker安装docker dnf install dockerdocker --version

每日一题 包含不超过两种字符的最长子串

目录 1.前言 2.题目解析 3.算法原理 4.代码实现 1.前言 首先我打算介绍一下&#xff0c;我对滑动窗口的理解。 滑动窗口可以分为四个步骤&#xff1a; 进窗口&#xff1a; 在这一步骤中&#xff0c;我们决定了要在窗口中维护的信息。例如&#xff0c;在这个问题中&#xff…

java继承(构造器)使用细节3

那么我们怎么来选择用父类的 有参构造器 和无参构造器泥&#xff1f; 就可以不写 或只写super() 并且如像爸爸的爸爸还有爸爸&#xff0c;还有构造。所以会一直调用到爷爷的构造。 细节2 直接继承指的是儿子和爸爸&#xff0c;爸爸和爷爷

多项式重构的平滑和法线估计-------PCL

多项式重构的平滑和法线估计 /// <summary> /// 多项式重构的平滑和法线估计 /// </summary> /// <param name"cloud"></param> /// <returns>输出一个包含平滑后的点云数据以及相应法线信息的数据结构</returns> pcl::PointCl…

AI爆文写作:或许开放性的标题,才会更让人想点开了解答案

这是新华社公众号的一条推文 从信息传递上来说&#xff0c;新闻标题应该直接&#xff0c;包含关键信息。 但这个标题&#xff0c;却没有直接点名哪个国家&#xff0c;要点进去才能看到。 这就是要让人点开的标题特征&#xff0c;标题没有提供完整信息&#xff0c;是开放性的…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…

Go语言实现人脸检测(Go的OpenCV绑定库)

文章目录 OpenCVGithub官网安装环境变量 Go的OpenCV绑定库Github文档安装搜索视频设备ID显示视频检测人脸 OpenCV Github https://github.com/opencv/opencv/ 官网 https://opencv.org/ 安装 brew install opencv brew upgrade opencv安装目录 cd /usr/local/opt/opencv…

读论文 | Small object detection model for UAV aerial image based on YOLOv7

目录 1、前言 2、摘要 3、论文的方法 3.1 方法描述 3.2 方法改进 3.3 本论文的模型图 3.4 本文的数据集&#xff1a; 3.5 论文实验 3.6 解决的问题 3.7 论文总结 &#xff08;1&#xff09;文章优点 &#xff08;2&#xff09;方法创新点 &#xff08;3&#xff0…

IP数据云确认参展2024 ChinaJoy BTOB与诸位共展未来!

作为在全球数字娱乐领域兼具知名度与影响力的年度盛会&#xff0c;2024年第二十一届ChinaJoy BTOB将于7月26日至7月28日在上海新国际博览中心盛大召开&#xff0c;秉承着初心“游”在&#xff0c;精彩无限&#xff01;&#xff08;英译&#xff1a;Stay True, Game On.&#xf…