前言:数据库的设计是指基于现有的数据库管理系统,针对具体应用构建适合的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能有效地存储和管理数据,满足各类用户的应用需求。本章将介绍数据库设计的主要内容、特点,设计方法和全过程,从需求分析﹑概念结构设计、逻辑结构设计、物理结构设计到实施、运行与维护。
内容:数据库设计应该与应用系统设计相结合,结构设计和行为设计相结合
现代数据库的设计强调结构设计和行为设计相结合,这是一个“反复探寻,逐步求精”的过程。如下图所示,结构设计和行为设计是分开而又并行进行的。
重视基础数据建设
三分技术,七分管理,十二分基础数据
六个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护
需求分析和概念设计独立于任何数据库管理系统(DBMS)
逻辑设计和物理设计与选用的DBMS密切相关
六个阶段:
1、需求分析阶段
2、概念结构设计阶段
3、逻辑结构设计阶段
4、数据库物理设计阶段
5、数据库实施阶段
6、数据库运行和维护阶段
设计一个完善的数据库应用系统往往是上述6个阶段的不断反复
把数据库设计和对数据库中数据处理的设计紧密结合起来
将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计
概念设计阶段: 形成独立于机器特点,独立于各个数据库管理系统产品的概念模式(E-R图)
逻辑设计阶段:
物理设计阶段:根据数据库管理系统特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式
调查的重点是“数据”和“处理”,获得用户对数据库的要求:
(1)信息要求
(2)处理要求
(3)安全性与完整性要求
需求分析首先就是要调查清楚用户的实际需求,目的是了解企业的业务情况、信息流程、经营方式、处理要求以及组织机构等,为当前系统建立模型。
需求分析阶段的活动主要包括以下四个步骤:
(1)分析用户活动,产生用户活动图
这一步主要了解用户当前的业务活动和职能,搞清其处理流程,即绘制出业务流程图。
(2)确定系统范围,产生系统范围图
这一步是确定系统的边界。在和用户经过充分讨论的基础上,确定计算机所能进行数据处理的范围,确定哪些工作由人工完成,哪些工作由计算机系统完成,即确定人机界面。
(3)分析用户活动所涉及的数据,产生数据流图
深入分析用户的业务处理,以数据流图形式表示出数据的流向和对数据所进行的加工。具有直观、易于被用户和软件人员双方理解的特点,它是一种表达系统功能的描述方式。
(4)分析系统数据,产生数据字典
仅仅有数据流图并不能构成需求说明书,因为只表示出系统由哪几部分组成和各部分之间的关系,并没有说明各个成分的含义。只有对每个成分都给出确切定义后,才能较完整地描述系统。
方法:需求分析的方法有多种,主要分为自顶向下和自底向上两种。其中自顶向下的结构化分析方法(SA-Structured Analysis)简单实用,它从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统,并且把每一层用数据流图和数据字典描述。
数据流图(DFD -Data Flow Diagram)是描述系统的重要工具,它从数据传递和处理角度以图形的方式描绘数据流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此它是分析员与用户之间极好的通信工具。
符号:
数据源点或终点:指本系统之外的人或单位,他们与本系统有信息传递关系。
数据处理:数据处理对进入的数据流进行特定的加工的过程,处理后将产生新的数据流
数据流:表示流动着的数据,它可以是一项数据,也可以是一组数据。
数据存储文件:指通过数据文件、文件夹或账本等存储数据。
为了很好地表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。
顶层图:将整个系统作为一个数据加工项,着重描述系统与外部实体的联系。明确系统的边界。
第0层图:对顶层图中的数据加工进行分解,形成系统较详细的数据流程图
第1层图:对顶层图中的数据加工进一步分解,形成系统更详细的数据流程图。
以教学管理信息系统为例,如图所示,顶层数据流图分解为第0层数据流图,再进一步细化为第1层数据流图,直到把系统的工作过程表达清楚为止。在处理功能逐步分解的同时,数据也逐级分解,形成若干层次的数据流图。
注意:和关系数据库管理系统中数据字典的区别和联系
数据字典(DD-Data Dictionary)用于定义数据流图中出现的所有数据元素和处理,即给出确切的内涵解释。数据流图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型作进一步完整描述。
数据字典的内容:数据项、数据流、数据存储、处理过程
举例:
举例:
举例:
举例:
首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构
首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构
将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
E-R模型是设计数据库概念结构的最著名、最常用方法。因此,采用自底向上方法分步设计产生每一局部的E-R模型,综合各局部E-R模型,逐层向上回到顶部,最终产生全局E-R模型。
按照下图所示的概念结构设计的步骤,概念结构的设计可分为两步:
(1)抽象数据,并设计局部E-R模型,即局部视图;
(2)集成各局部E-R模型,形成全局E-R模型,即视图集成。
数据抽象主要有三种基本方法: 分类、聚集、概括
两条准则:
例如,某公司的职员是一个实体,职员号、姓名、年龄、身高、职务等级是职员的属性,职务等级如果没有与工资、福利挂钩,换句话说,不需要进一步描述该特性,则根据第一条,可以作为“职员”实体的属性。但是如果不同的等级的职务有不同的工资待遇、福利等,那么职务等级就需要作为一个实体看待了,如下图所示。
在高校的实际应用中,一个学生可以选修多门课程,一门课程可以被多个学生选修;一个教师可以讲授多门课程,一门课程也可以被多个教师讲授;一个系可以有多个学生,一个学生只能属于一个系;一个系可以有多个教师,一个教师只能属于一个系;一个系可以开设多门课程,一门课程只能由一个系开设。因此,各子系统的局部E-R模型见下图,它们分别由2名数据库设计人员完成。
集成各子系统的局部E-R模型形成全局E-R模型,即视图集成,有四种方法:
首先将模式成对地进行集成,然后再将结果模式成对地进一步集成,不断重复该过程直至得到最终的全局模式。
根据模式的相似性把它们划分为不同的组,对每个组单独地进行集成。然后对中间结果进行分组并集成,重复该过程直至集成结束。
合理消除各局部E-R模型之间的冲突是合并的关键。
模式间可能会发生如下的3类冲突:
以“教学管理信息系统”为例,说明合并局部E-R模型的主要过程。
第1步:确定并解决各局部E-R模型之间的冲突:
① 2个局部E-R模型之间存在命名冲突。学生选课局部E-R模型中的实体“系”和教师授课局部E-R模型中的实体“院系”异名同义,合并后统一改为“系”,因此属性“系别”和“院系名”统一为“系别”,“系主任”和“院系负责人”统一为“系主任”。
② 存在结构冲突。2个局部E-R模型中的实体“系”和“课程”属性组成不同,将取原来2个实体的属性并集组成合并后实体的属性。
第2步:视图集成,集成后的教学管理信息系统的E-R模型如下图所示。
优化就是消除不必要的冗余,生成基本E-R模型。优化的目的就是使E-R模型满足下述3个条件:
其中,要使实体个数尽可能少,可以合并相关实体,一般是把具有相同主码的实体进行合并;另外,还可考虑将1:1联系的两个实体合并成一个实体,同时消除冗余属性和冗余联系。冗余属性是指可由基本数据导出的属性,冗余联系是指可由其他联系导出的联系。
上图所示是将初步E-R模型优化为基本E-R模型。
①“课程”实体中的属性“教师编号”可由“讲授”这一联系导出,所以,“教师编号”是冗余属性;
②“教师”实体中的“所属院系”可由 “工作”这一联系导出,所以,“所属院系”是冗余属性;
③以此类推,“学生”实体的中“所属院系”也是冗余属性;而“系”和“课程”之间的“开设”这一联系可由“系”和“教师”之间“工作”联系与“教师”和“课程”之间的“讲授”联系推导出来,所以,“开设”是冗余联系。
①.将概念结构转换为特定DBMS支持下的数据模型;
②.对数据模型进行优化。
E-R图向关系模型的转换要解决的问题
转换内容:将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转换为关系模式。
转换原则:
(1)一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。
(2)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并(常用)。
(3)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并(常用)。
(4)一个m:n联系必须转换为一个关系模式。
(5)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,而此关系模式的主码包含各实体的码。
以上图中的教学管理信息系统的基本E-R模型为例,具体分析
① 4个实体“系”、“教师”、“学生”、“课程”分别转换成4个关系模式,如下:
系(系名,系主任,地址)
教师(教师编号,教师姓名,年龄,职称)
学生(学生编号,学生姓名,年龄,性别)
课程(课程号,课程名)
② 1:n联系“工作”,与n端所对应的关系模式“教师”合并,则需要在该关系模式“教师”的属性中加入1端实体“系”的码和联系本身的属性,结果如下:
教师(教师编号,教师姓名,年龄,职称, 系 名 ∼ ∼ ∼ \underset{\sim\sim\sim}{系名} ∼∼∼系名);
其中“系名”是“教师”的外码,参考“系”的主码“系名”。
1:n联系“拥有”,与n端所对应的关系模式“学生”合并,则需要在该关系模式“学生”的属性中加入1端实体“系”的码和联系本身的属性,结果如下:
学生(学生编号,学生姓名,年龄,性别, 系 名 ∼ ∼ ∼ \underset{\sim\sim\sim}{系名} ∼∼∼系名);
其中“系名”是“学生”的外码,参考“系”的主码“系名”。
③ m:n联系“讲授”、“选修”,必须转换为一个独立的关系模式。转换后的结果为:
讲授( 教 师 编 号 ‾ , 课 程 号 ‾ ‾ \underline{\underline{教师编号},\underline{课程号}} 教师编号,课程号,课时数)
选修( 学 生 编 号 ‾ , 课 程 号 ‾ ‾ \underline{\underline{学生编号},\underline{课程号}} 学生编号,课程号,成绩)
其中“讲授”关系中(教师编号,课程号)是主码,“教师编号”和“课程号”分别是外码,相应地参考了关系模式“教师”的主码“教师编号”以及关系模式“课程”的主码“课程号”。
考察关系模式的函数依赖关系,确定范式等级。找出所有“数据字典”中得到的数据之间的依赖关系,对各模式之间的数据依赖进行极小化处理,消除冗余的联系。按照数据依赖理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖等,确定各关系模式属于第几范式。
确定范式级别后,根据应用需求,判断它们对于这样的应用环境是否合适,确定对于这些模式是否进行合并或分解。
(1)合并
(2)分解
① 水平分解
② 垂直分解
将概念模型转换为逻辑模型后,还应该根据局部应用需求,结合具体DBMS的特点,设计用户的外模式。外模式对应关系数据库管理系统的视图这一概念,可以利用视图设计更符合局部用户需要的用户外模式。
包括:
(1)使用更符合用户习惯的别名
在合并各局部E-R模型时,需要消除命名冲突,以使数据库中的同一个关系和属性具有唯一的名字,但有可能不符合某些用户的习惯。这时,可以利用视图对某些属性重命名,这样方便用户使用。
(2)对不同级别的用户定义不同的视图,以满足系统对安全性的要求
如关系模式教师(教师编号,教师姓名,年龄,籍贯,专业,所属院系,联系电话,职称,基本工资,绩效工资),在这个关系上建立两个视图:
教师1(教师编号,教师姓名,年龄,籍贯,专业,所属院系,联系电话)
教师2(教师编号,教师姓名,年龄,籍贯,联系电话,职称,基本工资,绩效工资)
教师1视图中只包含了一般职工可以查看的基本信息,而教师2视图中包含了允许领导查看的信息。这样就可以防止用户非法访问不允许他们查看的数据,从一定程度上保证了数据的安全。
(3)简化用户对系统的使用
如果在某些局部应用中经常要使用某些复杂的查询,为了方便用户,可以将这些复杂的查询定义成一个视图,这样每次用户只需查询定义好的视图,而不用再编写复杂的查询语句。
关系数据库物理设计的内容
选择索引方法的基本原则是:
(1)如果某个或某些属性经常在查询条件中出现,则考虑在这个或者这些属性上建立索引。
(2)如果某个或某些属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个或这些属性上建立索引。
(3)如果某个或某些属性经常在连接操作的连接条件中出现,则考虑在这个或这些属性上建立索引。
(4)如果某个属性经常作为分组的依据列,则考虑在这个属性上建立索引。
(5)对经常执行插入、删除、修改操作或者记录数较少的关系,应尽量避免建立索引。
当然,关系上定义的索引数也要适当,并不是越多越好,因为系统为维护索引要付出代价,查找索引也要付出代价。
候选聚簇的原则:
(1)将一个关系按某个或某组属性的值聚簇。对数据库的查询经常按照属性值相等性,或进行属性值相互比较,为此可以将记录按照某个或某组属性的值来聚簇存放,并建立聚簇索引。例如:如果经常需要按院系属性来检索学生记录,那么预先将同一个院系的学生的记录,在物理介质上尽可能存放在一起,这样一个院系的学生记录所存放的页面数最少,因而所需的I/O数大大减少,提高了存取的效率。
(2)对于不同关系,经常在一起进行连接操作的可以建立聚簇。关系数据库中经常通过一个关系与另一个关系的关联属性找到另一个关系的需求记录信息,此时如果把有关的两个关系物理上靠近存放,如存放在同一个柱面上,这可以使得在完成相关检索时,大大提高了效率。
(3)如果关系的主要应用是通过聚簇码进行访问或连接,而其他属性访问关系的操作很少时,可以使用聚簇。尤其当SQL语句中包含有与聚簇有关的ORDER BY,GROUP BY,UNION,DISTINCT等子句或短语时,使用聚簇特别有利,可以省去对结果集的排序操作。反之,当关系较少利用聚簇码时,最好不要使用聚簇。
确定数据存放位置和存储结构的因素,这三个方面常常是相互矛盾的
例,消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加, 必须进行权衡,选择一个折中方案
为了提高系统性能,应根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。有多个磁盘的计算机,可以采用下面几种存取位置的分配方案:
(1)将表和索引放在不同的磁盘上。这样在查询时,两个磁盘驱动器并行工作,可以提高物理I/O读写效率。
(2)将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。
(3)将日志文件、备份文件与数据库对象放在不同的磁盘上,以改进系统的性能。
(4)对于经常存取时间要求高的对象应放在高速存储器上,对于存取效率小或存取时间要求低的对象,如果数据量很大,可以存放在低速存储设备上。
DBMS产品一般提供了一些系统配置变量和存储分配参数供设计人员和DBA对数据库进行物理优化。在初始情况下,系统都为这些变量赋予了合理的默认值。但是这些默认值不一定适合每种应用环境。在进行数据库的物理设计时,还需要重新对这些变量赋值,以改善系统的性能。
系统配置变量很多。例如,同时使用数据库的用户数、同时打开的数据库对象数、内存分配参数、缓冲区分配参数、存储分配参数等,这些参数值将影响存取时间和存储空间的分配。物理设计时需要根据应用环境确定这些参数值,以使系统性能最佳。在物理设计时对系统配置变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能。
评价物理结构设计的方法完全依赖于具体的DBMS,主要考虑操作开销,即:为使用户获得及时、准确的数据所需要的开销和计算机资源的开销。实际上,往往需要经过反复测试才能优化数据库的物理结构。
数据系统设计的根本目的,是为用户提供一个能够实际运行的系统,并保证该系统的稳定和高效。要做到这点,还有两项工作,就是数据库的实施、运行和维护。
定义:数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构、导入初始数据并进行程序的调试。它相当于软件工程中的代码编写和程序调试的阶段。
主要工作是:建立数据库、加载数据和系统调试。不包括扩充功能
用具体的DBMS提供的数据定义语言(DDL),把数据库的逻辑结构设计和物理结构设计的结果转化为SQL语句,然后经DBMS编译处理和运行后,实际的数据库便建立起来了。目前的很多DBMS系统除了提供传统的命令行方式外,还提供了数据库结构的图形化定义方式,极大地提高了工作的效率。
具体地说,建立数据库结构应包括以下几个方面:
(1)数据库模式与子模式,以及数据库空间的描述;
(2)数据完整性的描述;
(3)数据安全性描述;
(4)数据库物理存储参数的描述。
一般数据库系统中的数据量都很大,而且数据来源往往不同,所以数据的组织方式、结构和格式都与新设计的数据库系统有相当差距。因此,转入数据需要耗费大量的人力、物力,同时又简单乏味且意义重大。为了保证转入数据正确无误,必须高度重视数据的校验工作。
数据库应用程序的设计应该与数据库设计同时进行。因此,在组织数据入库的同时还要调试和应用程序。
当有初始数据装入数据库以后,就可以进入数据库系统的试运行阶段,也称为联合调试。数据库的试运行对于系统设计的性能检测和评价是十分重要的,因为某些DBMS参数的最佳值只有在试运行中才能确定。
由于在数据库设计阶段,设计者对数据库的评价多是在简化了的环境条件下进行的,因此设计结果未必是最佳的。在试运行阶段,除了对应用程序做进一步的测试之外,重点执行对数据库的各种操作,实际测量系统的各种性能,检测是否达到设计要求。如果在数据库试运行时,所产生的实际结果不理想,则应重新修改物理结构,甚至修改逻辑结构。
数据库系统投入正式运行,意味着数据库的设计与开发阶段的基本结束,运行与维护阶段的开始。数据库的运行和维护是个长期的工作,是数据库设计工作的延续和提高。
在数据库运行阶段,完成对数据库的日常维护,数据库系统的工作人员需要掌握DBMS的存储、控制和数据恢复等基本操作,而且要经常性地涉及物理数据库,甚至逻辑数据库的再设计,因此数据库的维护工作仍然需要具有丰富经验的专业技术人员(主要是数据库管理员)来完成。
数据库的运行和维护阶段的主要工作有:
(1)对数据库性能的监测、分析和改善;
(2)数据库的转储和恢复;
(3)维持数据库的安全性和完整性;
(4)数据库的重组和重构。
【单选题】下列对数据库应用系统设计说法中正确的是( )。
A、必须在完成数据库的设计后才能开始对数据处理的设计
B、应用系统用户不必参与设计过程
C、应用程序员可以不必参与数据库的概念结构设计
D、以上都不对
【单选题】DBMS的数据字典中未保存下列( )信息。
A、模式和子模式
B、存储模式
C、文件存取权限
D、数据库所用的文字
【单选题】概念模型独立于( )。
A、E-R模型
B、硬件设备和DBMS
C、操作系统和DBMS
D、DBMS
【单选题】下列选项中,不属于全局E-R模型设计的是( )。
A、确定公共实体类型
B、消除冲突
C、将E-R模型转换为关系模型
D、合并局部E-R模型
【单选题】以下关于E-R图的叙述正确的是( )。
A、E-R图建立在关系数据库的假设上
B、E-R图使用过程和数据的关系清晰,实体间的关系可导出应用过程的表示
C、E-R图可将现实世界中的信息抽象地表示为实体以及实体间的联系
D、E-R图能表示数据生命周期
【单选题】单个用户使用的数据视图的描述称为( )。
A、外模式
B、概念模式
C、内模式
D、存储模式
【单选题】数据库逻辑结构设计的主要任务是( )。
A、建立E-R图和说明书
B、创建数据库说明
C、建立数据流图
D、把数据送入数据库
【单选题】若两个实体之间的联系是1:m,则实现1: m联系的方法是( )。
A、在“m”端实体转换关系中加入“1”端实体转换关系的码
B、在“m”端实体转换关系的码加入到“1”端的关系中
C、在两个实体转换的关系中,分别加入另一个关系的码
D、将两个实体转换成—个关系
【单选题】将一个1对多联系型转换为一个独立模式时,应取( )为关键字。
A、一个实体型的关键属性
B、多端实体型的关键属性
C、两个实体型的关键属性组合
D、联系型的全体属性
【单选题】关系数据库的规范化理论主要解决的问题是( )。
A、如何构造合适的数据逻辑结构
B、如何构造合适的数据物理结构
C、如何构造合适的应用程序界面
D、如何控制不同用户的数据操作权限
【填空题】采用关系模型的逻辑结构设计的任务是将E-R图转换成一组( ) ,并进行( )处理。
【单选题】对数据库的物理设计优劣评价的重点是( )。
A、时空效率
B、动态和静态性能
C、用户界面的友好性
D、成本和效益
【单选题】下面不属于数据库物理设计阶段应考虑的问题是( )。
A、存取方法的选择
B、索引与入口设计
C、与安全性、完整性、一致性有关的问题
D、用户子模式设计
【判断题】需求说明书是系统总体设计方案,是开发单位与用户单位共同协商达成的文档。
【判断题】设计数据库的逻辑结构模式时,只要设计好全局模式,不需要进行各个外模式的设计。
答案:1.C(解析:应用程序员主要针对物理结构实施程序开发,可以不必参与数据库的概念结构设计。) 2.D(解析:这里所说的DBMS的数据字典,它应该包含三级模式、两级映像、数据库安全性、数据库完整性等方面的信息。) 3.B(解析:概念设计不涉及信息在计算机中的表示,所以独立于支持数据库的DBMS,独立于计算机硬件。) 4.C 5.C 6.A 7.B(解析:A是概念设计,C是需求分析,D是数据库实施) 8.A 9.B 10.A 11.关系模型、规范化 12.A 13.D 14.√ 15.×
OK,以上就是本期知识点“数据库设计”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟~
如果有错误❌,欢迎批评指正呀~让我们一起相互进步
如果觉得收获满满,可以点点赞支持一下哟~