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

简介:

本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第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所示,其中的虚线表示沿指针的逐层查找过程。

screenshot

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

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

3.1.3 数据完整性约束

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

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
1月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
83 4
|
6月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
4月前
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
221 75
|
1月前
|
人工智能 关系型数据库 分布式数据库
让数据与AI贴得更近,阿里云瑶池数据库系列产品焕新升级
4月9日阿里云AI势能大会上,阿里云瑶池数据库发布重磅新品及一系列产品能力升级。「推理加速服务」Tair KVCache全新上线,实现KVCache动态分层存储,显著提高内存资源利用率,为大模型推理降本提速。
|
3月前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
3月前
|
JSON Java 关系型数据库
Hutool创建数据源工厂动态查询不同数据库不同数据表的数据
Hutool创建数据源工厂动态查询不同数据库不同数据表的数据
65 2
|
2月前
|
SQL Java 数据库连接
【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢
由于网络带宽不足导致的jdbc向yashandb插入数据慢

热门文章

最新文章