数据库设计-第四节:逻辑结构设计

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库设计-第四节:逻辑结构设计相关的知识,希望对你有一定的参考价值。

文章目录

概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构

一:E-R图向关系模式的转换

(1)转换原则

转换原则:每一个实体类型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。对于联系的转换注意:

  • 一般1:1、1:m联系不产生新的关系模式,而是将一方实体的码加入到多方实体对应的关系模式中,联系的属性也一并加入
  • m:n联系要产生一个新的关系模式,该关系模式由联系涉及实体的码加上联系的属性(若有)组成

(2)具体转换

A:同一实体间

①:同一实体间1:m 联系

可以在这个实体所对应的关系中多设一个属性,作为与该实体相联系的另一个实体的主码

例如,下面的E-R图可以转化为如下关系模式

职工(工号,姓名,年龄,性别,职称,工资,领导者工号,民意测验)

②:同一实体间m:n 联系

必须为这个“联系”单独建立一个关系,该关系中至少应该包含被它所联系的双方实体的“主码”,如果联系有属性,也一并纳入该关系中。由于这个“联系”只涉及一个实体,所以加入的实体的主码不能同名

例如,下面的E-R图可以转化为如下关系模式

零部件(代号,名称,价格)
组装(代号,组装件代号,数量)

B:两实体间

①:两实体间1:1联系

一个1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并

  • 如果转换为一个独立的关系模式:则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码
  • 如果与某一端实体对应的关系模式合并:则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性

例如,下面的E-R图可以转化为如下关系模式

工厂(厂号,厂名,地点,姓名,任期)
厂长(姓名,性别,年龄)

或者

厂长(姓名,性别,年龄,厂号,任期)
工厂(厂号,厂名,地点)

②:两实体间1:m联系

可以将“1”方实体的主码纳入“m”方实体对应的关系中作为外码,同时把联系的属性也一并纳入“m”方对应的关系中

例如,下面的E-R图可以转化为如下关系模式

仓库(仓库号,地点,面积)
商品(货号,品名,价格,仓库号,数量)

③:两实体间m:n联系

必须对“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的主码,如果联系也有属性,也一并纳入该关系中

例如,下面的E-R图可以转化为如下关系模式

学生(学号,姓名,性别,年龄)
课程(课程号,课程名,学时)
选修(学号,课程号,成绩)

④:两实体间弱实体联系

可以将被依赖实体的主码纳入弱实体中,作为弱实体的主码或主码的一部分

例如,下面的E-R图可以转化为如下关系模式

职工(工号,姓名,年龄,性别,职称)
亲属(工号,亲属姓名,亲属关系)

C:两个以上实体间m:n

必须对“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的主码,如果联系也有属性,也一并纳入该关系中

例如,下面的E-R图可以转化为如下关系模式

供应商(供应商号,供应商名,地址)
零件(零件号,零件名,重量)
项目(项目编号,项目名称,开工日期)
供应(供应商号,项目编号,零件号,零件数)

二:数据模型的优化

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化

关系数据模型的优化通常以规范化理论为指导,方法为:

  • 确定每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖
  • 对各个关系模式之间的数据依赖进行最小化处理,消除冗余的联系
  • 确定各关系模式的范式等级
  • 按照需求分析阶段得到的处理要求,确定要对哪些模式进行合并或分解
  • 为了提高数据操作的效率和存储空间的利用率,对上述产生的关系模式进行适当的修改、调整和重构

三:设计用户子模式

将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式

在定义用户外模式时可以注重考虑用户的习惯于方便,包括以下几个方面

  • 使用更符合用户习惯的别名
  • 可以为不同级别的用户定义不同的视图,以保证系统的安全性
  • 可将经常使用的复杂的查询定义为视图,简化用户对系统的使用

以上是关于数据库设计-第四节:逻辑结构设计的主要内容,如果未能解决你的问题,请参考以下文章

(计算机组成原理)第五章中央处理器-第四节4:微程序控制单元设计

总体设计-第四节:描绘软件结构的图形工具

面向对象设计-第四节:设计人机交互子系统和设计任务管理子系统

JavaScript程序设计 第四节 条件语句和循环语句

Web前端开发笔记——第四章 JavaScript程序设计 第四节 条件语句和循环语句

Web前端开发笔记——第三章 CSS语言 第四节 CSS列表表格样式