首页 理论教育使用ER图转换为表方法,MySQL数据库设计与实现

使用ER图转换为表方法,MySQL数据库设计与实现

【摘要】:E-R图是用来描述现实世界的模型,通过E-R图可以更准确、更方便地了解用户的需求。本节将介绍如何将E-R图转换为关系型数据库中的表,在1.4节将介绍如何审核表的结构是否规范。例如,可将“学员”实体转换为一个表,如图1.6所示。图1.9M∶N关系的转换

E-R图是用来描述现实世界的模型,通过E-R图可以更准确、更方便地了解用户的需求。E-R图与具体的数据库无关,在实际开发中,最终要用一个具体的数据库来实现ER图所描述的数据需求。本节将介绍如何将E-R图转换为关系型数据库中的表,在1.4节将介绍如何审核表的结构是否规范。

1.一个实体转换为一张表

把E-R图转换为数据库中的表时,每种实体都要转换为一张表,实体的属性就是表的字段,实体的关键字就是表的关键字。例如,可将“学员”实体转换为一个表,如图1.6所示。

图1.6 一个实体转换为一个张表

为了描述方便,上图的箭头表示转换,箭头右边列出了转换后的表,括号中为表的字段,其中带实线下划线的字段为主键。

2.一对一关系(1∶1)的转换

一对一关系有以下两种转换方式:

(1) 把关系转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,其中每个实体的关键字均是该表的候选键。

(2) 与任意一端的实体所对应的表合并。可将相关的两个实体分别转换为两张表,并在任意一张表中加入另一张表的主键。

例如,若某工厂的每个仓库只配备了一名管理员,那么仓库实体与管理员实体之间便为1∶1关系。根据以上介绍的原则,可以进行如图1.7所示的转换。

图1.7 1∶1关系的转换

(www.chuimin.cn)

图1.7、图1.8、图1.9中带实线下划线的字段为主键,带虚线下划线的字段为外键。

在实际设计中究竟采用哪种方案可视具体的应用而定。如果经常要在查询仓库的同时查询此仓库管理员的信息,就可选用前一种转换(只包含两张表),以减少查询时的连接操作。反之,如果在查询管理员时要频繁查询仓库信息,则选用后一种转换(包含三张表)。总之,在模型转换出现较多的方案时,效率是最重要的取舍因素。

3.一对多关系(1∶N)的转换

一对多关系也有两种转换方式:

(1) 将1∶N关系转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,该表的关键字为N端实体的关键字。

(2) 将1∶N关系与N端实体所对应的表合并。1端的关键字及关系本身的属性并入N端实体所对应的表中即可。

在图1.8中,实体“专业”和“学生”之间的关系为1∶N,使用以上的原则进行转换。

图1.8 1∶N关系的转换

4.多对多关系(M∶N)的转换

M∶N关系必须转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,该表的关键字为关系相连的两个实体关键字的并集。

例如,在学校中,一名学生可以选修多门课程,一门课程也可为多名学生选修,则实体“学员”与“课程”之间的关系为多对多的关系,其转换方法如图1.9所示。

图1.9 M∶N关系的转换