E-R模型转化成关系模型

来源:互联网 发布:数字三角形问题 算法 编辑:程序博客网 时间:2024/06/05 19:50

         呵呵,这篇博客,依旧是查缺补漏总结的博客。E-R模型转化成关系模型,这个知识点同样是软考和自考必考的内容哦。本着学习的精神,重新总结一下。

         E-R模型想必大家已经十分了解了,它的组成成分是实体、属性和联系。关于E-R模型的具体概念这里就不再赘述。下面提一下关系模型。在最初学习关系模型的时候,我也不是能很确切的理解关系模型究竟所为何物。所以,将关系模型厄补了一下。我们不理解关系模型,可以将关系模型、层次模型和网状模型对比着来学习。其中,这三种模型都是表示数据的一种方法。它们三者之间具体详细的区别我不一一详述,笼统地说为了好区分,我们可以这样理解:层次模型是一种树形结构,网状模型是一种网络结构,关系模型是一种表格结构。我们可以把层次模型想象成是树,网状模型想象成蜘蛛网的样子,而关系模型是一种表格的结果,我们所建的数据库的表就是一种关系模型。

         下面还要明确一个问题,那就是你问过自己没有,为什么要把E-R模型转化成关系模型呢?首先,E-R模型描述了系统中实体集与实体集之间的关系,它只能说明实体间语义的联系,还不能进一步说明详细的数据结构。因此,遇到一个比较实际的问题的时候,我们往往先设计一个E-R模型,再将E-R模型转化成为计算机可以实现的数据模型,而这个过程,也是一个由易到繁的过程。这同时也为我们解决问题提供了一个良好的思路,就是解决一个复杂问题的时候,我们不一定要一步到位的去解决问题,往往可以先把这个问题容易化,再在容易的基础上慢慢向终点靠拢。

         好了,下面我们切入正题,E-R模型如何转换成关系模型,这里我们分成三种情况进行讲解,分别是一对一,一对多和多对多。

一、一对一的情况:有两种方法解决这个问题。第一个方法:可以单独对应一个关系模式,由各实体的主码构成关系模式,而关系模式的主码可以是任一个实体集的主码。而实体中属性照常写就可以了第二个方法:实体中的属性照常写,然后将一方实体集的主码加到另一方实体集对应的关系模式中。面举个例子我们来看一下:

         在这个例子中,利用方法一,先将两个实体正班长和班级的属性照着写下来,然后将关系模式“属于”的属性写出来——即两边实体的主码,其中关系模型“属于”的主键可以是两端实体集的任一主码。利用方法二,也是先将两端实体的属性照着写下来,然后注意这一点,将一端实体的主码加到另一端实体的主码中,图例中就是将“班级”实体的主码加入到“正班长”关系属性中。

 

二、一对多的情况:这种情况可以跟一对一的情况对比着学习。第一个方法:同一对一的方法一是差不多的,只是对应的关系模式中,其主码不再是任一实体的主码就可以,而是必须指定n端的主码为关系模式的主码。第二个方法:同一对一的方法二也是差不多的,但是值得强调的是,必须将1端的主码加到n端的关系模式中,而且n端的主码仍然为该关系模式中的主码。同样,我们也来举个例子。

          如图,在方法一中,关系模式的主键是n端学生实体的主键。在方法二中,将一端对应的实体主键“班级编号”加入到了对应n端“学生”的关系模式中,并且,n端的主码仍然为该关系模式的主码。

 

三、多对多的情况:对于多对多的联系,似乎是这三种类型中最简单的一个了。其转换原则为:每个实体集对应一个关系模式,对于多对多的联系,其单独对应一个实体集,该实体集的主码由各实体集的主码共同构成。我们同样来看一个例子。

         在上图这个例子中,每个实体集都对应一个关系模式,其联系“选课”也对应一个关系模式,这个关系模式的主码便是两端实体集的主码。关于E-R模型转化成关系模型我们就学到这里,其实很简单,只要掌握了要领,做几个例子,就会很好的上手,就会达到掌握的目的了。

 

原创粉丝点击