购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 关系模型

关系数据库使用关系模型组织数据,这种思想源于数学,最早提出类似方法的是CODASYL于1962年发表的“信息代数”一文,1968年David Child在计算机上实现了集合论数据结构。而真正系统、严格地提出关系模型的是IBM的研究员Edgar Frank Codd,他于1970年在 Communications of the ACM 上发表了题为“A Relational Model of Data for Large Shared Data Banks”的论文,开创了数据库系统的新纪元。之后,他连续发表了多篇论文,奠定了关系数据库的理论基础。

关系模型由关系模型的数据结构、关系模型的数据操作和关系模型的数据完整性约束三部分组成,这三部分也称为关系模型的三要素。

3.1.1 数据结构

关系模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。

关系系统要求让用户所感觉的数据就是一张张表。在关系系统中,表是逻辑结构而不是物理结构。实际上,系统在物理层可以使用任何有效的存储结构来存储数据,比如有序文件、索引、哈希表、指针等。因此,表是对物理存储数据的一种抽象表示——对很多存储细节的抽象,如存储记录的位置、记录的顺序、数据值的表示以及记录的访问结构等,对用户来说都是不可见的。

3.1.2 数据操作

关系模型给出了关系操作的能力,关系模型中的数据操作如下。

1)传统的关系运算:并(union)、交(intersection)、差(difference)和广义笛卡儿乘积(extended cartesian product)。

2)专门的关系运算:选择(select)、投影(project)、连接(join)和除(divide)。

3)有关的数据操作:查询(query)、插入(insert)、删除(delete)和更改(update)。

关系模型的操作对象是集合(或关系表),而不是单个的数据行,也就是说,关系模型中操作的数据以及操作的结果(查询操作的结果)都是完整的集合(或关系表),这些集合可以是只包含一行数据的集合,也可以是不包含任何数据的空集合。而在非关系模型数据库中典型的操作是一次一行或一次一个记录。因此,集合处理能力是关系模型数据库区别于非关系模型数据库的一个重要特征。

在非关系模型中,各个数据记录之间是通过指针等方式链接的,当要定位到某条记录时,需要用户自己按指针的链接方向遍历查找,这种查找方式称为用户“导航”。而在关系模型中,由于是按集合进行操作,因此,用户只需要指定数据的定位条件,数据库管理系统就可以自动定位到该数据记录,而不需要用户来导航。这也是关系模型在数据操作上与非关系模型的本质区别。

例如,若采用层次模型,对于图2-6所示的层次结构,若要查找计算机学院软件工程教研室的张海涛老师的信息,则首先需要从根结点的“学院”开始,根据“计算机”学院指向的“教研室”结点的指针,找到“教研室”层次,然后在“教研室”层次中逐个查找(这个查找过程也许是通过各结点间的指针实现的),直到找到“软件工程”结点,然后根据“软件工程”结点指向“教师”结点的指针,找到“教师”层次,最后再在“教师”层次中逐个查找教师名为“张海涛”的结点,此时该结点包含的信息即所要查找的信息。这个过程的示意图如图3-1所示,其中的虚线表示沿指针的逐层查找过程。

图3-1 层次模型的查找过程示意图

如果是在关系模型中查找信息,比如在表3-1所示的“学生”关系中查找经济管理学院学号为202102002的学生的详细信息,用户只需提出这个要求即可,其余的工作就交给关系数据库管理系统来实现。对用户来说,这显然比在层次模型中查找数据要简单得多。

数据库数据的操作主要包括四种:查询、插入、删除和更改数据。关系数据库中的信息只有一种表示方式,就是表中的行列位置有明确的值。关系数据库中没有链接一个表到另一个表的指针。在表3-1和表3-2所示关系中,表3-1的第1行数据与表3-2中的第1行、第2行数据有联系,因为学号为“202101001”的学生借了两次图书。但在关系数据库中这种联系不是通过指针来实现的,而是通过表3-1中“学号”列的值与表3-2中“学号”列的值关联的(学号值相等)。但在非关系数据库中,这些关联关系一般通过指针实现,这种指针对用户来说是可见的。因此,在非关系数据库中,用户需要知道数据之间的指针链接关系。

表3-1 学生

表3-2 借阅

需要注意的是,当我们说关系数据库中没有指针时,并不是指在物理层没有指针,实际上,在关系数据库的物理层也使用指针,但所有这些物理层的存储细节对用户来说都是不可见的,用户所看到的物理层就是存放数据的数据库文件,他们能够看到的就是这些文件的文件名、存放位置等上层信息,而没有指针这样的底层信息。

关系操作是通过关系语言实现的,关系语言的特点是高度非过程化的。

3.1.3 数据完整性约束

在数据库中数据的完整性是指保证数据正确性的特征。数据完整性是一种语义概念,它包括以下两个方面:

1)与现实世界中应用需求的数据的相容性和正确性。

2)数据库内数据之间的相容性和正确性。

例如,每个学生的学号必须是唯一的,性别只能是“男”和“女”,学生所借的图书必须是图书馆中已有的图书等。因此,数据库是否具有数据完整性特征关系到数据库系统能否真实地反映现实世界情况,数据完整性是数据库的一个非常重要的内容。

数据完整性由一组完整性规则定义,而关系模型的完整性规则是对关系的某种约束条件。在关系模型中一般将数据完整性分为三类,即实体完整性、参照完整性(也称为引用完整性)和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束,是系统级的约束。用户定义的完整性主要是限制属性的取值在有意义的范围内,比如限制性别的取值范围为“男”和“女”。这个完整性约束也称为域的完整性,它属于应用级的约束。数据库管理系统应该提供对这些数据完整性的支持。 22Qt9dMdrq8LNoNa24qzGN25fCGUXrY051jic98K3xQgICiWCHR+moQxsEaoyfPQ

点击中间区域
呼出菜单
上一章
目录
下一章
×