数据库分析之逻辑结构设计

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

一、E-R图向关系模型的转换

E-R图向关系模型的转换要解决的是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
1. 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性每个实体的码均是该关系的候选码。如果某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
3. 一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
4. 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
5. 具有相同码的关系模式可合并。

二、数据模型的优化

数据库逻辑设计的结果不是唯一的。关系数据模型的优化通常以规范化理论为指导,方法有:
1. 确定数据依赖。
2. 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
3. 按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
4. 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否对某些模式进行合并或分解。
5. 对关系模式进行必要分解,提高数据操作效率和存储空间利用率。常用分解方法有:
1)水平分解
把(基本)关系的元组分为若干个子集合,定义每个子集合为一个子关系,以提高系统的效率。根据“80/20原则”,一个大关系中,经常被使用的数据只是关系的一部分,约20%,可以把经常使用的数据分解出来,形成一个子关系。如果关系R上具有n个事务,而且多事务存取的数据不相交,则R可分解为少于或等于n个子关系,使每个事务存取的数据对应一个关系。
2)垂直分解
把关系模式R的属性分解为若干个子集合,形成若干个子关系模式。垂直分解的原则是,将经常在一起使用的属性从R中分解出来形成一个子关系模式。垂直分解可以提高某些事务的效率,但也可能使另一些事务不得不执行连接操作,从而降低效率。因此是否进行垂直分解取决于分解后R上的所有事务的总效率是否得到了提高。垂直分解需要确保无损连接性和保持函数依赖,即保证分解后的关系具有无损连接性和保持函数依赖性。

三、设计用户子模式

将概念模型转换为全局逻辑模型后,还应该根据局部应用的需求,结合具体关系数据库管理系统的特点设计用户的外模式。
定义数据库全局模式主要从系统的时间效率、空间效率、易维护等角度出发。由于用户模式与模式是相对独立的,因此在定义用户外模式时开可以注重考虑用户的习惯与方法。
1. 使用更符合用户习惯的别名。用视图机制可以在设计用户视图时重新定义某些属性名,使其与用户习惯一致,以方便使用。
2. 可以对不同级别的用户定义不同的视图,以保证系统的安全性。
3. 简化用户对系统的使用。如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图,用户每次只对定义好的视图进行查询,大大简化了用户的使用。

猜你喜欢

转载自blog.csdn.net/lxw983520/article/details/80877517