资源描述
第三章第四讲数据库逻辑结构及物理结构设计,内容目录,3.4 逻辑结构设计 一、E-R图到关系模式的转换 二、逻辑模式的规范化、调整和实现 三、外模式的设计,3.5 数据库的物理设计 一、数据库的物理设计的内容和方法 二、关系模式存取方法选择 三、确定数据库的存储结构 四、物理结构评价,3.6数据库的实施和维护 一、数据的载入和应用程序的调试 二、数据库的试运行 三、数据库的运行和维护,一、E-R图到关系模式的转换,1、命名和属性域的处理 2、非原子属性的处理 3、弱实体的处理 4、联系的转换 5、概括/特殊化层次的转换 6、范畴的转换,1、命名和属性域的处理,关系模式命名规则 既可采用E-R图中原来的命名,亦可 另行命名; 命名应有助于对数据的理解和记忆; 避免重名;,属性域的处理 若DBMS不支持E-R图中某些属性的域,则应做相应的修改或 利用应用程序进行转换。,2、非原子属性的处理,集合型 处理方法:对集合属性纵向展开。 元组型 处理方法:对元组属性横向展开。,集合属性的展开,元组属性的展开,3、弱实体的处理,职工号,姓名,职工号,职工-家属,职工,家属,姓名,性别,年龄,与职工关系,E-R图,图:弱实体“家属”的关系模式,4、联系的转换,1:1联系 1:N联系 M:N联系 多元联系 自联系,I 1:1 联系,解决方案,与某一实体(完全参与)合并 R1(K,A,H,S) R2(H,B) 单独形成关系模式 R1(K,A) R2(H,B) R3(K,H,S),优缺点?,示 例,II 1:N联系,若E2完全参与,则有: R1(K,A) R2(H,B,K,S) 若E2部分参与,则有: R1(K,A) R2(H,B) R3(H,K,S),解决方案,示 例,III M:N联系,K,H能否单独作为作为联系R的主码?,解决方案,R1(K,A) R2(H,B) R3(K,H,S),示例,思考: 此E-R图的关系模式如何?,IV 多元联系,K,A,E1,R,S,M,N,P,解决方案,一般情况(当M,N,P 1时) R1(K,A) R2(H,B) R3(J,C) R4(K,H,J,S) 特殊情况(当M,N,P中只有其一大于1 时)?,示例思考?,工程号,工程,供应 关系,零件,公司,零件号,公司名,供应量,N,M,P,V 自联系,职工,妻子,丈夫,(1)1:1联系,配偶,职工,(2)一对多联系,职工,领导,属下,领导,(3)M:N联系,零件,母零件,子零件,构成,5、概括/特殊化层次的转换,C,ISA,Si,Sm,属性集: (K,a1an),属性集: Attr(Si),解决方案(1),k(Ri) k(R) R( K ,a1,an) Ri( K ,Attr(Si) i1.m,不相交与全特殊化情况 Ri( K ,a1,an,Attr(Si) i1.m,解决方案(2),解决方案(3),不相交特殊化情况,t=0,实体不属于任何子实体集。 t=i0,实体属于子实体集Si。,解决方案(4),重叠特殊化,若实体属于Si,则 ti = 1,否则 ti = 0。 若 ti = 0,则Attr(Si)中的各属性取NULL。,6、范畴的转换,单位名,身份证号码,车主标识,车主标识,单位,个人,负责人,姓名,住址,住址,车主,U,牌照号码,购买日期,替身键,解决方案,R1(单位名,负责人,地址,车主标识) R2(身份证号码,住址,姓名,车主标识) R3(车主标识,购买日期,牌照号码),二、逻辑模式的规范化、调整和实现,从E-R图转换而来的关系模式只是逻辑模式的雏形,尚需进行下列处理: 规范化 适应DBMS限制条件的修改 用DBMS提供的DDL定义逻辑模式 满足性能、存储空间等要求的调整,1、改善数据库性能的调整,减少连接运算 使用逆规范化操作 减小关系的大小和数据量 使用水平分割和垂直分割 尽可能使用快照,节省每个属性所占用的空间 用编码代替实际属性值,用缩写名代替全称。 采用假属性减少重复数据所占存储空间 A B中B取值少但所占空间大的情况。 A B B B,2、节省存储空间的调整,三、外模式的设计,设计外模式时,可以参照局部E-R图,因为局部E-R图本身即是用户对数据需求的反映。由于用户外模式与模式是独立的,因此在定义用户外模式时应该更注重考虑用户的习惯与方便。 (1) 使用更符合用户习惯的别名 (2) 针对不同级别的用户定义不同的外模 式,满足系统对安全性的要求。 (3) 简化用户对系统的使用,逻辑结构设计,设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。设计逻辑结构时一般要分三步进行: 将概念结构转换为一般的关系、网状、 层次模型 将转化来的关系、网状、层次模型向特 定DBMS支持下的数据模型转换 对数据模型进行优化,概念结构 基本E-R图,一般数据模型 关系、网络 层次,特定的DBMS 支持下的数据 模型,优化的数据 模型,转换规则,DBMS的特点 和限制,优化方法,图 逻辑结构设计时的三个步骤,一、E-R图向关系模型的转换,关系模型的逻辑结构是一组关系模式的集合。而E-R图则是由实体、实体的属性和实体之间的联系三个要素组成的。所以将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,转换一般遵循如下原则:, 一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。 例如在我们的例子中,学生实体可以转换为如下关系模式,其中学号为学生关系的码: 学生(学号,姓名,出生日期,所在系,年级,平均成绩) 同样,性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一个关系模式。, 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。 例如在我们的例子中,“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码: 选修(学号,课程号,成绩), 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。,例如在我们的例子中,“组成”联系为1:n联系,将其转换为关系模式一种方法是使其成为一个独立的关系模式: 组成(学号,班级号) 另一种方法是将其学生关系模式合并,这时学生关系模式为: 学生(学号,姓名,出生日期,所在系,年级,班级号,平均成绩) 后一种方法可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。, 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。,例如在我们的例子中,“管理”联系为1:1联系,我们可以将其转换为一个独立的关系模式: 管理(职工号,班级号)或 管理(职工号,班级号) 管理”联系也可以与班级或教师关系模式合并。如果与班级关系模式合并,则只需在班级关系中加入教师关系的码,即职工号: 班级:班级号,学生人数,职工号 同样,如果与教师关系模式合并,则只需在教师关系中加入班级关系的码,即班级号: 教师:职工号,姓名,性别,职称,班级号,是否为优秀班主任, 三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。 例如在我们的例子中,“讲授”联系是一个三元联系,可以将它转换为如下关系模式,其中课程号、教师号和书号为关系的组合码: 讲授(课程号,教师号,书号), 同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。 例如,如果教师实体集内部存在领导与被领导的1:n自联系,我们可以将该联系与教师实体合并,这时主码职工号将多次出现,但作用不同,可用不同的属性名加以区分,比如在合并后的关系模式中,主码仍为职工号,再增设一个“系主任”属性,存放相应系主任的职工号。, 具有相同码的关系模式可合并。 目的:为了减少系统中的关系个数。 合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。,按照上述七条原则,学生管理子系统中的18个实体和联系可以转换为下列关系模型: 学生(学号,姓名,性别,出生日期,所在系,年级,班级号,平均成绩,档案号) 性别(性别,宿舍楼) 宿舍(宿舍编号,地址,性别,人数) 班级(班级号,学生人数) 教师(职工号,姓名,性别,职称,班级号,是否为优秀班主任) 教学(职工号,学号),课程(课程号,课程名,学分,教室号) 选修(学号,课程号,成绩) 教科书(书号,书名,价钱) 教室(教室编号,地址,容量) 讲授(课程号,教师号,书号) 档案材料(档案号,),该关系模型由12个关系模式组成。 学生关系模式包含了“拥有”联系、“组成”联系、“归档”联系所对应的关系模式; 教师关系模式包含了“管理”联系所对应的关系模式; 宿舍关系模式包含了“住宿”联系所对应的关系模式; 课程关系模式包含了“开设”联系所对应的关系模式。,二、数据模型的优化,数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,通常以规范化理论为指导,还应该适当地修改、调整数据模型的结构。,数据模型的优化方法,确定数据依赖。 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。 按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。,按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。 对关系模式进行必要的分解。 水平分解根据80/20原则进行。 垂直分解必须确保无损连接性和保持函数依赖性。,三、设计用户子模式,定义数据库模式主要是从系统的时间效率、空间效率、易维护等角度出发。由于用户外模式与模式是独立的,因此在定义用户外模式时应该更注重考虑用户的习惯与方便。 包括: (1) 使用更符合用户习惯的别名 (2) 针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。 (3) 简化用户对系统的使用,数据库的物理设计,数据库最终是要存储在物理设备上的。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。 物理结构依赖于给定的DBMS和和硬件系统,因此设计人员必须充分了解所用DBMS的内部特征,特别是存储结构和存取方法;充分了解应用环境,特别是应用的处理频率和响应时间要求;以及充分了解外存设备的特性。,数据库的物理设计步骤: 确定数据库的物理结构(存取方法和存储结构); 对物理结构进行评价,评价的重点是时间和空间效率。,一、确定数据库的物理结构, 确定数据的存储结构 确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。,许多关系型DBMS都提供了聚簇功能,即为了提高某个属性(或属性组)的查询速度,把在这个或这些属性上有相同值的元组集中存放在一个物理块中,如果存放不下,可以存放到预留的空白区或链接多个物理块。,聚簇功能可以大大提高按聚簇码进行查询的效率。 例如假设学生关系按所在系建有索引,现在要查询信息系的所有学生名单,设信息系有120名学生,在极端情况下,这120名学生所对应的元组分布在120个不同的物理块上,由于每访问一个物理块需要执行一次I/O操作,因此该查询即使不考虑访问索引的I/O次数,也要执行120次I/O操作。如果将同一系的学生元组集中存放,则每读一个物理块可得到多个满足查询条件的元组,从而显著地减少了访问磁盘的次数。,聚簇以后,聚簇码相同的元组集中在一起了,因而聚簇码值不必在每个元组中重复存储,只要在一组中存一次就行了,因此可以节省一些存储空间。 聚簇功能不但适用于单个关系,也适用于多个关系。假设用户经常要按系别查询学生成绩单,这一查询涉及学生关系和课程关系的连接操作,即需要按学号连接这两个关系,为提高连接操作的效率,可以把具有相同学号值的学生元组和课程元组在物理上聚簇在一起。,注意:聚簇只能提高某些特定应用的性能,而且建立与维护聚簇的开销是相当大的。对已有关系建立聚簇,将导致关系中元组移动其物理存储位置,并使此关系上原有的索引无效,必须重建。当一个元组的聚簇码改变时,该元组的存储位置也要做相应移动。因此只有在用户应用满足下列条件时才考虑建立聚簇,否则很可能会事得其反。, 设计数据的存取路径,在关系数据库中,选择存取路径主要是指确定如何建立索引。 例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等。, 确定数据的存放位置,为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。 例如,数据库数据备份、日志文件备份等由于只在故障恢复时才使用,而且数据量很大,可以考虑存放在磁带上。目前许多计算机都有多个磁盘,因此进行物理设计时可以考虑将表和索引分别放在不同的磁盘上,在查询时,由于两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。也可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。此外还可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。, 确定系统配置,DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的缺省值。但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能。,通常情况下,这些配置变量包括:同时使用数据库的用户数,同时打开的数据库对象数,使用的缓冲区长度、个数,时间片大小、数据库的大小,装填因子,锁的数目等等,这些参数值影响存取时间和存储空间的分配,在物理设计时就要根据应用环境确定这些参数值,以使系统性能最优。 在物理设计时对系统配置变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能。,二、评价物理结构,评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。如果该结构不符合用户需求,则需要修改设计。,数据库的实施,数据库实施主要包括以下工作: 用DDL定义数据库结构 组织数据入库 编制与调试应用程序 数据库试运行,一、定义数据库结构 确定了数据库的逻辑结构与物理结构后,就可以用所选用的DBMS提供的数据定义语言(DDL)来严格描述数据库结构。 二、数据装载 数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。对于数据量不是很大的小型系统,可以用人式方法完成数据的入库,其步骤为:,1.筛选数据 需要装入数据库中的数据通常都分散在各个部门的数据文件或原始凭证中,所以首先必须把需要入库的数据筛选出来。 2.转换数据格式 筛选出来的需要入库的数据,其格式往往不符合数据库要求,还需要进行转换。这种转换有时可能很复杂。 3.输入数据 将转换好的数据输入计算机中。 4.校验数据 检查输入的数据是否有误。,对于中大型系统,由于数据量极大,用人工方式组织数据入库将会耗费大量人力物力,而且很难保证数据的正确性。因此应该设计一个数据输入子系统由计算机辅助数据的入库工作。,三、编制与调试应用程序 数据库应用程序的设计应该与数据设计并行进行。在数据库实施阶段,当数据库结构建立好后,就可以开始编制与调试数据库的应用程序,也就是说,编制与调试应用程序是与组织数据入库同步进行的。调试应用程序时由于数据入库尚未完成,可先使用模拟数据。,四、数据库试运行 应用程序调试完成,并且已有一小部分数据入库后,就可以开始数据库的试运行。数据库试运行也称为联合调试,其主要工作包括: 功能测试:即实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。 性能测试:即测量系统的性能指标,分析是否符合设计目标。,数据库运行与维护,在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,它包括: 数据库的转储和恢复 定期对数据库和日志文件进行备份,以保证一旦发生故障,能利用数据库备份及日志文件备份,尽快将数据库恢复到某种一致性状态,并尽可能减少对数据库的破坏。, 数据库的安全性、完整性控制 DBA必须对数据库安全性和完整性控制负起责任。根据用户的实际需要授予不同的操作权限。另外,由于应用环境的变化,数据库的完整性约束条件也会变化,也需要DBA不断修正,以满足用户要求。, 数据库性能的监督、分析和改进 目前许多DBMS产品都提供了监测系统性能参数的工具,DBA可以利用这些工具方便地得到系统运行过程中一系列性能参数的值。DBA应该仔细分析这些数据,通过调整某些参数来进一步改进数据库性能。,数据库的重组织不会改变原设计的数据逻辑结构和物理结构,只是按原设计要求重新安排存储位置,回收垃圾,减少指针链,提高系统性能。DBMS一般都提供了供重组织数据库使用的实用程序,帮助DBA重新组织数据库。 当数据库应用环境发生变化,会导致实体及实体间的联系也发生相应的变化,使原有的数据库设计不能很好地满足新的需求,从而不得不适当调整数据库的模式和内模式,这就是数据库的重构造。DBMS都提供了修改数据库结构的功能。,重构造数据库的程度是有限的。若应用变化太大,已无法通过重构数据库来满足新的需求,或重构数据库的代价太大,则表明现有数据库应用系统的生命周期已经结束,应该重新设计新的数据库系统,开始新数据库应用系统的生命周期了 。,
展开阅读全文