关系模型

来自计算思维百科
跳转至: 导航搜索

关系模型是目前数据库系统广泛采用的一种重要的数据模型。美国IBM公司的研究员E.F.Codd于1970年发表了题为《大型共享系统的关系数据库的关系模型》(A Relation Model of Date for Large Shared Date  Banks)的论文,文中首次提出了数据库系统的关系模型,开创了数据库的关系方法和数据规范化理论的研究,为此他获得了1981年的图灵奖。1977年IBM公司研制的关系数据库System R,其后又进行了不断的改进和扩充,出现了基于System R的数据库系统SQL/DB。

基本概念

关系模型是目前数据库系统广泛采用的一种重要的数据模型。美国IBM公司的研究员E.F.Codd于1970年发表了题为《大型共享系统的关系数据库的关系模型》(A Relation Model of Date for Large Shared Date  Banks)的论文,文中首次提出了数据库系统的关系模型,开创了数据库的关系方法和数据规范化理论的研究,为此他获得了1981年的图灵奖。1977年IBM公司研制的关系数据库System R,其后又进行了不断的改进和扩充,出现了基于System R的数据库系统SQL/DB。

20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,非关系系统的产品也大都加上了关系接口。关系数据库已成为应用广泛的数据库系统,如小型数据库系统dBase、FoxPro和Access,大型数据库系统Oracle、DB2、SQL Server和Sybase等都是关系数据库系统。

关系模型(Relational Model)是用二维表结构来表示实体以及实体之间的联系,如表1所示。关系模型是以关系数学理论为基础,其操作的对象和结果都是二维表,这种二维表就是关系。

表1  图书表

图书编号

书名

作者

出版社

出版日期

2010070104

计算科学导论(第三版)

赵致琢

科学出版社

2006-6-1

2010070105

计算科学导论教学辅导

刘坤起

科学出版社

2005-8-1

2010070106

计算机科学实验教程(第1分册)

张继红

科学出版社

2005-8-1

2010120107

计算机导论(第二版)

姚爱国

武汉大学出版社

2010-8-1

2010120203

C++程序设计教程

钱  能

清华大学出版社

2010-11-1

2010070301

多媒体计算机技术基础及应用

钟玉琢

高等教育出版社

2009-8-1

2010070302

多媒体技术教程(第3版)

胡晓峰

人民邮电出版社

2009-4-1

关系模型的元素 

关系

一个关系就是一张二维表,每个关系有一个关系名。对关系的描述称为关系模式,一个关系模式对应一个关系结构。其格式为:

关系名(属性名1,属性名2,……,属性名n

在具体的关系数据库管理系统中,表示为表结构:

表名(字段名1,字段名2,……,字段名n

元组

在一个二维表中,水平方向的行称为元组,每一行是一个元组。元组对应表中的一条具体记录。例如图书表中的一本图书记录即为一个元组。

属性

二维表中垂直方向的列称为属性,每一列有一个属性名,相当于记录中的一个字段。每个字段的数据类型、宽度等在创建表的结构时规定。例如,图书表中有图书编号、书名、作者、出版社和出版日期等字段名及其相应的数据类型组成表的结构。

域是属性的取值范围,即不同元组对同一个属性的取值所限定的范围。例如,姓名的取值范围是文字字符;性别只能从“男”、“女”两个汉字中取一;逻辑型属性婚否只能从逻辑真或逻辑假两个值中取值。

关键字

关键字的值能够唯一标识一个元组的属性或属性的组合。例如图书表中的图书编号可以作为标识一条记录的关键字,而出版社字段不能作为唯一标识的关键字。

外部关键字

如果表中的一个字段不是本表的主关键字,而是另外一个表的主关键字和候选关键字,这个字段(属性)就称为外部关键字。

关系模型优点与特点

优点

关系模型具有下列优点:①关系模型与非关系模型不同,它建立在严格的数学概念之上,具有坚实的理论基础;②关系模型的概念单一。无论是实体还是实体之间的联系都用关系来表示,对数据的检索结果也是关系(即表);③关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。当然,关系模型也有缺点,其中最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此,为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的负担。

特点

关系模型看起来简单,但是并不能将日常手工管理所用的各种表格,按照一张表一个关系直接存放到数据库系统中。在关系模型中对关系有一定的要求,关系必须具有以下特点:

①关系必须规范化。所谓规范化是指关系模型中的每一个关系模式都必须满足一定的要求,最基本的要求是每个属性必须是不可分割的数据单元,即表中不能再包含表;

②在同一个关系中不能出现相同的属性名,即不允许一个表中有相同的字段名;

③关系中不允许有完全相同的元组,即冗余;

④在一个关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义;

⑤在一个关系中列的次序无关紧要。任意交换两列的位置不影响数据的实际含义。

关系模型与层次模型、网状模型的本质区别在于数据描述的一致性,模型概念单一。在关系数据库中,每一个关系都是一个二维表,无论实体本身还是实体之间的联系均用称之为“关系”的二维表来表示,使得描述实体的数据本身能够自然地反映它们之间的联系。而传统的层次模型数据库和网状模型数据库是使用链接指针来存储和体现联系的。表2比较了三种数据模型的优缺点。

表2 层次模型、网状模型和关系模型的优缺点

数据模型

占用内存空间

处理效率

设计弹性

数据设计复杂度

界面亲和力

层次模型

网状模型

中高

中底

关系模型

实体之间的联系类型

数据库设计中,将客观存在并可相互区别的事物称为实体,实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、学生的一次选课等。

现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系(relationship)和实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系,而实体之间的联系是指不同实体集之间的联系。两个实体之间的联系可分为如下3种类型。

⑴一对一联系(1:1)。如果对于实体集 A 中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1 : 1。例如,电影院中观众和座位之间、乘车旅客和车票都是一对一的联系。

⑵一对多联系(1:n)。如果对于实体A中的每一个实体,实体集B 中有n个实体(n³0)与之联系,反之,对于实体B中的每一个实体,实体集A中至多只有一个与之相联系,则称实体集A与实体集B有一对多联系。记为1 : n。例如,公司对部门之间、班级对学生之间都是一对多联系。

⑶多对多联系(m:n)。如果对于实体A中的每一个实体,实体集B中有n 个实体(n³0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m 个实体(m³0)与之联系,则称实体集A与实体集B具有多对多联系。记为m : n。例如,课程与学生之间、图书与读者之间都是多对多的联系。实体之间的联系可以用E-R方法(即实体-联系方法)图进行表示,图1即为学生选课的E-R图。

5.2.1.png

图1 学生与课程之间联系的E-R图

分析实际应用中所包含的实体及实体之间的联系,则可以建立该应用的E-R模型。然后根据E-R模型,通过转化则可得到对应的关系模型。不同类型的实体之间的联系,均能通过关系模型进行表达。

若两个实体存在一对一的联系,则每个实体可用一个关系表示,并将一个实体的关键字作为属性加入到另一实体的关系中。例如,学生与学院的关系,属于一对一的关系,则可设计如下的二维关系表:

① 学生关系表:学生(学号,姓名,性别,出生日期,学院名称,…)

② 学院关系表:学院(学院名称,学院地址,联系电话,…)

若两个实体存在一对多的联系,则每个实体可用一个关系表示,并将“多”所对应的实体的关键字作为属性加入到“一”所对应的实体关系中。例如教师与课程之间的联系,属于一对多的联系,则可设计如下的二维关系表:

① 教师关系表:教师(教工号,教师姓名,职称,学院名称,课程号,….)

② 课程关系表:课程(课程号,课程名,课程时间,课程地点…)

若两个实体存在多对多的联系,则每个实体用一个关系表示外,还需另外增加一个关系表是两个实体之间的关联。例如,学生与课程之间存在多对多的联系,那么可以建立如下的二维关系表来描述该模型。

①学生关系表:学生(学号,姓名,性别,出生日期,学院名称,…)

②课程关系表:课程(课程号,课程名,课程时间,课程地点…)

③选课关系表:选课(学号课程号,成绩,…)