数据库系统第七章数据库设计Crispy·Candy

早期数据库设计和应用系统设计是分离的

大型数据库设计是涉及多学科的综合性技术,又是一项庞大的工程项目。

它要求多方面的知识和技术。主要包括:

存在的问题:

需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。

说明:

说明:调查的重点是“数据”和“处理”,获得用户对数据库在信息、处理、安全性与完整性的要求。

需求分析的目的:调查清楚用户的实际需求并进行初步分析,最终与用户达成共识。

调查用户需求的步骤:

最终确定系统边界就是要设计出数据字典

本节讲解数据库的组成部分,这几个组成部分是有逻辑联系的。

比如查成绩,要将学生的学号,姓名,成绩等做成一个数据结构一同传送

就是将实体抽象为ER图或者UML等概念模型

概念结构设计是将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程。概念模型的特点:

E-R模型是用E-R图来描述现实世界的概念模型,第一章已经讲过了,这里复习

实体型之间的联系都是概念模型的范畴

如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然。则称实体集A与实体集B具有一对一联系,记为1:1

比如说一个班只有一个班长,一个班长对应一个班

如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n

比如说一个班对应一班学生,多位学生对应一个班

如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n

比如说一个学生可以选修多门课,多门课可以供多名学生选修

【例】对于课程、教师与参考书3个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的。

【例】有3个实体型:供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系。

职工实体型内部具有领导与被领导的联系

这是用来表示概念模型的一种方式

ER图是用来描述概念模型的方式

【注意】如果一个联系具有属性,则这些属性也要用无向线该联系连接起来。

例子:如果用“供应量”来描述联系“供应”的属性,表示某供应商供应了多少数量的零件给某个项目。那么这3个实休及其之间联系的E-R图如下。

可以看到,联系也是有属性的

第一步要先搞明白有哪些实体以及这些实体之间的属性有哪些

用E-R图来表示某个工厂物资管理的概念模型。物资管理涉及的实体有:

这一步要搞明白实体之间的联系,联系的类型在上面已经讲过了,是两个实体型之间的练习,还是单个实体型之间的练习;一对一还是一对多等等。

并且要想好联系是否有属性

联系:

实体型E-R图

实体和联系的ER图

在画联系的ER图的时候,不需要写属性,否则会太乱。

可以看到联系也是有属性的

完整的ER图

最终画出完整的ER图

E-R模型得到了广泛的应用,人们在基本E-R模型的基础上进行了某些方面的扩展,使其表达能力更强。

用E-R方法构建一个项目的模型时,经常会遇到某些实体型是某个实体型的子集

例如,研究生和本科生是学生的子类,学生是父类。这种父类-子类的联系称为ISA联系,表示“isa”的语义,如下图,研究生isa学生,本科生isa学生。

ISA联系用三角形来表示。

说明:ISA联系描述了一个实体型中实体的一种分类方法,其一个重要的性质是子类继承了父类的所有属性,同时子类也可有自己的属性。

根据分类属性的值把父实体型中的实体分派到子实体中。

【例】下图中在ISA联系符号三角形的右边加一个分类属性“学生类别”,说明一个学生是研究生还是本科生由“学生类别”这个属性决定。

不相交约束:父类中的一个实体不能同时属于多个子类中的实体集,即一个父类中的实体最多属于一个子类实体集。(比如学生,要么是本科生,要么是研究生,不能两个都是)

用ISA联系三角形符号内加一个“X”来表示。

可重叠约束:父类中的一个实体能同时属于多个子类中的实体集,三角形符号内没有“X”来表示。

完备性约束:描述父类中的一个实体是否必须是某一个子类中的实体。如果是,则为完全特化,否则为部分特化。

比如学生的子类是研究生和本科生,但是不一定,还可能是专科生没有画出来。

【例】0..1、1..3、1..*(*代表无穷大)。

【例】学生和学生证联系中,一个学生必须拥有一本学生证,一本学生证只能属于一个学生,因此都是1..1。

【例】学生和课程联系中,假设学生实体型的基数约束是20..30,课程的一个合理的基数约束是0..*。

要搞清实体约束的位置与实体的对应关系:

【例】班级和学生联系中,一个学生必须参加一个班,并只能参加一个班,因此为1..1,一个班级最少30个学生,最多40个学生,因此是30..40。

Part-of联系:即部分联系,表明某个实体型是另外一个实体型的一部分。

【例】汽车和轮子两个实体型,轮子是汽车的一部分,即Part-of汽车实体。

Part-of联系的分类:

【例】汽车实体型和轮子实体型之间,汽车车体被毁坏了,轮子还存在,可以拆下来独立使用。具体如下图

【例】用户从银行贷款购房,这笔贷款一次贷出,分期归还。还款就是一个弱实体,因为它只有还款序号、日期和金额三个属性,第1笔还款的序号为1,第2笔还款的序号为2,以此类推,这些属性的组合都不能作为还款的码。还款的存在必须依赖于贷款实体。

【例】房间和楼房的联系。每座楼都有唯一的编号或名称,每个房间都有编号,如果房间号不包含楼号,则房间号不能作为码,所以房间是个弱实体。

房间实体和拥有联系都是双线

UML是统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。也可以作为表示E-R图的一种方法。UML表示E-R图的说明:

【例】学生、课程它们之间的联系以及基数约束的E-R图用UML表示。

概念设计的第一步就是对需求分析阶段收集到的数据进行分类、组织,确定实体、实体属性、实体间联系类型,形成E-R图。

前面已经初步学习如何做ER图,现在来讲ER图进行进一步处理

本节主要讲解哪些项适合作为属性,哪些不适合,以及几个案例演示如何处理这些不适合作为属性的项

实体与属性的划分原则

为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。

两条准则:

【例】职工是一个实体,职工号、姓名、年龄是职工的属性。

【例】在医院中,一个病人只能住在一个病房

【例】货物存在仓库中

【例】销售管理子系统E-R图的设计。

根据这个案例学习如何画ER图

该子系统的主要功能是:

先设计E-R草图如下

参照需求分析和数据字典中的详尽描述,遵循前面给出的两个准则,进行如下调整:

最后得到销售管理子系统E-R图如下:

对每个实体定义的属性如下:

前面生成了多个ER图,现在要将ER图集成到一个ER图中

E-R图的集成一般需要分两步:

可以看到,修改与重构要使用到规范化理论

看下面的例子

零件与产品之间存在多对多的联系“构成”。产品、零件与供应商三者之间还存在多对多的联系“供应”。

然后合并两个图

可以看到产品与零件之间加了一层关系

举例如下

如图,Q3=Q1×Q2,Q4=∑Q5。

Q3和Q4扇区了

并不是所有的冗余数据与冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。

如果每次查询都要查询每个仓库中此种材料的库存,再求和,就使得查询效率低下。因此应保留Q4,同时把Q4=∑Q5定义为Q的完整性约束条件。每当Q,修改后,触发完整性检查。

实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依赖来表示。于是有函数依赖集FL。

就是将ER图中实体之间的联系转换为函数依赖

如图:

逐一考察D中的函数依赖,确定是否是冗余的联系,若是,就把它去掉。

由于规范化理论受到泛关系假设的限制,应注意下面两个问题:

我们来合成下面的图

集成过程需要解决以下问题

最终的集成E-R图如下

上面学习了如何画出E-R图,下面一节将E-R图转换为数据库中的一张表

逻辑结构设计的任务:把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

E-R图由实体型、实体的属性和实体型之间的联系三个要素组成。E-R图向关系模型的转换就是将实体型、实体的属性和实体型之间的联系转化为关系模式。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

关系的属性:与该联系相连的各实体的码及联系本身的属性。关系的候选码:每个实体的码均是该关系的候选码。

那么得到的关系就是(Sdept,Mname,Time)

合并后关系的属性:加入对应关系的码和联系本身的属性。合并后关系的码:不变。

就是将Mname和Time合并到Sdept的关系中

这种方式可以减少关系的个数,多用这个

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

比如Sdept与Sno的联系,联系的属性为人数

那么得到的关系为(Sdept,Sno,num)

比如将Sno与num合并到Sdept中

该方法可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。

一个m:n联系转换为一个关系模式。

[例]“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码:

选修(学号,课程号,成绩)

三个或三个以上实体间的一个多元联系转换为一个关系模式。

比如这个,最终的关系就是

(产品的码,供应商的码,零件的码,数量)

具有相同码的关系模式可合并。

将下面E-R图转换为关系模型。关系的码用下横线标出。

最终的成果如下:

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该适当地修改、调整数据模型的结构,这就是数据模型的优化。

总之就是将经常查询的给提取出来

比如将学生分成本科生与毕业生,这样查询本科生或者毕业生就不必再筛选了

选择索引存取方法实际上就是根据应用要求确定对哪些属性列建立索引、对哪些属性列建立组合索引、对哪些索引要设计为唯一索引等。

选择索引存取方法的一般规则:

选择Hash存取方法的规则:如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一:

了解即可,实际使用效率高于B+树

聚簇是为了提高谋而属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块中称为聚簇。

比如将dept="CS"的都放在C盘,将dept="Ma"的都放在D盘,这样根据dept查找的时候只需要查找一次就可以将全部符合条件的查找出来

选择聚簇存取方法:

根据应用情况将

[例]

这里包括垂直分解和水平分解

日志文件是系统文件,数据库对象是用户文件,分开放

这些都是配置量

数据库应用程序的设计应该与数据设计并行进行,在组织数据入库的同时还要调试应用程序。

在数据库运行阶段,对数据库经常性的维护工作主要是由数据库管理员完成。主要工作包括:

数据库管理员要针对不同的应用要求制定不同的转储计划,一旦发生介质故障,尽快将数据库恢复到某种一致性状态。

当应用环境发生变化,对安全性的要求也会发生变化,数据库管理员需要根据实际情况修改原有的安全性控制,同样数据库的完整性约束条件也会变化。

在数据库运行过程中,数据库管理员必须监督系统运行,对检测数据进行分析,找出改进系统性能的方法。

THE END
1.什么是ER图?智能工具帮你生成ER图工具地址:在线生成ER图工具 让SQL秒变ER图,轻松又省事! 写数据库作业时,光写SQL语句就够头疼了,结果还有个更“头疼杀手”——手动画ER图! 手抖连接错误、布局混乱、调整半小时,这些情况是不是非常熟悉?而我们的 在线工具,只需把SQL代码复制粘贴到工具页面中,一键解析!?分分钟就能生成清晰、美观、完全没有https://blog.csdn.net/m0_73232524/article/details/144439525
2.图书管理系统数据模型ER图经管文库(原现金交易图书管理系统数据模型ER图 https://bbs.pinggu.org/thread-13095880-1-1.html
3.推荐几个不错的数据库设计工具腾讯云开发者社区drawDB是一个开源、简单、直观、强大且用户友好的在线数据库设计工具和 SQL 生成器,支持多种数据库。只需点击几下即可构建图表,导出SQL脚本,可以自定义编辑器等,并且无需登录即可使用。 开源地址:https://github.com/drawdb-io/drawdb PDManer PDManer元数建模,是一款多操作系统开源免费的桌面版关系数据库模型建https://cloud.tencent.com/developer/article/2477226
4.免费ER图工具javamob64ca12ebb57f的技术博客创建一个免费的 ER 图工具的全面指南 在开发领域,能够快速创建实体关系图(ER图)是非常重要的,特别是在设计和规划数据库时。本指南将教你如何使用 Java 创建一个免费的 ER 图工具,我们将通过几个步骤来完成这一任务。以下是整个流程的一个概述: 1. 确定项目需求 https://blog.51cto.com/u_16213412/12817336
5.官网建模——让网站焕发新生官网建模搜索引擎新生视觉在当下这个数字化迅猛发展的时代,一个细腻且富有生命力的模型无疑为网站增添了非凡的吸引力。我强烈推荐在官网中融入建模元素,这不仅是因为它能显著提升网站的视觉层次,更因为它能大幅度增强网站的分享潜力。 利用官网建模,我们得以将繁琐的信息转化为直观、简洁的视觉语言,让访问者一目了然地掌握我们的产品或服务。https://m.163.com/dy/article/JJ7EK8KN0556B2VI.html
6.顺德网站设计网站设计顺德华为云计算云知识数据库设计中的物理设计数据库设计中的物理设计时间:2021-06-02 14:34:01 数据库 数据库设计中的物理设计阶段是指,在用户确认的逻辑模型基础上,以数据库系统运行效率,业务操作效率,前端应用效率等因素为出发点对模型进行的调整。面向物理实施过程的 https://www.huaweicloud.com/theme/757348-1-S
7.画ER图属于数据库设计的哪个阶段?声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任 https://www.shuashuati.com/ti/ca145df53bc8491d902313a909e2cf35.html?fm=bdbds496f62b71e06524b58970b54f78f0edd
8.ER图和数据库模型图火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:ER图和数据库模型图https://www.volcengine.com/theme/834535-E-7-1
9.习题ER图(附答案).docx借书人图 6.21 图 书借阅 管理数 据库 E-R图(2)转换为等价的关系模式结构如下: 借书人(借书证号,姓名,单位) 图书(书号,书名,数量,位置,出 版社名)出版社(出版社名,电报编号,电话 可,邮编,地址)借阅(借书证号,书号,借书日期, 还书日期) 8、工厂(包括厂名和厂长名)需建立一个 管理数据库存储以下信息https://max.book118.com/html/2020/1109/5120343141003022.shtm
10.计算机毕业设计之史上最好SpringBoot+Vue.js在线学习平台在线版本2:ssm+vue.js 版本3:ssm+jsp 代码开源 https://gitee.com/bysj2021/online_learn 特色/创新点 PDF在线预览、在线视频学习、多角色登录、前后端分离、在线考试测试 适合计算机毕业设计/课程设计课题 在线学习平台 在线教育网站 线上学习网站 功能 在线学习平台,一共3个身份:管理员,老师和学生! https://www.jianshu.com/p/683ba4529c69
11.跟着案例学习信息架构和零代码搭建明道云博客(4)用ER图细化数据模型 第3步已经列出信息系统所需要的数据对象。在此基础上,我们继续细化数据的属性,也就是描述每个数据对象的字段。 描述数据的属性可以基于现有工作流程中的材料,比如现有的IT系统界面,Excel文件,纸质表单等。如果设计者本人不直接从事相关业务活动,还可以访谈相关的职能用户。 https://blog.mingdao.com/16194.html
12.东大《数据库技术及应用Ⅱ》在线平时作业123东大《数据库技术及应用Ⅱ》在线平时作业123 试卷总分:100 得分:100 一、单选题 (共 10 道试题,共 70 分) 1.把ER图转换成关系模型的过程,属于数据库设计中的 A.概念设计 B.逻辑设计 C.需求分析 D.物理设计 2.在标准SQL中,建立数据库表结构的命令是 http://www.zuoyezhijia.cn/wzz.asp?x=1110
13.数据库入门:新手必读指南本文全面介绍了数据库基础知识,包括数据库的概念与作用、分类及其特点,以及常见数据库系统简介。此外,文章还详细讲解了SQL语言的基础知识和数据库设计的基本原则。对于想要学习数据库入门的读者来说,这是一篇非常实用的指南。数据库基础知识 数据库的概念与作用数据库(Database)是存储和管理数据的系统,它能够有效地组织https://www.imooc.com/article/368780
14.数据库系统概论问题详述:您好,我是山东的一个学生。我最近设计一个学生教师模型。要求一门课程可由多名教师任教,一名教师可任多门课程。 一门课有多个同学选修,一个同学可以选修多门课,但选同一门课时,只能选其中一名教师。 我的问题是“但选同一门课时,只能选其中一名教师。 “这个语义约束在ER图上如何体现? 谢谢 http://chinadb.ruc.edu.cn/index.php/Home/Index/home/nav/10/p/5.html