概念数据模型到逻辑数据模型的转化(转)

  前面的两篇博客分别介绍了概念数据模型、逻辑数据模型以及物理数据模型和逻辑数据模型常用的三种数据模型,这篇博客介绍在数据库的设计过程当中将概念数据模型转化为逻辑数据模型的方法,以及涉及的一些基本的概念。本篇文章所介绍的主要是针对关系数据库中概念数据模型和逻辑数据模型之间的转换。数据库

  1、码

  首先,说明一下数据库中常常用到的用于标示一条记录(元组)的码的概念,码又分为超码、候选码、主码。ui

  超码:在一个关系中,能够用来惟一标识一个元组的属性的集合称之为超码。.net

  候选码:在一个关系中,可以用来惟一标识一个元组的最少属性集合称之为候选码。设计

  主码:在一个关系中,若是用来惟一标识一个元组的候选码中只有一个属性,则这个属性称之为主码。3d

  三者之间的关系以下:超码是候选码的超集,候选码是主码的超集。下面以一个讲解清楚。假设一个关于学生信息的表格student,其中的属性有,stu_id(学号),name(姓名),age(年龄),address(地址)。那么超码能够由全部的属性组成的集合构成,例如(stu_id,name,age,adress)、(stu_id,name)、(stu_id,age)等均可以叫作student的超码;候选码为(stu_id);由于候选码只是由其中的一个属性组成,所以这个候选码又能够称之为主码。blog

  2、概念数据模型到逻辑数据模型的转化(以关系数据模型为例)

  前面博文讨论过,概念数据模型是用E-R图表示的,其中的三要素是实体、属性、联系。将概念数据模型转化为逻辑数据模型的步骤其实就是将E-R图中的各个部分转化为逻辑数据模型中使用的具体数据模型的各个部分。若是没有特别的交代,下面所说的逻辑数据模型指代的是关系数据模型。将概念数据模型转化为逻辑数据模型的大致规则以下:概念数据模型中的实体转化为逻辑数据模型中的关系,对应的实体的属性转化为关系数据模型关系的属性(也就是列);根据实体之间联系的不一样具备不一样的处置策略。get

  实体之间的联系分为1:一、1:n、和m:n。下面分别对这三种联系转化为关系的步骤作讨论。博客

  1:1:这种关系是最好理解,同时也是最容易处理的关系。实体之间存在着一一对应的关系。在这种联系中,能够建立新的关系描述这种联系,这事将两个实体的主码做为新的关系的候选码;固然也能够没必要建立新的关系,将一方关系的主码做为另外一方关系的外键。例如两个关系A和B存在1:1联系,那么能够将A的主码做为B的外键,同时将B的主码做为A的外键,具体状况依据于具体的环境。以所作的红包的小练习为例,注册用户和帐户之间存在着1:1的联系,用户管理者帐户。E-R图以下:方法

                                         

                                                  图 1 用户与帐户的E-R图im

  用户与帐户之间存在一一对应关系,可是建立帐户的时候须要用户已经存在,所以这种状况下须要将用户的"uid"做为帐户的外键,那么对应的关系以下:

                              

                                               图 2 用户和帐户的关系

  由于,在这个例子中额外的建立关系会致使没必要要的额外存储空间的增长,所以再也不从新建立额外的关系。

  1:n:一个实体能够对应额外的多个实体。这种联系中能够没必要建立额外的关系表示两者之间的1:n的联系,此时只须要将“1”方的关系的主码放入到“n”方的关系的属性中做为其外键便可,同时将联系的属性加入到“n”方的关系中;固然也能够建立额外的关系表示两者之间的联系,那么“1”和“n”方的关系的主码做为候选码,同时将联系的属性加入到新创建的关系中。可是,这种状况下额外的建立新的关系显得冗余。仍是以所练习的红包项目为例,一个大的红包根据指定的数值能够派生出不少的小红包。这两个实体分别对应着一个关系,其E-R图以下:

                                   

                                                图 3 小红包的大红包的E-R图

  由图3得知,小红包必须依赖大红包存在,所以在小红包中将大红包的bid做为小红包的外键便可,这样就没必要创建额外的关系了。对应的关系以下:

               

                                              图 4 大红包和小红包对应的关系

  m:n:对于这种多对多的联系,必须创建新的关系以描述这种联系。“联系”对应的关系的属性中至少包含他说关联的双方实体的“主键”,若联系也有自身的属性,那么该属性同样归入新创建的关系的属性中。因为红包项目中没有遇到相似的联系,所以以最经典的学生选课系统为例。很明显学生选课系统中的实体对应有学生和课程,一个学生能够选修多门课程,一门可能可被多个学生选修,所以两个实体之间是一种多对多的关系,对应的E-R图以下:

                                       

                                             图 5 学生与课程多对多关系图 

                        

                                          图 6 学生与课程对应关系

  在上例中,学生与课程之间存在着多对多的联系,所以创建起新的选课关系来描述这种联系。在新的关系中将学生的主码和课程的主码做为选课的候选码,学生的主码和选课的主码的组合会出如今对应的选课关系中。若是此时要查询一个学生的成绩,须要使用联合查询的方式。

转载自:http://www.javashuo.com/article/p-fvuweqyw-nm.html

相关文章
相关标签/搜索