zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库逻辑结构设计阶段

2023-06-13 09:12:02 时间
我们在概要设计阶段解决了客户的需求,并绘制了 E-R图。逻辑结构设计的任务,就是把在概要结构设计阶段建立的基本 E-R 图,按选定的关系数据模型的原则转换成相应的数据库模型图。

本节将介绍如何将 E-R图转化为关系模型和数据库模型图,下一节我们介绍如何判断数据表结构设计是否规范。

关系数据库模式

用二维表的形式表示实体与实体间关系的数据模型称为关系模型。关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述。一个关系通常对应一张表。

一般情况下,我们把关系模式表示为 R(U) 或 R(A,B)。其中,R 表示关系名,U 表示属性集合,A、B 代表 U 中的属性。

将 E-R 图转换为关系模式的步骤如下。

1)把每个实体都转化为关系模式 R(A,B) 形式

以酒店管理系统为例,实体 客人 和 客房 分别可以使用关系模式表示如下。


2)建立实体间关系的转换

实体间的关系分成一对一、一对多、多对多三种,当两个实体各自转化为关系模式后,实体间关系的转换如下。


多对多的转换:把两个实体中的主键和关系的属性放到另一个关系模式中,会多生成一个关系模式。

酒店管理系统中客房与客人的关系为一对多关系,转换后的结果如下。


数据库模型图

数据库模型图主要用来说明数据库有哪些表,表中有哪些属性以及表与表之间的关联关系。

将 E-R 图转化为数据库模型图主要执行以下 4 步:


为了数据编码的兼容性,建议使用英文字段。为了直观可见,我们在英文括号内注明了对应的中文含义。下面将 E-R 图中的 客房 和 客人 两个实体转换为数据库模型图,如下图所示。

数据库逻辑结构设计阶段

图中的 PK 表示表的主键列,FK 表示外键列。需要注意的是,表中的 ID 编号列只能用作主键或外键,否则该列没有实际含义。如客人表中的 GuestID 列,客房表中添加的 RoomID 列。

在数据库模型图中也可以很好的体现实体之间的映射关系。比如,客房和客人之间是一对多关系,对于一对多关系的两个实体,一般会各自转换为一张表,并且后者对应的表引用前者对应的表,即客人(GuestRecord)表中的客房号来自客房(Room)表中的客房号,它们之间应建立主键、外键关系,如上图所示。

一般来说,一对多关系是一个表中的主键对应另一个表中可重复字段,主键的值是不能重复的,而关联的字段是可以重复的,这样就会存在一个值对应一个值或者一个值对应多个值。在一对一关系中,一般是一个主键对应一个不可重复的字段,显然只能一个值对应一个值。

多对多映射关系也是比较常见的。要表示多对多关系,除了将多对多关系中的两个实体各自转换为表外,一般还会创建第三个表,称为连接表。它将多对多关系划分为两个一对多关系,并且将这两个表的主键都插入到第三个表中。

例如,订单表和产品表有多对多关系,这种关系通常通过与 订单明细 表建立两个一对多关系来定义。一个订单可以有多个产品,每个产品可以出现在多个订单中。关于这一点可以在以后的数据库设计实例中慢慢理解。

24057.html

html