2020年中级数据库系统工程师考试笔记11—数据库设计

10. 数据库设计

北方都飘雪了,在广东等一个能穿上长袖的冬天还远吗?

本章哪哪都是重点,页数不多(P474-P503),逐字逐句读吧。

在这里插入图片描述

10.1 数据库设计概述

  数据库系统的生命周期分为6个阶段:数据库规划、需求描述与分析、数据库与应用程序设计、数据库设计实现、测试、运行维护。

  数据库设计的一般策略有:自顶向下(Top Down,从一般到特殊的开发策略)和自底向上(Bottom Up,从各种基本业务和数据处理着手,即从各个基层业务子系统业务处理开始)。

  鉴于数据库和应用系统开发全过程数据库设计的基本步骤分为6阶段:
在这里插入图片描述

10.2 系统需求分析

  需求分析阶段的任务:综合各个用户的应用需求,对现实世界要处理的对象(组织、部门和企业等)进行详细调查,在了解现行系统的概况,确定新系统功能的过程中,手机支持系统目标的基础数据及处理办法。

  参与需求分析的主要人员是分析人员和用户,需求分析阶段的工作以及形成的相关文档(作为概念结构设计阶段的依据):
在这里插入图片描述

  需求分析阶段的文档主要包括需求说明文档、数据字典和数据流图,数据流图参考第9章总结,这里简单介绍数据字典。

  数据字典(Data Dictionary,DD)使各类数据描述的集合,它是关于数据库中数据的描述,即元数据,而不是数据本身,内容包括数据项、数据结构、数据流、数据存储和处理过程5个部分(至少应该包含每个字段的数据类型和每个表内的主键、外键)。

  说的文绉绉的,我理解的,简单来说,数据字典就是个表结构说明,把表字段名、字段注释,字段类型、字段约束、表联系、表存储白纸黑字讲明白,以供后续建表参考。实际生产应用,开发人员没那个耐心去写数据字典,甩个Excel表已经是极限了。

  需求分析阶段的成果是系统需求说明书,主要包括数据流图。数据字典、各类说明性表格、统计输出表和系统功能结构图等,系统需求说明书是以后设计、开发、测试和验收等过程的重要依据。

10.3 概念结构设计(★★★

  数据库概念结构设计阶段是在需求分析的基础上,依照需求分析中的信息要求,对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件,转换成为数据的逻辑结构,再依照软硬件环境,最终实现数据的合理存储。这一过程也称为数据建模,这个过程分解为3个阶段:概念结构设计、逻辑结构设计和物理结构设计。

1.概念结构设计策略与方法

  概念结构设计的目标是产生反应系统信息需求的数据库概念结构,即概念模式,概念结构是独立于支持数据的DBMS和使用的硬件环境的。

  概念结构设计的策略通常有4种:自顶向下、自底向上、逐步扩张和混合策略。使用E-R方法,无论是哪种策略,都要对现实事物加以抽象认识,以E-R图的形式描述出来,对现实事物抽象的三种方法分别是分类、聚集和概括。

  (1)分类:对现实世界的事务,按照其具有的共同特征和行为,定义一种类型,如学校中的老师和学生是不同类型。

  (2)聚集:定义某一类型所具有的属性,如学生类型具有学号、姓名、性别、班级等共同属性。

  (3)概括:由一种已知类型定义新的类型,如由学生类型定义研究生类型,只需要在学生类型上加上导师等属性,通常把已知类型成为超类,新定义的类型成为子类。

2.用E-R方法建立概念模型(★★★

  E-R图的设计是对需求分析阶段所得到的数据进行分类、聚集和概括,确定实体、属性和联系,概念结构设计工作步骤包括:选择局部应用、逐一设计分E-R图和E-R图合并。
在这里插入图片描述

  E-R图合并的目的在于合并过程中解决分E-R图中相互间存在的冲突,消除分E-R图之间存在的信息冗余,使之成为能够被全系统所有用户共同理解和接受的统一的、精炼的全局概念模型。

  合并的办法是将具有相同实体的两个或多个E-R图合而为一,在合成后的E-R图中把相同实体用一个实体表示,合成后的实体属性是所有分E-R图中该实体属性的并集。

  注意分E-R图进行合并时,它们之间存在的冲突主要有3类:

  (1)属性冲突:同一属性可能存在于不同的分E-R图中,但属性类型、取值范围、数据单位等不一致。

  (2)命名冲突:相同意义的属性,在不同分分E-R图中有着不同的命名,或者名称相同的属性在不同的分E-R图中代表着不同的意义。

  (3)结构冲突:同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一E-R图中又被抽象为属性。

  分E-R图在合并过程的优化实现有以下几个方面:

  (1)实体类型的合并:两个具有1:1联系或1:*联系的实体,可以予以合并,使实体个数减少,有利于减少将来数据库操作过程中的连接开销。

  (2)冗余属性的消除:一般在各局部E-R图中的属性是不存在冗余的,但合并后就可能出现冗余。因为合并后的E-R图中的实体继承了合并前该实体在分E-R图中的全部属性,属性间就可能存在冗余,即某一属性可以由其他属性确定。

  (3)冗余联系的消除:在局部E-R图合并过程中,可能会出现实体联系的环状结构,即某一实体A与另一实体B之间有直接联系,同时A又通过其他实体与实体B发生间接联系。通常直接联系可以通过间接联系所表达,可消除直接联系。当实体间的联系在不同的局部E-R图有不同的类型时,则应根据应用的语义对实体联系的类型进行综合或调整。

10.4 逻辑结构设计(★★★

  逻辑结构设计是在概念结构设计的基础上进行数据模型设计,科颜氏层次模型、网状模型和关系模型。逻辑结构设计阶段的主要工作步骤包括确定数据模型、将E-R图转换成指定的数据模型、确定完整性约束和确定用户视图。
在这里插入图片描述

  逻辑结构设计阶段的主要任务是:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。

1.E-R图向关系模式转换

  (1)实体向关系模式转换:E-R图转换成关系模式,实体名对应关系模式的名称(表名),实体的属性对应关系模式的属性(字段名),实体标识符就是关系的码(表的键)。

  (2)联系向关系模式转换(照搬课本绕口令般的说明,不要死记,实际应用不难)

  • 一对一联系转换(任一方实体的码都可作为联系的主码):一种将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任意一方实体的码。另一种是将联系归并到关联的两个实体的任意一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。

  • 一对多联系转换(多方实体的码作为联系的主码):一种是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码。另一种是将联系归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性即可,归并后的多方实体码保持不变。

  • 多对多联系转换(两方实体的码作为联系的主码):关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。

2.关系模式规范化

  由E-R图转换的来的初始关系模式并不能完全符合要求,还会有数据冗余。更新异常存在,需要进一步规范化处理,具体步骤如下:

  (1)根据语义确定各关系模式的数据依赖;

  (2)根据数据以来确定关系模式的范式;

  (3)如果关系模式不符合要求,要根据关系模式的分解算法对其进行分解,达到3NF、BCNF或4NF;

  (4)关系模式的评价及修正。根据规范化理论,对关系模式分解之后,就可以在理论上消除冗余和更新异常。

3.应用程序设计

  应用程序设计有两种方法:结构化设计方法和面向对象设计方法。

  结构化分析将数据和处理座位分析对象,数据的分析结果表示了现实世界中实体的属性及其之间的相互关系,而处理的分析结果则展示了系统对数据的加工和转换,主要工具是DFD+数据字典,结构化分析实施步骤:

  (1)确定系统边界,画出系统环境图;

  (2)自顶向下,画出各层数据流图;

  (3)定义数据字典;

  (4)定义加工说明;

  (5)将图、字典以及加工组成分析模型。

  面向对象开发方法通常采用UML,将问题和问题的解决方案组织为离散对象的集合,数据结构和行为都包含在对象的表示中。面向对象的特性包括表示、抽象、分类、封装、继承、多态和持久性。

10.5 数据库的物理设计

  数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。在数据库的物理结构中,数据的基本单位是记录,纪录是以文件的形式存储的,一条存储记录就对应着关系模式中的一条逻辑记录,在文件中还要存储记录的结构,不同的DBMS对应的物理文件存取方式支持也是不同的。
在这里插入图片描述

  一般的,物理设计的主要工作步骤包括确定数据分布、存储结构和访问方式

  为提高数据的访问速度,通常会采用索引技术,在物理设计阶段,要根据数据处理和修改要求,确定数据库文件的索引字段和索引类型。

  数据的访问方式是由其存储结构所决定的,数据库物理结构主要由存储记录格式、记录在物理设备上的安排及访问路径等构成。

1.存储记录结构包括记录的组成、数据项的类型、长度和数据项间的联系,以及逻辑记录到存储记录的映射。在设计记录的存储结构时,并不改变数据库的逻辑结构,但可以在物理上对记录进行分割。

2.存储记录的布局就是确定数据的存放位置。聚簇功能可以大大提高按聚簇码进行查询的效率,聚簇功能不但可用于单个关系,也适用于多个关系。比如职工表和部门表联合查询时,可以将职工和部门元组在物理上聚簇在一起,提高连接速度又节省存储空间,但当表有增删改操作时,重建聚簇的代价也大。

  聚簇索引建立条件:

  (1)聚簇码的值相对稳定,没有或很少修改;

  (2)表主要用于查询,并且通过聚簇码进行访问或连接是该表的主要应用;

  (3)对应每个聚簇码值的平均元组数既不太多,也不太少。

3.存取方法是位存储在物理设备上的数据提供存储和检索的能力。存取方法包括存储结构和检索机制两部分,存储结构先定了可能访问的路径和存储记录,检索机制定义每个应用的访问路径。

  在数据库中建立存取路径最普遍的方法是建立索引,确定索引的一般顺序:

  (1)首先可确定关系的存储结构,即记录的存放是无序的,还是按某属性或某属性组聚簇存放;

  (2)确定不移建立索引的属性或表,对于太小的表、经常更新的属性或表、属性值很少的表、过长的属性、一些特殊数据类型的属性(大文本、多媒体数据)和不出现或很少出现在查询条件中的属性不宜建立索引。

  (3)确定宜建立索引的属性,例如关系的主码或外部码、以查询为主或只读表、范围查询、聚集函数(Min,Max,Avg,Sum,Count)或需要排序输出的属性可以考虑建立索引。

  索引的最大优点是减少检索的CPU服务时间和I/O服务时间,改善检索效率。

10.6 数据库系统的实施阶段

  数据库系统的实施阶段是根据设计,由开发人员编写代码程序来完成的,包括数据库的操作程序和应用程序
在这里插入图片描述

  根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,数据加载,进行试运行和评价的过程,叫做数据库的实施或实现。

  定义数据库结构时,应包含:

1.数据库模式与子模式,以及数据库空间等的描述;

2.数据库完整性描述,所谓数据的完整性就是指数据的有效性、正确性和一致性

3.数据库安全性描述,数据安全性设计同数据完整性设计一样,也应在数据库设计的各个阶段加以考虑。系统对用户数据操纵两方面控制:一是给合法用户授权,目前主要有身份验证和口令识别;二是给合法用户不同的存取权限。

4.数据库物理存储参数描述,一般包括块大小、页面大小(字节数或块数)、数据库的页面数、缓冲区个数、缓冲区大小和用户数等。

10.7 数据库运行维护与管理

10.7.1.数据库运行维护

1.数据库系统监控对象

  数据库系统监控对象分为性能监控、故障监控、安全监控

  性能监控是掌握系统运行性能的手段,性能监控应当从资源占用率、事务响应时间、事务量、死锁、用户量等方面实现。

  故障监控是保障数据库系统正常运行的手段,从数据库系统故障的类型入手,监控事务故障。系统故障和机制故障,出现需要管理员干预的故障时及时恢复。

  安全监控是对破坏数据库安全事件的监控,包括入侵监控。用户访问监控。病毒监控等。

2.数据库的监控方式

  数据库系统的监控方式分为系统监控和应用程序监控。系统监控是通过DBMS提供的监控功能,应用程序监控需要管理人员根据具体情况编制应用程序进行系统监控,是对DBMS监控功能的补充,系统日志是监控中的主要依据。

3.数据库重组和重构

  数据库运行一段时间后,由于记录的增删改,导致物理存储碎片记录链过多,影响数据库存取效率,这是需要对数据库进行重组和部分重组,数据库重组是指再不改变数据库逻辑和物理结构的情况下,取出数据库存出文件中的废弃空间以及碎片空间中的指针链,使数据库记录在物理上紧连。

  数据库重构是对数据库结构做修改,包括表结构的修改和视图的修改。

  (1)修改属性列明或数据类型

  (2)增加和删除属性

  (3)约束的修改

  (4)表的分解与合并

  视图机制优点:实现数据的逻辑独立性,并且可以实现数据的安全性。采用视图机制可将不允许应用程序访问的数据屏蔽在视图之外。但是在数据库重构过程中引入或修改视图,可能会影像数据的安全性,所以必须对视图进行评价和验证,保证不能因为数据库的重构而引起数据的泄密。

4.数据库系统的审计可以产生审计跟踪信息,包括哪些数据库对象受到了影响,谁在什么时候执行了这些操作,审计师被动的,它只能在跟中对数据库的修改而不能防止,但作为一个安全性手段,起到对非法入侵的威慑作用,可以据此追究非法入侵者的法律责任。

  审计功能的开启会影响到系统的性能,特别是忙碌的系统,会导致性能下降,而且审计跟踪信息会被保存下来,引起存储空间的问题。解决这一问题的方法是通过对DBMS范围内的不同级别进行审计操作,例如,在数据库级别、数据库对象界别和在用户级别进行审计,根据不同级别有选择的进行审计,可以使对存储和性能的负面影响降到最小。

10.7.2 数据库系统的管理(★★★

1.数据完整性维护和管理

  数据库完整性是通过DBMS系统提供的完整性约束机制和应用程序来实现,以保证运行过程中数据的正确性。在系统运行过程中对数据完整性的维护和管理采用两种方式:

  (1)对于DBMS管理的约束,通过修改数据库的定义,如增加或删除实体完整性约束、参照完整性约束、检查约束来实现。

  (2)对于应用程序实现的复杂的完整性约束,通过分析和修改应用程序,通常是采用触发器程序来实现。

2.数据库的存储管理

  数据库中的数据以文件的形式存储在物理存储设备上的,通常是磁盘系统,应用程序通过DBMS完成I/O操作来访问数据,I/O操作的效率直接影响到系统的运行效率,提高系统访问效率的有效手段就是提高I/O操作的效率。

  有效提高系统性能,通过以下方法进行存储管理:

  (1)索引文件和数据文件分开存储,事务日志文件存储在高速设备上;

  (2)适时修改数据文件和索引文件的页面大小;

  (3)定期对数据进行排序;

  (4)增加必要的索引项。

  除进行数据库的存储管理之外,也可以通过增加计算机内存、引入高速存储设备等方式来提高系统的访问效率。

3.备份和恢复(★★★

  随着存储设备稳定性的不断提高,硬件故障发生概率越来越小,故障主要集中在由应用程序引起的事务故障和系统故障上,管理员需要做的工作主要是做好备份和日志管理。

  备份计划的制定和实施建议:

  (1)根据数据变更情况,设定合理的备份周期和备份时间,最好是在业务量最小的时段进行备份;

  (2)事务日志文件保存在最稳定的存储设备上;

  (3)定期在事务日志文件中加入检查点。

  检查点记录了数据库的正确状态点,在数据库恢复过程中,就可以反向扫描日志文件,找到第一个检查点,执行U你都和Redo操作,减少恢复的时间开销。

4.并发控制和死锁管理(★★★

  一般多用户数据库管理系统都提供了并发控制机制来实现事务的并发调度并进行死锁管理,实际运行中的数据库系统,死锁的产生往往是因为事务程序的错误。

5.数据安全性管理

  数据库安全管理几个实现方面:

  (1)建立网络级安全,主要是防火墙的设置;

  (2)操作系统级安全,进行登录用户的管理;

  (3)DBMS级安全,对访问数据库的用户进行密码验证;

  (4)角色和用户的授权管理;

  (5)建立视图和存储过程加强安全性;

  (6)使用审计功能,为追究非法入侵者法律责任提供证据,发现安全漏洞。

10.7.3.性能调整(★★★

1.SQL语句的编码检验

  (1)尽可能减少多表查询或建立物化视图;

  (2)以不相关查询替代相关子查询;

  (3)只检索需要的列;

  (4)用带IN的条件字句等价替换OR字句;

  (5)经常提交commit,以尽早释放锁。

2.表设计的评价

  关系模式的设计应当符合3NF或BCNF,但实际生产中需要根据实际情况对标进行调整,调整原则如下:

  (1)如果频繁的对两个相关表进行连接操作,则考虑将其合并;

  (2)如果频繁的访问表中的某一部分字段,则考虑分解表,将该部分单独作为一个表;

  (3)对于很少更新的表,引入物化视图。(普通视图是虚拟表不存放数据,物化视图是特殊的物理表)

3.索引维护和改进

  索引调整原则:

  (1)如果查询是瓶颈,则在关系上建立适当的索引;通常,在作为查询条件的属性上建立索引可以提高查询效率。

  (2)如果更新是瓶颈,因每次更新都会重建表上的索引,引起效率的降低,则考虑删除某些索引。

  (3)选择适当的索引类型。如果经常使用范围查询,则B树索引比散列索引更有效。

  (4)将有利于大多数据查询和更新的索引设为聚簇索引。

说明:
1.疏忽、遗漏、错误之处,欢迎留言批评指正。
2.第10章总结完毕,后续会继续完善补充本章的历年真题,转载请注明出处,整理不易,谢谢!

猜你喜欢

转载自blog.csdn.net/u010257584/article/details/109805442