程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数据库系统原理:关系数据结构

balukai 2025-01-06 11:10:20 文章精选 6 ℃

基于关系模型的关系数据库是应用最广泛的数据库系统,因此需要深入学习关系模型的基本概念和原理。

关系模型由关系数据结构、关系操作和关系完整性约束三部分组成。学习关系数据结构,包括关系的定义及相关概念。

一、关系的基本概念

关系数据模型的思想由IBM公司的E.F.Codd于1970年在他的一系列论文中提出,以后的几年里陆续出现了以关系数据模型为基础的数据库系统,称为关系数据库系统。Codd是关系数据库之父,他首次将关系引入到数据建模中,创建了关系数据库的基本理论,如关系代数、关系演算,定义了连接、选择和投影等关系操作,提出了关系数据库设计的指导方针、关系的规范化理论等等。关系数据库系统核心是关系数据模型,关系数据模型是一个逻辑模型,而逻辑模型由三部分组成,同样,关系数据模型也由三部分组成的。

关系数据模型由关系数据结构、关系操作和关系完整性约束三部分组成。

关系数据模型也可以简称为关系模型。在关系模型中,数据结构是比较重要的概念,用来刻画一个模型的性质,是最重要的一个方面。关系模型中的数据结构只是单一的数据结构即关系,即现实世界的实体(或对象)以及实体间的联系均用关系表示。

在用户看来,关系就是一张二维表格。

属性和属性值:列和列的值

域:一组具有相同数据类型的值的集合

关系模式:二维表的表头

元组:二维表中的每一行

关系或实例:行的集合

元数(列数):属性的个数

基数(行数):元组的个数

关系模型是建立在集合论的基础上的,其中最重要的理论基础就是笛卡尔积。笛卡尔积是域上的一种集合运算。

笛卡尔积可表示为一张二维表,表中每行对应一个元组,表中每一列对应一个域。

例如:给出三个域:

D?=导师集合=张清玫,刘逸

D?=专业集合=计算机专业,信息专业

D?=研究生集合=李勇,刘晨,王敏

如图所示,D? 、D?、D?的笛卡尔积是由三列组成的,分别对应的导师列、专业列以及学生列。在这个二维表中,笛卡尔积是一个三元组,每个列来自一个域的取值,每一行称为一个元组,每一项称为一个分量,笛卡尔积的基数分别等于D?的基数 ×D?的基数×D?的基数即2*2*3,所以笛卡尔积的结果是12行。

笛卡尔积就是我们关系模型中使用的关系结构吗?

笛卡尔积可以在关系模型中建立关系之间的联系。

不是。它是一个全组合,比如是张清玫一定是属于两个专业、带所有的学生,而每一个导师都是这样,显然这不是十分符合语义的。

所以,假设一个导师只有一个专业,一个研究生只能师从于一个导师,一个导师可带多个研究生。在这样的语义下,上述笛卡尔积中许多元组是没有实际意义的,取出有实际意义的元组来构造导师与研究生的关系,并取名为SAP关系。

那么关系SAP中就只含有三行记录,这是真实的语义的一个表达。

二、关系的定义

关系是笛卡尔积的有限子集,关系也是一张二维表,表中每行对应个元组,表中每列对应一个域。必须对每一列取一个名字,称为属性。

关系定义:

把D1×D2×…Dn的子集称为域D1,D2,…Dn上的关系,表示为:

R(D1,D2,…,Dn),其中R表示关系名。

一般,属性的名字和域的名字是相同的。

三、关系的性质

当把关系作为关系模型的数据结构的时候,需要对关系给予限定或者是扩充。那么关系中可能有一些性质与数学中的集合概念不同,有些性质与工作和生活中使用的表格不同。

关系是一个元数(列数)为K的元组的有限集合,是一种规范化了的二维表。因为数学中可以表达无限的关系;但是在计算机中,由于受到存储器的限制,关系不是无限的,它是一个有限的关系。关系模型要求关系是一种规范化的二维表。

关系模型要求关系必须规范化,即满足一定的规范条件。规范条件中最基本的一条是:关系的每一个分量必须是一个不可分的数据项。

如图所示的例子是一个非规范化的关系,其中它是由三列组成的,而它的最后一列又被分成了两列。这样的关系在关系数据库中是不允许的,关系模型是不能存储的。也就是说,在关系中的性质不允许表中有组合数据、不允许表中嵌入表,属性是不能再分解的。

关系的性质:

(1)每个分量必须是不可分的量;

(2)列的分量是同一类型的数据,来自同一域;

(3)每一列为一个属性,属性有属性名;(同一关系中的属性不能同名,但不同的列可以来自同一个域;通过为每个列附加属性名的方法可以消除元组的有序性)

(4)行的次序无关,列的次序无关;

(5)一个关系中不存在两个元组在各个分量(或属性)上完全相同。(这是通过在关系指定主键、约定主键具有实体完整性来保证的。)

如图五所示,图中的R1、R2和R3是同一个关系。R1和R2是把A?列和A?列列的列的顺序进行交换。关系与列的次序无关,所以R1和R2是同一个关系;R2和R3列的次序是一样的,是把第一行和第三行的数据进行了交换,关系与行的次序无关,所以R2和R3是同一个关系;因此,R1、R2和R3是同一个关系。

关系的性质是在关系模型中采用关系作为数据结构获得了巨大的成功。

最近发表
标签列表