第14讲逻辑结构设计问题提出概念结构是独立于任何一种数据模型的信息结构。那么如何将概念结构转换为DBMS产品支持的数据模型呢?目前,DBMS产品一般支持、、三种模型中的某一种。关系网状层次逻辑结构设计一、逻辑结构设计的步骤设计逻辑结构时一般要分三步进行(如图1所示):概念结构基本E-R图一般数据模型关系、网状、层次特定的DBMS支持下的数据模型优化的数据模型1、将概念结构转换为一般的关系、网状、层次模型2、将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换3、对数据模型进行优化转换规则DBMS的特点和限制优化方法图1逻辑结构设计的三个步骤二、E-R图向关系模型的转换要解决的问题:如何将实体、联系转换为关系模式?如何确定这些关系模式的属性和码?(重点)E-R图是由、和3个要素组成。实体属性联系1、实体的转换E-R图中的每一个实体,都应转换为一个关系,实体的属性就是关系的属性;实体的主码就是关系的主码。解:学生(学号,姓名,性别)例1:把图2所示的实体转换为关系模式学生学号姓名姓别图2学生E-R图(1)转化规则2、联系的转换1:1,1:m联系不产生新的关系模式,而是将一方实体的码加入到多方实体对应的关系模式中,联系的属性也一并加入。m:n联系要产生一个新的关系模式,该关系模式由联系涉及实体的码加上联系的属性(若有)组成。(2)具体做法1)两实体间的1:1联系一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的侯选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。可将任一方实体的主码纳入到另一方实体对应的关系中,若有,联系的属性也一并纳入。例2:把图3所示的实体转换为关系模式解:由于有两个实体,分别转化为2个关系模式:部门(部门号,部门名);经理(经理号,经理名,电话)。根据一端主码放到另一端去,可以得到如下关系:部门(部门号,部门名,经理号);经理(经理号,经理名,电话)。部门经理管理部门号部门名经理号经理名11电话图3部门-经理E-R图2)两实体间的1:m联系可将“1”方实体的主码纳入“m”方实体对应的关系中作为外码,同时把联系的属性也一并纳入“m”方对应的关系中。例3:把图4所示的实体转换为关系模式科医生有1n科号科名编号姓名性别级别图4医生-科室E-R图解:根据一端主码放到多端去,可以得到科(科号,科名);医生(编号,科号,姓名,性别,级别)3)同一实体间的1:m联系可在这个实体所对应的关系中多设一个属性,作为该实体相联系的另一个实体的主码。例4:把图5所示的E-R模型转换为关系模式。解:将图5所示的E-R模型转换为如下关系模式:职工(工号,姓名,年龄,性别,职称,工资,领导者工号,民意测验)工号姓名年龄性别职称工资民意测验领导m1职工图5领导-职工E-R图4)两实体间的弱实体联系(补充)可将被依赖实体的主码纳入弱实体中,作为弱实体的主码或主码中的一部分。例5:把图6所示的E-R模型转换为关系模式。解:将图6所示的E-R模型转换为如下关系模式:职工(工号,姓名,年龄,性别,职称)亲属(工号,亲属姓名,亲属关系)工号姓名年龄性别职称有m1职工图6职工-亲属E-R图亲属亲属姓名亲属关系5)超类与子类的转换(补充)超类、子类实体都可转换为一个关系,并将超类实体的主码加到子类实体中。例6:把图7所示的E-R模型转换为关系模式。各个实体的的属性为:职员:职工号,姓名,性别,年龄,参加工作时间飞行员:飞行小时,健康检查,飞行型号机械师:学历,级别,专业职称管理员:职务、职称职员图7超类-子类E-R图飞行员机械师管理员5)超类与子类的转换(补充)解:该E-R图转换为如下关系模式:职员(职工号,姓名,性别,年龄,参加工作时间)飞行员(职工号,飞行小时,健康检查,飞行型号)机械师(职工号,学历,级别,专业职称)管理员(职工号,职务,职称)职员图7超类-子类E-R图飞行员机械师管理员为了查询方便,可在超类实体中增加一个指示器属性,根据指示器的值直接查询子类实体表。所以职员关系可以定义为:职员(职工号,姓名,性别,年龄,参加工作时间,职员类型)6)两实体间的m:n联系必须对“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的“主码”,如果联系有属性,也要纳入这个关系中。例7:把图8所示的E-R模型转换为关系模式。学生课程选课学号姓名性别课程号课程名学分成绩mn图8学生-课程E-R图解:该E-R图转换为如下三个关系模式:学生(学号,姓名,性别)课程(课程号,课程名,学分)选课表(学号,课程号,成绩)这是m:n联系所对应的关系。7)同一实体间的m:n联系必须为这个“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的“主码”,如果联系有属性,也要纳入这个关系中。由于这个联系只涉及一个实体,所以加入的实体的主码不能同名。例8:把图9所示的E-R模型转换为关系模式。图9零部件-组装E-R图代号名称价格组装零部件mn属性7)同一实体间的m:n联系图9零部件-组装E-R图代号名称价格组装零部件mn属性解:该E-R图转换为如下关系模式:零部件(代号,名称,价格)组装(代号,组装件代号,数量)8)两个以上实体间的m:n联系必须为这个“联系”单独建立一个关系,该关系中至少包含被它所联系的各个实体的“主码”,如果联系有属性,也要纳入这个关系中。例9:把图10所示的E-R模型转换为关系模式。解:该E-R图转换为如下四个关系模式:供应商(供应商号,供应商名,地址)课程(零件号,零件名,重量)项目(项目编号,项目名称,开工日期)供应(供应商号,项目编号,零件号,零件数)图10供应商-零件-项目E-R图供应商号供应供应商mm零件数零件供应商名地址零件号零件名重量项目编号项目名称开工日期项目np思考1、由E-R图转换得来的关系模式是唯一的吗?2、由E-R图转换为关系模式有现成的工具可用吗?有哪些工具?各有何优缺点(要求在网上查找思考)