第七章数据库设计5.1数据库设计概述5.2需求分析5.3概念结构设计5.4逻辑结构设计5.5数据库的物理设计5.6数据库的实施和维护5.5小结5.4逻辑结构设计逻辑结构设计的任务把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构逻辑结构设计的步骤将概念结构转化为一般的关系、网状、层次模型将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换对数据模型进行优化6.4逻辑结构设计逻辑结构设计分三步进行:转换为一般数据模型转换为特定DBMS下的数据模型优化数据模型逻辑结构设计物理设计概念设计基本E-R图转换规则特定DBMS的特点和限制优化方法(如规范化理论)逻辑模型物理设计阶段逻辑结构设计阶段逻辑结构设计阶段模式优化设计用户子模式概念设计阶段转化为数据模型关系规范化逻辑模型基本E-R图5.4逻辑结构设计5.4.1E-R图向关系模型的转换5.4.2数据模型的优化5.4.3设计用户子模式5.4.1E-R图向关系模型的转换转换内容转换原则E-R图向关系模型的转换(续)E-R图向关系模型的转换要解决的问题如何将实体型和实体间的联系转换为关系模式如何确定这些关系模式的属性和码转换内容将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转换为关系模式。转化规则1)一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键(1)方法1.找出主键2.找出属性间的依赖关系3.表示为关系模式4.主键:属性名下加横线5.函数依赖关系:箭头线(2)例子☆实体向关系模式的转换产品(产品号,产品名,性能,价格)零件(零件号,零件名)材料(材料号,材料名,价格)仓库(仓库号,车库名,地点,电话)产品零件仓库材料组装消耗存放产品号产品名价格性能材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmnnn2)一个联系转换为一个关系模式,相联系实体的码和联系的属性转换为关系的属性(1)一个m:n联系转换为一个关系模式1.联系的内容(1)联系名(2)相互联系的实体的主键(3)联系本身的属性2.主码(1)关系的码为参加联系的各实体码的组合3.例子(1)产品组装成零件☆(2)材料存放在仓库☆联系向关系模式的转换产品零件一览表(产品号,零件号,零件数量)零件用料表(零件号,材料名,消耗量)材料存放表(材料号,仓库号,存放量)产品零件仓库材料组装消耗存放产品号产品名价格性能材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmnnn2)一个联系转换为一个关系模式,相联系实体的键和联系的属性转换为关系的属性(2)一个1:n联系可以转换为一个独立的关系模式,关系的键为n端实体的码。也可以与n端对应的关系模式合并1.联系的内容(1)联系名(2)相互联系的实体的主码(3)联系本身的属性2.主键(1)关系的键为n端实体的码3.例子(1)零件消耗材料☆(2)带属性的一对多联系☆带属性的一对多联系司机汽车驾驶工号姓名性别年龄车号车种载重量载客数值勤日n1技术等级司机(工号,姓名,性别,年龄,技术等级)汽车(车号,车种,载重量,载客数)驾驶(工号,车号,值勤日)2)一个联系转换为一个关系模式,相联系实体的码和联系的属性转换为关系的属性(3)一个1:1联系可以转换为一个独立的关系模式,每个实体的键均为该关系的候选码。也可以与任意一端对应的关系模式合并1.联系的内容(1)联系名(2)相互联系的实体的主码(3)联系本身的属性2.主键(1)每个实体的码均为该关系的候选码2)一个联系转换为一个关系模式,相联系实体的码和联系的属性转换为关系的属性3)三个或三个以上实体间的一个多元联系转换为一个关系模式(1)存在于三个实体之间的联系☆4)同一实体集的实体间的联系,可按1:1,1:n,m:n分别处理存在于三个实体之间的联系供应(公司名,工程号,材料名)n公司供应工程材料Lm公司名工程号材料名华都132钢管华兴215铝板向阳132水泥华都730水泥E-R图向关系模型的转换(续)(5)具有相同码的关系模式可合并目的:减少系统中的关系个数合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序E-R图向关系模型的转换(续)[例]把图7.30中虚线上部的E-R图转换为关系模型部门实体对应的关系模式部门(部门号,部门名,经理的职工号,…)此关系模式已包含了联系“领导”所对应的关系模式经理的职工号是关系的候选码职工实体对应的关系模式职工(职工号、部门号,职工名,职务,…)该关系模式已包含了联系“属于”所对应的关系模式E-R图向关系模型的转换(续)[例]把图7.30中虚线上部的E-R图转换为关系模型(续)产品实体对应的关系模式产品(产品号,产品名,产品组长的职工号,…)供应商实体对应的关系模式供应商(供应商号,姓名,…)零件实体对应的关系模式零件(零件号,零件名,…)E-R图向关系模型的转换(续)[例]把图7.30中虚线上部的E-R图转换为关系模型(续)联系“参加”所对应的关系模式职工工作(职工号,产品号,工作天数,…)联系“供应”所对应的关系模式供应(产品号,供应商号,零件号,供应量)5.4逻辑结构设计5.4.1E-R图向关系模型的转换5.4.2数据模型的优化5.4.3设计用户子模式5.4.2数据模型的优化得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化关系数据模型的优化通常以规范化理论为指导数据模型的优化(续)优化数据模型的方法1.确定数据依赖按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖2.消除冗余的联系对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。3.确定所属范式按照数据依赖的理论对关系模式逐一进行分析考查是否存在部分函数依赖、传递函数依赖、多值依赖等确定各关系模式分别属于第几范式数据模型的优化(续)4.按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。注意:并不是规范化程度越高的关系就越优,一般说来,第三范式就足够了数据模型的优化(续)例:在关系模式学生成绩单(学号,英语,数学,语文,平均成绩)中存在下列函数依赖:学号→英语学号→数学学号→语文学号→平均成绩(英语,数学,语文)→平均成绩数据模型的优化(续)显然有:学号→(英语,数学,语文)因此该关系模式中存在传递函数信赖,是2NF关系虽然平均成绩可以由其他属性推算出来,但如果应用中需要经常查询学生的平均成绩,为提高效率,仍然可保留该冗余数据,对关系模式不再做进一步分解数据模型的优化(续)5.按照需求分析阶段得到的各种应用对数据处理的要求,对关系模式进行必要的分解,以提高数据操作的效率和存储空间的利用率常用分解方法水平分解垂直分解数据模型的优化(续)水平分解什么是水平分解–把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率水平分解的适用范围–满足“80/20原则”的应用–并发事务经常存取不相交的数据数据模型的优化(续)垂直分解什么是垂直分解–把关系模式R的属性分解为若干子集合,形成若干子关系模式垂直分解的适用范围–取决于分解后R上的所有事务的总效率是否得到了提高5.4逻辑结构设计5.4.1E-R图向关系模型的转换5.4.2数据模型的优化5.4.3设计用户子模式5.4.3设计用户子模式定义用户外模式时应该注重的问题包括三个方面:(1)使用更符合用户习惯的别名(2)针对不同级别的用户定义不同的View,以满足系统对安全性的要求。(3)简化用户对系统的使用设计用户子模式(续)[例]关系模式产品(产品号,产品名,规格,单价,生产车间,生产负责人,产品成本,产品合格率,质量等级),可以在产品关系上建立两个视图:为一般顾客建立视图:产品1(产品号,产品名,规格,单价)为产品销售部门建立视图:产品2(产品号,产品名,规格,单价,车间,生产负责人)顾客视图中只包含允许顾客查询的属性销售部门视图中只包含允许销售部门查询的属性生产领导部门则可以查询全部产品数据可以防止用户非法访问不允许他们查询的数据,保证系统的安全性逻辑结构设计小结任务将概念结构转化为具体的数据模型逻辑结构设计的步骤将概念结构转化为一般的关系、网状、层次模型将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换对数据模型进行优化设计用户子模式逻辑结构设计小结E-R图向关系模型的转换内容E-R图向关系模型的转换原则逻辑结构设计小结优化数据模型的方法1.确定数据依赖2.对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。3.确定各关系模式分别属于第几范式。4.分析对于应用环境这些模式是否合适,确定是否要对它们进行合并或分解。5.对关系模式进行必要的分解或合并逻辑结构设计小结设计用户子模式1.使用更符合用户习惯的别名2.针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。3.简化用户对系统的使用