首页 百科知识 逻辑设计的步骤

逻辑设计的步骤

时间:2022-10-17 百科知识 版权反馈
【摘要】:③ 设计应用程序与数据库的接口。很多时候,用户事先已经指定了要采用的DBMS,设计人员没有选择的余地。以规范化理论为指导,检查初步逻辑模型是否满足第三范式的要求,以避免不必要的数据重复和变更异常,避免出现多值数据列和计算列。数据库逻辑设计的结果不是唯一的,为了进一步提高数据库应用系统的性能,还应该根据应用需要适当修改、调整数据模型的结构,这就是数据模型的优化。

7.3 逻辑设计的步骤

逻辑设计主要有三个步骤:① 把概念模型转换成逻辑模型,然后用规范化的方法检查表和定义关系的完整性约束,以优化逻辑模型。这一步是本章讲述的重点,其处理要点如图7-2所示。② 设计外模型。外模型是逻辑模型的一个子集。外模型是应用程序与数据库系统的接口,它能允许应用程序有效访问数据库中的数据,而不破坏数据库的安全性。具体内容详见第8章。③ 设计应用程序与数据库的接口。在设计完整的应用程序之前,对应用程序应设计出数据存取功能的梗概,提供应用程序与数据库之间通信的逻辑接口。

img117

图7-2 概念模型转换成逻辑模型的处理要点

(1)选择DBMS

一个数据库应用系统在最终实现时,必须建立在特定的DBMS基础上,因此,设计逻辑模型首先需要选择应用系统的DBMS平台。选择什么样的DBMS,要根据应用系统的具体需求、复杂程度、数据规模、软硬件和网络环境等因素综合而定。很多时候,用户事先已经指定了要采用的DBMS,设计人员没有选择的余地。

有关DBMS的介绍详见第12章。

(2)转换概念模型

在E-R数据模型中,主要包含了实体、联系以及描述它们的属性等要素,因此,从E-R模型转换到逻辑模型比较简单。通常遵循如下原则:① 一个实体型转换为一个关系模式;② 一个1∶1联系,则在一个关系模式的属性中需要加入另一个关系模式的码和联系自身的属性;③ 一个1∶n联系,则需要将1端关系模式的码和联系自身的属性加入n端的关系模式中;④ 一个m∶n联系,则转换为一个关系模式,与该联系相连的各实体的码以及联系自身的属性均转换为关系的属性。而关系的码为各实体码的组合。

设计人员借助PowerDesigner等CASE工具的转换功能可以很轻松地从全局E-R模型生成初步的逻辑模型。

(3)规范化检查

以规范化理论为指导,检查初步逻辑模型是否满足第三范式(3NF)的要求,以避免不必要的数据重复和变更异常,避免出现多值数据列和计算列。

另外,E-R模型中的联系通过CASE工具转换成逻辑模型后,在表中添加的列其名称需要重新定义,以便符合列的实际意义和用户的习惯提法。

(4)确定和设置表的主键

检查表是否有主键,确定现有主键是否合理,确保表的主键值不能为空而且主键值应该很少变更。

有3种情况需要特别处理:① 当构成主键的列太多或过于复杂(如列的长度过大)时,可考虑增加一个自增量列作为主键。SQL Server可以直接设置一列为自增量列,其值由DBMS自动维护。② 当一个表不能从已有列中选出主键时,应构造一个主键,如可增加一个类似编号的列。③ 即便能选出一个主键列,但该列的值可能会经常变更,此时,也需要重新确定新的主键。

(5)确定和建立表的关系

确定数据库中表之间存在的关系,并使用主键和外键为每个表建立必要的逻辑关联,含有主键的表通常称为父表,包含外键的表称为子表。外键要么取空值,要么等于主表中某个主键值,这就是参照完整性规则。

对于由一对一联系转换成的表,会出现循环参照的情况,其表现情况如图7-3所示。这种情况虽然不影响表的创建,但不能插入任何记录。避免循环参照的办法是根据实际需要,删除其中一个参照联系即可。

img118

图7-3 循环参照示意图

下面我们分析在父表和子表中变更数据时,存在的几种情况和处理方式:

■ 向子表插入记录。需要确保所插入记录的外键值为空或是主表中已存在的某个主键值。

■ 从子表中删除记录。参照完整性不受影响。

■ 更新子表记录中的外键值。需要确保所更新记录的外键值为空或是主表中已存在的某个主键值。

■ 向父表插入记录。不影响参照完整性。

■ 从父表中删除记录。有以下几种处理方式:

①不操作(No Action)。如果有任何相关的子记录,就不从父表中将该记录删除。此种情况,可以先删除子表中与主键值有关的记录,然后再删除父表中的相关记录。如果子表中的数据比较重要,一般要考虑不操作的方式。否则,可考虑级联的方式。

②级联(Cascade)。当父记录被删除后,自动删除相关的子记录。

③置空(Set Null)。当父记录被删除的时候,相关子记录中外键的值自动被置为空。

仅当组成外键的列允许为空时,才可以考虑这个策略。

④置预定值(Set Default)。当父记录被删除时,所有相关子记录中的外键的值自

动置为预定值。仅当组成外键的列有预置值时才可以考虑这种策略。

⑤不检查(No Check)。当父记录被删除时,不做任何保证参照完整性的操作。这种策略只有在极端的情况下才被考虑。

上述处理方式中,经常采用①②方式,很少采用③④⑤方式。

■ 更新父表记录的主键值。

(6)确定和定义业务规则

业务规则是基于用户理解和使用数据的方式而施加在字段、记录或表上的约束限制,因此,应该从用户实际需求出发,确定需要定义业务规则的数据。

字段级业务规则可以在概念模型或逻辑模型中定义,记录级业务规则一般要用到触发器,而表级规则可能会用到视图和存储过程等手段。

(7)优化数据模型

数据库逻辑设计的结果不是唯一的,为了进一步提高数据库应用系统的性能,还应该根据应用需要适当修改、调整数据模型的结构,这就是数据模型的优化。主要考虑两种情况:① 确定是否需要对某些表进行合并。如某个查询经常涉及多个表的属性,这时可以考虑合并这几个表,以提高查询效率。对表的合并通常限于一对一联系的表。② 确定是否需要对表进行必要的分解,以提高数据操作的效率和存储空间的利用率。常用的两种分解方法是水平分解和垂直分解。水平分解就是在行上把经常使用的数据分解出来形成一个子表。垂直分解则是在列上将经常使用的数据分解出来形成一个子表。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈