要想弄清楚E-R图向关系模型的转换,首先要弄清楚什么是E-R图?以及什么是关系模型?

E-R模型

定义:ER模型,全称为实体联系模型实体关系模型实体联系模式图(ERM)(英语:Entity-relationship model)是概念数据模型的高层描述所使用的数据模型模式图

如下图就是一个ER模型的例子: 

关系模型 

 定义:用于数据库管理的关系模型(英语:Relational model)是基于谓词逻辑集合论的一种数据模型,广泛被使用于数据库之中。最早于1970年由埃德加·科德提出。

关系模型是第一个形式化的数据库模型。在它被定义之后,非形式化模型被用做描述层次数据库(层次模型)和网状数据库(网状模型)。层次和网状数据在关系数据库之前就存在了,但是只在关系模型被定义之后才作为模型来描述,用来建立比较的基础。

样例数据库

一些关系变量和它们的属性的一个理想化和非常简单的例子:

Customer(Customer ID, Tax ID, Name, Address, City, State, Zip, Phone)

Order(Order NoCustomer IDInvoice No, Date Placed, Date Promised, Terms, Status)

Order Line(Order NoOrder Line NoProduct Code, Qty)

Invoice(Invoice NoCustomer IDOrder No, Date, Status)

Invoice Line(Invoice NoLine NoProduct Code, Qty Shipped)

Product(Product Code, Product Description)

在这个设计中我们有六个关系变量:Customer, Product, Order, Order Line, Invoice,和Invoice Line.粗体字有下划线的属性是候选键 (码)。非粗体字有下划线的属性是外键 (码)

ER图的转换

我们知道ER图是由实体实体的属性实体之间的联系组成。将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式 。

实体集向关系模式的转换 

实体集的转换规则:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就的码。 

 

例:学生实体可以转换为如下关系模式:

学生(学号,姓名,性别,出生日期,所在系,年级)

两个实体型之间的联系集向关系模式的转换 

 1:1联系的转换

1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

  • 如果转换为一个独立的关系模式,则与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,每个实体的主码均是该关系的候选码。

  • 如果与某一端对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的主码和联系本身的属性。

实例:

 

1:n联系的转换方法 

 1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

  • 若转换为一个独立的关系模式,则与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,而关系的主码为n端实体的主码。

  • 若与n端关系模式合并,则在n端实体集中增加新属性,新属性由联系对应的1端实体集的主码和联系自身的属性构成,而关系模式的主码不变。

实例: 

 

m:n联系的转换方法 

 与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。

实例: 

 

 同一实体型之间的联系集向关系模式的转换

 同一实体型的实体间的联系即自联系,也可按上述1:1、1:nm:n三种情况分别处理。

 1:n联系的转换

 

 m:n联系的转换

 

多实体型之间的联系向关系模式的转换 

一般地,两个以上的实体型间也存在着1:1、1:n和m:n三种情况,转换方法一般遵循以下原则: 

  • 1:n的多元联系:修改1端实体集对应的关系,即将与联系相关的其他实体集的码和联系自身的属性作为新属性加入到1端实体集中。
  • m:n的多元联系:新建一个独立的关系,多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。

 

 

弱实体集向关系模式的转换 

  • 强实体集和弱实体集的概念与存在依赖密切相关,强实体集的成员必然是支配实体,而弱实体集的成员是从属实体。
  • 由于弱实体不能独立存在,它必须依附于一个所有者实体,因此将弱实体集转换成关系模式时,弱实体所对应的关系中必须包含所有者实体的主码。

 

应用实例 

  • 按上述规则将E-R图向关系模式转换完成后,具有相同主码的关系模式可合并,主要目的在于减少系统中的关系个数,便于维护及保持数据的一致性。
  • 合并方法是将具有相同主码的关系模式中,某个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。

 例3-12 某工程的E-R图:

分析: 

 

参考原文链接:https://www.cnblogs.com/vvlj/p/12750853.html 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐