第3章关系数据库设计数据库设计的基本步骤数据库应用程序编制及调试数据库的完整性数据库的安全性数据库设计的基本步骤需求分析概念设计与E-R模型逻辑结构设计数据库物理设计数据库设计的特征反复性:数据库设计需要反复推敲和修改才能完成。试探性:数据库设计的结果一般不是惟一的,设计的过程往往是个试探的过程。分步进行:数据库设计常常由不同的人员分阶段进行。这样做,一是由于技术上分工的需要,二是为了分段把关,逐级审查,保证设计的质量和进度。数据库设计的基本过程数据库设计过程中需要注意的问题(1)实现用户所需要的功能(2)制作能重复使用的构件(3)使用开发管理工具(4)指定用户组和权限(5)提供一致的用户界面(6)在应用系统中加入诊断功能需求分析需求分析人员既要对数据库技术有一定的了解,又要对单位的情况比较熟悉,一般由数据库技术人员和本单位的有关工作人员合作进行。需求分析的结果整理成需求说明,需求说明是数据库技术人员和应用单位的工作人员取得共识的基础,必须得到单位的有关管理人员的确认。进行需求分析时,要调查清楚用户的实际要求,与用户达成共识,然后再分析与表达这些需求。调查用户需求的步骤①调查组织机构情况。包括了解该组织的部门组成情况、各部门的职责等,为分析信息流程做准备。②调查各部门的业务活动情况。包括了解各个部门输入和使用什么数据,如何加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么,这是调查的重点。③明确对数据库系统的各项需求。在熟悉了业务活动的基础上,协助用户明确对新系统的各种要求,包括信息要求、处理要求、完全性与完整性要求,这是调查的又一个重点。④确定新系统的边界。对之前调查的结果进行初步分析,确定哪些功能由计算机完成,哪些工作由人工完成。由计算机完成的功能就是新系统应该实现的功能。数据流图数据流程是业务流程及业务中数据联系的形式描述。数据流图是从“数据”和“处理”两方面表达数据处理过程的一种图形化的表示方法。数据字典数据字典是面向数据库设计人员和用户的,它是用DBMS或专用软件实现的一个应用系统。用数据字典管理元数据,不但可以减少设计者的负担,也有利于保持数据的一致性(如避免重复或重名)和提供各种统计数据,因而可以提高数据库设计的质量。数据字典详细描述系统中的全部数据,它是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。数据项数据项是不可再分的数据单位,对数据项的描述通常包括以下内容:数据项名数据项含义说明别名数据类型长度取值范围取值含义与其他数据项的逻辑关系数据项之间的联系数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。数据结构通常由以下几部分组成。数据结构名含义说明组成:{数据项或数据结构}数据流数据流是数据结构在系统内传输的路径。数据流包含以下各项:数据流名说明数据流来源(说明该数据流来自哪个过程)数据流去向(说明该数据流将到哪个过程去)组成:{数据结构}平均流量(单位时间内的传输次数)高峰期流量(高峰时期的数据流量)数据存储数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括以下几项。数据存储名说明编号输入的数据流(说明该数据流的来源)输出的数据流(说明该数据流的去向)组成:{数据结构}数据量存取频度(指单位时间内存取几次、每次存取多少数据等信息)存取方式(包括是批处理还是联机处理,是检索还是更新,是顺序检索还是随机检索等)处理过程处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息,通常包括以下内容。处理过程名说明输入:{数据流}输出:{数据流}处理:{简要说明}(主要说明该处理过程的功能及处理要求)概念设计与E-R模型概念模型不依赖于具体的计算机系统,是纯粹反映信息需求的概念结构。在需求分析的基础上,用概念数据模型,例如E-R数据模型,表示数据及其相互间的联系。概念数据模型是面向现实世界的数据模型,因而也易于为用户所理解。概念设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。概念模型的特性①有丰富的语义表达能力。能表达用户的各种需求,包括描述现实世界中各种事物和事物之间的联系,能满足用户对数据的处理要求。②易于交流和理解。概念模型是DBA、应用系统开发人员和用户之间的主要交流工具。③易于变动。概念模型要能灵活地加以改变,以反映用户需求和环境的变化。④易于向各种数据模型转换,易于从概念模型导出与DBMS有关的逻辑模型。设计概念模型的策略①自顶向下。首先定义全局概念结构的框架,再作逐步细化。②自底向上。首先定义每一局部应用的概念结构,然后按一定的规则把它们集成,从而得到全局概念结构。这也是最常用的一种策略。③由里向外。首先定义最重要的那些核心结构,再逐渐向外扩充。④混合策略。把自顶向下和自底向上结合起来的方法。概念模型的表示方法在概念模型的表示方法中,最常用的是P.P.S.Chen于1976年提出的实体-联系方法(Entity-RelationshipApproach)。该方法是数据库逻辑设计的一种简明扼要的方法,也称为E-R模型。E-R图提供了表示实体型、属性和联系的方法。采用E-R方法的概念模型设计设计局部概念模型设计全局概念模型概念模型的优化与评审设计局部概念模型①确定局部概念模型的范围。以用户为起点,在需求分析结果的基础上划分局部结构范围。②定义实体。确定每个实体类型的属性和键。注意,实体、属性和联系事实上并没有标准可以从形式上截然区分。③定义联系。防止并且消除冗余的联系,对联系命名和确定键。④确定属性。确定属性的原则是:属性是不可再分解的语义单位,实体与属性间应是1:n的关联,隶属不同实体型的属性间无直接关联,不宜隶属任一实体型的属性应作为联系的属性。⑤逐一画出所有的局部E-R图,附以相应的说明文件。设计全局概念模型确定公共实体类型。检查存在于多个局部E-R图的公共实体类型。合并局部E-R图。把局部E-R图逐一合并到全局E-R图中,对每个局部E-R图,首先合并公共实体类型,其次合并那些有联系的局部结构,最后加入其他独立的局部结构。消除不一致因素。局部E-R图间存在的不一致又称冲突。通常有以下几种冲突。命名冲突属性冲突结构冲突优化全局E-R图。经合并得到的全局E-R图需要进行优化。画出全局E-R图,附以相应的说明文件。概念模型的优化与评审优化目标实体类型个数尽可能少;实体类型所含属性尽可能少;实体类型间联系无冗余。评审步骤用户评审开发人员评审逻辑结构设计在逻辑设计阶段,将概念设计阶段所得到的以概念数据模型表示、与DBMS无关的数据模式,转换成以DBMS的逻辑数据模型表示的逻辑(概念)模式,并对其进行优化。数据库的逻辑设计也不简单是个数据模型的转换问题,而是进一步深入解决数据模式设计中的一些技术问题,例如数据模式的规范化、满足DBMS的各种限制等。数据库逻辑设计的结果以数据定义语言(DDL)表示。除数据库的逻辑模式外,还得为各类用户或应用设计其各自的逻辑模式,即外模式。E-R模型向关系数据模型的转换一个实体类型转换成一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。一个1:1联系可以转换为一个独立的关系模式,也可以与联系的任意一端实体所对应的关系模式合并。一个1:n联系可以转换为一个独立的关系模式,也可以与联系的任意n端实体所对应的关系模式合并。一个m:n联系转换为一个关系模式。与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性,而关系的键为各实体键的组合。三个或三个以上的实体间的多元联系转换为一个关系模式。具有相同键的关系模式可以合并。关系数据库的逻辑结构设计过程①从E-R图导出初始关系模式。将E-R图按规则转换成关系模式。②规范化处理。消除异常,改善完善性、一致性和存储效率,一般达到第三范式要求即可。③模式评价。模式评价的目的是检查数据库模式是否满足用户的要求,包括功能评价和性能评价。④优化模式。优化包括对于设计过程中疏漏的要新增关系或属性,性能不好的要采用合并、分解或选用另外结构等工作。⑤形成逻辑结构设计说明书。逻辑结构设计说明书应用设计指南:包括访问方式、查询路径、处理要求、约束条件等。物理设计指南:包括数据访问量、传输量、存储量、递增量等。模式及子模式的集合:该部分可用DBMS语言描述,也可列表描述。外模式的设计外模式是用户所看到的数据模式,各类用户有各自的外模式。外模式不简单地是逻辑模式的子集,虽然它来自逻辑模式,但在结构和形式上可以不同于逻辑模式。外模式的主要作用如下:提供一定的逻辑数据独立性;更好地适应不同用户对数据的需求有利于数据保密数据库物理设计①确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。②对物理结构进行评价,评价的重点是时间和空间效率。关系模式的存取方法存取方法是快速存取数据库中数据的技术。数据库管理系统一般都提供许多种存取方法。常用的存取方法有三类:索引方法聚簇方法分区设计方法。不适宜建立索引的条件不出现或很少出现在查询条件中的属性。属性值很少的属性。属性值分布严重不均匀的属性。经常更新的属性或表。因为更新时索引需要维护。过长的属性,例如超过30个字节。因为在过长的属性上建立索引,索引所占的存储空间较大,而且索引级数也随之增加,有诸多不利之处。太小的表,例如小于六个物理块的表。适宜建立索引的条件如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。对于以读为主或只读的表,只要需要,且存储空间允许,可以多建索引。聚簇存取方法聚簇就是把有关的元组集中在一个物理块内或物理上相邻的区域内,以提高某些数据访问的速度。具有同一聚簇键值的元组,尽可能放在同一个物理块中。如果放不下,可以向预留的空白区发展,或链接多个物理块。适宜建立聚簇的情况通过聚簇键进行访问或连接是该表的主要应用,与聚簇键无关的其他访问很少,或是次要的。对应每个聚簇键值的平均元组数既不太少,也不太多。聚簇键的值应相对稳定,以减少修改聚簇键所引起的维护开销。分区设计方法数据库系统一般有多个磁盘驱动器,有些系统还带有磁盘阵列。数据在多个磁盘组上的分布也是数据库物理设计的内容之一,这就是分区设计方法。分区设计的原则如下:减少访盘冲突,提高I/O的并行性。分散热点数据,均衡I/O负荷。保证关键数据的快速访问,缓解系统的瓶颈。数据库的存储结构确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。数据库应用程序编制及调试在程序编制中,最基本的是使用DBMS提供的数据语言,对数据库中的数据进行定义、检索、更新和实施各种控制。程序模块代码通常先在模拟的环境下通过初步调试,然后进行联合调试。联合调试的工作主要有以下三点:建立数据库结构调试运行装入实际的初始数据运行前的准备(1)制定数据库重新组织的可行方案(2)制定故障恢复规范(3)制定系统的安全规范(4)制定事务控制方案运行与维护(1)维护数据库的安全性和完整性(2)监察系统的性能(3)扩充系统的功能数据库的完整性完整性约束的类型完整性约束的表达与控制完整性约束的实施数据库的完整性数据库的完整性是指数据的正确性和相容性。为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件称为数据库完整性约束条件,它们作为模式的一部分存入数据库中。而DBMS中检查数据是否满足完整性条件的机