数据库原理(十 二)- 逻辑结构设计
前言
概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。
E-R图向关系模型的转换
E-R图向关系模型的转换要解决的问题:
- 如何将实体型和实体间的联系转换为关系模式
- 如何确定这些关系模式的属性和码
转换的一般规则:
一个实体型转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码
不同联系的转换规则:
- 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
- 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
- 一个m:n联系可以转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转为关系的属性,各实体的码组成关系的码或关系码的一部分
- 多元联系转换为一个关系模式,与该多元联系相连的各实体的码以及联系本身的属性均转为关系的属性,各实体的码组成关系的码或关系码的一部分
- 具有相同码的关系模式可以合并
上面的几条转换规则不知道你们看不看得懂,如果看不懂用下面的例子说明
1:1联系,如下图中
一共有两个关系实体,我们可以转化为两个关系模式,分别是顾客和会员卡,按照转换规则,我们选择任意一端合并,并将一端的主码添加为合并端关系模式的外码
顾客(姓名,性别,年龄)
会员卡(卡号,消费金额,积分,顾客姓名)
1:n联系和m:n联系,如下图:
1:n联系中,可以看到有班级和学生两个实体,按照转换规则,选择n端合并,1端的主码添加到n端的关系模式做外码
班级(班级号,班级名,辅导员)
学生(学号,姓名,性别,年龄,班级号)
m:n联系中,可以看到有学生和课程两个实体,以及一个选修联系实体,按照转换规则,学生和课程两个实体的码和属性不变,将各自的主码添加进选修联系实体中做主码和外码
学生(学号,姓名,性别,年龄,班级号)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
如果m:n联系中,没有联系的属性,那么就合并n端,m端的主码作n端的外码,在关系模式中主码用下划线标识,外码用波浪线标识
数据模型的优化
数据逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系数据模型的优化通常以规范化理论为指导,方法为:
- 确定数据依赖
- 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
- 按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式属于第几范式
- 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解
- 对关系模式进行必要分解,提高数据操作效率和存储空间利用率
设计用户子模式
将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式。
定义数据库全局模式主要是从系统的时间效率、空间效率、易维护等角度出发。由于用户外模式与模式是相对独立的,因此在定义用户外模式时可以注重考虑用户的习惯与方便,具体包括一下几个方面:
- 使用更符合用户习惯的别名
- 可以对不同级别的用户定义不同的视图
- 简化用户对系统的使用