数据库设计的过程:需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;数据库物理设计阶段;数据库实施阶段;数据库运行和维护阶段。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
需求分析的任务。通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户各种需求;在此基础上确定新系统的功能,必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。信息要求,用户需要从数据库获得信息的内容与性质;由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
确定用户最终需求的难点:用户缺少计算机知识,需求往往不断变化;设计人员缺少用户的专业知识,不易理解用户的真正需求;新的硬件、软件技术的出现会使用户需求发生变化。
需求分析:调查组织机构总体情况,熟悉业务活动,明确用户需求,确定系统边界。
数据字典是各类数据描述的集合;是进行详细的数据收集和数据分析所获得的主要结果;在数据库设计中占有很重要的地位。数据字典的内容:数据项;数据结构;数据流;数据存储;处理过程。
数据项是不可再分的数据单位。数据结构反映了数据之间的组合关系,一个数据结构可由若干个数据项组成,也可由若干个数据结构组成,或混合组成。数据流是数据结构在系统内传输的路径。数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。处理过程的具体处理逻辑一般用判定表或判定数来描述,数据字典中只需要描述处理过程的说明性信息。
概念结构设计,将需求分析得到的用户应用需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。概念结构设计是整个数据库设计的关键。描述概念模型的工具:E-R图。
设计概念结构的四类方法:自顶向下,首先定义全局概念结构的框架,然后逐步细化;自底向上,首先定义各局部应用的概念结构,然后集成起来,得到全局概念结构;逐步扩张,首先定义最重要的核心概念机构,然后向外扩充,以滚雪球方式逐步生成其他概念结构,直至总体概念结构;混合策略,将自顶向下和自底向上组合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
自底向上设计概念结构的步骤:第一步,抽象数据并设计局部视图;第二步,集成局部视图,得到全局概念结构。
数据抽象。三种常用抽象:分类,抽象了对象值和型之间的“is member of”的语义;聚集,抽象了对象内部类型和成分之间“is part of”的语义;概括,抽象了类型之间的“is subset of”的语义。
设计分E-R图的步骤:选择局部应用;逐一设计分E-R图。设计分E-R图时,首先需要根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中每一部分对应一个局部应用,然后以这一层次的数据流图为出发点,设计分E-R图。
逐一设计分E-R图。标定局部应用中的实体、属性、码,实体间的联系。实体:现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。属性:对象类型的组成成分可以抽象为实体的属性。实体与属性是相对而言的。一般原则:属性不能再具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成;属性不能与其他实体具有联系,联系只发生在实体之间。
视图集成的两种方式:一次集成,一次集成多个分E-R图,通常用于局部视图比较简单时;逐步积累式,首先集成两个局部视图,以后每次讲一个新的局部视图集成进来。
集成E-R图的步骤。合并,消除冲突;修改与重构,消除不必要的冗余。冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难。消除不必要的冗余后的初步E-R图称为基本E-R图。
消除冗余的方法。分析方法,以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。如果是为了提高效率,人为的保留了一些冗余数据,则应把数据字典中数据关联的说明作为完整性约束条件。函数依赖的概念提供了消除冗余联系的形式化工具。
为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。步骤:将概念结构转化为一般的关系、网状、层次模型;将转化来的的关系、网状、层次模型向特定DBMS支持下的数据模型转换;对数据模型进行优化。
E-R图向关系模型转换。将实体、实体的属性和实体之间的联系转化为关系模式。一个实体型转换为一个关系模式,关系的属性:实体型的属性;关系的码:实体型的码。
一个m:n联系转换为一个关系模式,关系的属性:与该联系相连的各实体的码以及联系本身的属性;关系的码:各实体码的组合。
一个1:n的联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。转换为一个独立的关系模式:关系的属性,与该联系相连的各实体的码以及联系本身的属性;关系的码,n端实体的码。与n端对应的关系模式合并:关系的属性,在n端关系中加入1端关系的码和联系本身的属性;关系的码:不变。第二种方法可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。转换为一个独立的关系模式:关系的属性,与该联系相连的各实体的码以及联系本身的属性;关系的候选码,每个实体的码均是该关系的候选码。与某一端对应的关系模式合并:合并后关系的属性,加入对应关系的码和联系本身的属性;合并后关系的码,不变。
三个或三个以上实体间的一个多元联系转换为一个关系模式。关系的属性,与该多元联系相连的各实体的码以及联系本身的属性;关系的码,各实体码的组合。
同一实体集的实体间的联系,即自联系,也可按上述1:1,1:n,m:n三种情况分别处理。
具有相同码的关系模式可合并。目的,减少系统中的关系个数。合并方法,将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性,并适当调整属性的次序。
优化数据模型的方法:确定数据依赖;对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系;按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式;按照需求分析得到的各种应用对数据处理的要去,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解;按照需求分析阶段得到的各种应用对数据处理的要求,对关系模式进行必要的分解或合并,以提高数据操作的效率和存储空间的利用率。
设计用户子模式时更应该注重考虑用户的习惯与方便。包括三个方面:使用更符合用户习惯的别名;针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求;简化用户对系统的使用。
为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。
数据库物理设计的步骤:确定数据库的物理结构;对物理结构进行评价,评价的重点是时间和空间效率;如果评价结果满足设计要求则可进入到物理实施阶段,否则,重新设计或修改物理结构。
选择物理数据库设计所需参数。数据库查询事物:查询的关系;查询条件所涉及的属性;连接条件所涉及的属性;查询的投影属性。数据更新事务:被更新的关系;每个关系上的更新操作条件所涉及的属性;修改操作要改变的属性值。每个事务在各关系上运行的频率和性能要求。
关系模式存取方法选择。数据库系统是多用户共享的系统,对同一个关系建立多条存取路径才能满足多用户的多种应用要求。DBMS常用存取方法:索引方法,主要是针对B+数索引方法;聚簇方法;HASH方法。
确定数据库的存储结构。确定数据库物理结构的内容:确定数据的存放位置和存储结构;确定系统配置。
确定数据的存放位置。影响数据存放位置和存储结构的因素:硬件环境;应许需求。基本原则:根据应用情况将 易变部分与稳定部分;存取频率较高部分与存取频率较低部分 分开存放,以提高系统性能。
确定系统配置。DBMS产品一般都提供了一些存储分配参数:同时使用数据库的用户数;同时打卡的数据库对象数;使用的缓冲区长度、个数;时间片大小;数据库大小;装填因子;锁的数目;等等。系统为这些变量赋予了合理的缺省值,但不一定适合每一种应用环境,需要根据应用环境确定参数值。物理设计时对系统配置变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步调整。
评价物理结构。评价内容,对数据库物理设计过程产生的多种方案进行细致评价,从中选择较优的方案作为数据库的物理结构。评价方法:定量估算各种方案,存储空间,存取时间,维护代价;对估算结果进行权衡、比较,选择出一个较优的合理的物理结构;如果结构不符合用户需求,需要修改涉及。
定义数据库结构。确定了数据库的逻辑结构与物理结构之后,可以用所选用的DBMS提供的数据定义语言DDL,来严格描述数据库结构。
数据装载。数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。数据装载方法:人工方法,计算机辅助数据入库。
人工方法,适用于小型系统。步骤:筛选数据;转换数据格式;输入数据;校验数据。计算机辅助数据入库,适用于中大型系统。步骤:筛选数据;输入数据;校验数据;转换数据;综合数据。
编制与调试应用程序。数据库应用程序的设计应该与数据设计并行进行。
数据库试运行。数据库试运行称为联合调试,主要工作包括:功能测试,实际运行应用程序,执行对数据库的各种操作,测试各种功能;性能测试,测量系统的性能指标,分析是否符合设计目标。
数据库性能指标的测量。实际测量系统的各种性能指标,如果结果不符合设计目标,需要返回物理设计阶段,调整物理结构,修改参数;有时甚至需要返回逻辑设计阶段,调整逻辑结构。
数据库的转储和恢复。在数据库试运行阶段,系统还不稳定,硬、软件故障随时可能发生;操作人员对新系统不熟悉,误操作不可避免;必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏。
数据库运行与维护。数据库试运行结果符合设计目标后,就可以真正投入运行了。对数据库设计进行评价、调整、修改等维护工作是一个长期任务,也是设计工作的继续和提高:应用环境在不断变化;数据库运行过程中物理存储会不断变化。
数据库运行阶段,对数据库经常性的维护工作主要由DBA完成,包括:数据的转储和恢复;数据库的完整性、安全性控制;数据库性能的监督、分析和改进;数据库的重组织和重构造。数据库运行一段时间后,由于记录的不断增、删、改,会使数据库物理存储变化,降低存储空间利用率和存取效率,需要重组织;数据库应用环境发生变化,会导致实体及实体间的联系发生变化,使原有的数据库设计不能很好地满足新的需求,通过 增加新的应用或新的实体,取消某些已有应用,改变某些已有应用 来进行数据库的重构造。