《数据库原理与应用(第3版)》——3.1 关系数据模型的组成

3.1 关系数据模型的组成

关系数据库使用关系数据模型组织数据。这种思想源于数学,最早提出类似方法的是COD-ASYL(数据系统语言会议)于1962年发表的“信息代数”一文,之后,David Child于1968年在计算机上实现了集合论数据结构。
而真正系统、严格地提出关系数据模型的是IBM的研究员E.F.Codd,他于1970年在美国计算机学会会刊(《Communication of the ACM》)上发表了题为“A Relational Model of Data for Shared Data Banks”的论文,开创了数据库系统的新纪元。此后,他连续发表了多篇论文,奠定了关系数据库的理论基础。
关系数据模型由关系数据结构、关系操作集合和数据完整性约束三部分组成。

3.1.1 关系数据结构

关系数据模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。
关系系统要求让用户所感觉的数据就是一张张表,如2.3.3节所示的学生表和选课表。在关系系统中,表是逻辑结构而不是物理结构。实际上,系统在物理层可以使用任何有效的存储结构来存储数据,如有序文件、索引、散列表、指针等。因此,表是对物理存储数据的一种抽象表示——对很多存储细节的抽象,如存储记录的位置、记录的顺序、数据值的表示,以及记录的访问结构,如索引等,对用户来说都是不可见的。

3.1.2 关系操作

关系数据模型给出了关系操作的能力。关系数据模型中的操作包括:
传统的关系运算:并(Union)、交(Intersection)、差(Difference)、广义笛卡儿乘积(Extended Cartesian Product)。
专门的关系运算:选择(Select)、投影(Project)、连接(Join)、除(Divide)。
有关的数据操作:查询(Query)、插入(Insert)、删除(Delete)、修改(Update)。
关系模型的操作对象是集合,而不是单个的行,也就是操作的数据以及操作的结果都是完整的表(包括只包含一行数据的表,甚至不包含任何数据的空表)。而非关系型数据库系统中典型的操作是一次一行或一次一个记录。因此,集合处理能力是关系系统区别于其他系统的一个重要特征。
在非关系模型中,各个数据记录之间是通过指针等方式连接的,当要定位到某条记录时,需要用户自己按指针的链接方向逐层查找,我们称这种查找方式为用户“导航”。而在关系数据模型中,由于是按集合进行操作,因此,用户只需要指定数据的定位条件,数据库管理系统就可以自动定位到该数据记录,而不需要用户来导航。这也是关系数据模型在数据操作上与非关系模型的本质区别。
例如,若采用层次数据模型,对第2章图2-6所示的层次结构,若要查找“计算机学院软件工程教研室的张海涛老师的信息”,则首先需要从根节点的“学院”开始,根据“计算机”学院指向的“教研室”节点的指针,找到“教研室”层次,然后在“教研室”层次中逐个查找(这个查找过程也许是通过各节点间的指针实现的),直到找到“软件工程”节点,然后根据“软件工程”节点指向“教师”节点的指针,找到“教师”层次,最后在“教师”层次中逐个查找教师名为“张海涛”的节点,此时该节点包含的信息即所要查找的信息。这个过程的示意图如图3-1所示,其中的虚线表示沿指针的逐层查找过程。

而如果是在关系模型中查找信息,比如在表3-1所示的“学生”关系中查找“信息系学号为0521101的学生的详细信息”,则用户只需要提出这个要求即可,其余的工作就交给数据库管理系统来实现了。对用户来说,这显然比在层次模型中查找数据要简单得多。
关系模型的数据操作主要包括四种:查询、插入、删除和更改数据。关系数据库中的信息只有一种表示方式,就是表中的行列位置有明确的值。这种表示是关系系统中唯一可行的方式(当然,这里指的是逻辑层)。特别地,关系数据库中没有连接一个表到另一个表的指针。在表3-1和表3-2中,表3-1所示的学生表的第1行数据与表3-2所示的学生选课表中的第1行(当然也与第2、3、4行)有联系,因为0512101号学生选了课程。但在关系数据库中这种联系不是通过指针来实现的,而是通过学生表中“学号”列的值与学生选课表中“学号”列的值关联的(学号值相等)。但在非关系系统中,这些信息一般由指针来表示,这种指针对用户来说是可见的。因此,在非关系模型中,用户需要知道数据之间的指针链接关系。

需要注意的是,当我们说关系数据库中没有指针时,并不是指在物理层没有指针。实际上,在关系数据库的物理层也使用指针,但所有这些物理层的存储细节对用户来说都是不可见的,用户所看到的物理层实际上就是存放数据的数据库文件,他们能够看到的就是这些文件的文件名、存放位置等上层信息,而没有指针这样的底层信息。
关系操作是通过关系语言实现的,关系语言的特点是高度非过程化的。所谓非过程化是指:
用户不必关心数据的存取路径和存取过程,只需要提出数据请求,数据库管理系统就会自动完成用户请求的操作。
用户也没有必要编写程序代码来实现对数据的重复操作。

3.1.3 数据完整性约束

在数据库中,数据的完整性是指保证数据正确性的特征。数据完整性是一种语义概念,它包括两个方面:
1)与现实世界中应用需求的数据的相容性和正确性。
2)数据库内数据之间的相容性和正确性。
例如,学生的学号必须是唯一的,学生的性别只能是“男”和“女”,学生所选的课程必须是已经开设的课程等。因此,数据库是否具有数据完整性特征关系到数据库系统能否真实地反映现实世界的情况。数据完整性是数据库中非常重要的内容。
数据完整性由完整性规则定义,而关系模型的完整性规则是对关系的某种约束条件。在关系数据模型中一般将数据完整性分为三类,即实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束,是系统级的约束。用户定义的完整性主要是限制属性的取值范围,也称为域的完整性,这属于应用级的约束。数据库管理系统应该提供对这些数据完整性的支持。

时间: 2024-09-14 06:56:45

《数据库原理与应用(第3版)》——3.1 关系数据模型的组成的相关文章

《数据库原理与应用(第3版)》——导读

前 言 数据库技术起源于20世纪60年代末,经过几十余年的迅速发展,已经形成一套较完整的理论体系,产生了一大批商用软件产品.随着数据库技术的推广使用,计算机应用已深入到国民经济和社会生活的各个领域,这些应用一般都以数据库技术及其应用为基础和核心.因此,数据库技术与操作系统一起构成信息处理的平台已成为业界的共识.在计算机应用中,数据存储和数据处理是计算机最基本的功能,数据库技术为人们提供了科学和高效地管理数据的方法.从某种意义上讲,数据库技术的教学成为计算机专业教学的重中之重,数据库课程也成为很多

《数据库原理与应用(第3版)》——2.3 组织层数据模型

2.3 组织层数据模型 组织层数据模型是从数据的组织形式的角度来描述信息,目前,在数据库技术的发展过程中用到的组织层数据模型主要有:层次模型(Hierarchical Model).网状模型(Network Model).关系模型(Relational Model).面向对象模型(Object Oriented Model)和对象关系模型(Object Relational Model).组织层数据模型是按组织数据的逻辑结构来命名的,比如层次模型采用树形结构.而且各数据库管理系统也是按其所采用的

《数据库原理与应用(第3版)》——第3章 关系数据库

第3章 关系数据库 关系数据库是支持关系数据模型的数据库系统,现在绝大多数数据库系统都是关系型数据库管理系统.本章我们介绍关系数据模型的基本概念和术语.关系的完整性约束以及关系数据库的数学基础--关系代数.

OSGi原理与最佳实践(精选版)中第二个例子 找不到org.mortbay.jetty 这个Bundle 求解决办法??

问题描述 OSGi原理与最佳实践(精选版)中第二个例子找不到org.mortbay.jetty这个Bundle求解决办法?? 解决方案 解决方案二:看下下面帖子配置http://blog.sina.com.cn/s/blog_9671d5180101r5dg.html

创建Oracle数据库、数据库名与实例名与SID之间的关系(图文详解)

目录 目录 软件环境 前言 安装Oracle监听程序 启动停止监听程序 创建数据库 数据库名db_name 数据库实例名instance_name 数据库名与实例名的关系 操作系统环境变量ORACLE_SID 软件环境 操作系统 RHEL 6.1 软件环境 Oracle10gr2 前言 在上一篇RHEL6.1 安装 Oracle10gr2 (图文.解析)中记录了如何成功的在RHEL6.1安装Oracle10gr2,但是在安装的过程中没有创建数据库,本篇主要记录了如果创建数据库和监听程序. 安装O

jquery的ajax函数的原理是什么,jquery和ajax的关系是什么?

问题描述 jquery的ajax函数的原理是什么,jquery和ajax的关系是什么? jquery的ajax函数的原理是什么,jquery和ajax的关系是什么? 解决方案 历史遗留的原因,不同浏览器初始化ajax的方式不同,jquery的ajax对此做了封装.实现了异步调用.jquery是一个ajax的库,但是不是唯一的库. 解决方案二: 历史遗留的原因,不同浏览器初始化ajax的方式不同,jquery的ajax对此做了封装.实现了异步调用.jquery是一个ajax的库,但是不是唯一的库.

简析SQL Server数据库用视图来处理复杂的数据查询关系_MsSql

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之后,居然

SQL Server数据库用视图来处理复杂的数据查询关系

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之 后,居

简析SQL Server数据库用视图来处理复杂的数据查询关系

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之后,居然