《数据库技术原理与应用教程(第2版)》——3.5 信息世界与逻辑模型

简介:

本节书摘来自华章计算机《数据库技术原理与应用教程(第2版)》一书中的第3章,第3.5节,作者 徐洁磐 操凤萍,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 信息世界与逻辑模型

3.5.1 概述

信息世界是数据库的世界,该世界着重于数据库系统的构造与操作。信息世界由逻辑模型描述。

由于数据库系统不同的实现手段与方法,因此逻辑模型的种类很多,目前常用的有层次模型、网状模型、关系模型、面向对象模型、谓词模型及对象关系模型等。其中,层次模型发展最早并盛行于20世纪的60~70年代。网状模型出现稍晚,且具有比层次模型更为优越的性能,它盛行于20世纪70~80年代。关系模型的概念出现于1970年,但由于在实现上的困难,直到20世纪70年代后期才出现实用性系统,并在80年代开始实用化。面向对象模型出现于20世纪的80年代,在90年代开始实用化。谓词逻辑模型出现于20世纪70年代末期,它表示力强,表示形式简单,已成为演绎数据库及知识库的主要模型。面向对象模型与谓词逻辑模型既是概念模型又可作为逻辑模型。对象关系模型是一种关系模型的面向对象扩充,它的概念模型是扩充的E-R模型,它也可以被视为面向对象模型的特例。上面的5种逻辑模型分别与前面的四种概念模型相对应,它们的对应关系见表3-3。

image

本章将重点介绍关系模型。

3.5.2 关系模型简介

关系模型(relational model)的基本数据结构是二维表,简称表(table)。大家知道,表格方式在日常生活中应用很广,特别是在商业系统中,如金融、财务处理经常使用表格形式表示数据框架,这给了我们一个启发,用表格作为一种数据结构有着广泛的应用基础,关系模型即是以此思想为基础建立起来的。

关系模型中的操纵与约束也是建立在二维表上的,它包括对一张表及多张表的查询、删除、插入及修改操作,以及相应于表的约束。

关系模型的思想是IBM公司的E.F.Codd于1970年在一篇论文中提出的,他在该年6月的ACM上所发表的论文《大型共享数据库的关系模型》(A Relational Model for Large Shared Data Banks)中提出了关系模型与关系模型数据库的概念与理论,并用数学理论作为该模型的基础支撑。由于关系模型有很多诱人的优点,因此,从那时起就有很多人转向此方面的研究,并在算法与实现技术上取得了突破。1976年以后出现了商用的关系模型数据库管理系统,如IBM公司在IBM-370机上实现的System-R系统,美国加州大学在DEC的PDP-11机上实现的基于UNIX的Ingres系统,Codd也因他所提出的关系模型与关系理论这项开创性工作而荣获了1981年计算机领域的最高奖——图灵(Turing)奖。

关系模型数据库由于其结构简单、使用方便、理论成熟而吸引了众多的用户,在20世纪80年代以后成为数据库系统中的主流模型,很多著名的系统纷纷出现并占领了数据库应用的主要市场。目前,主要产品有Oracle、SQL Server、DB2等。关系模型数据库管理系统的数据库语言也由多种形式而逐渐统一成一种标准化形式,即SQL语言。

3.5.3 关系模型的数据结构、操纵和约束

关系是一种数学理论,运用这种理论所得到的逻辑模型称关系模型,关系模型由关系数据结构、关系操纵及关系约束三部分组成。

1.关系数据结构

(1)表结构

关系模型统一采用二维表结构。二维表由表框架(frame)及表元组(tuple)组成。表框架由n个命名的属性组成,n称为属性元数(arity),每个属性有一个取值范围(即值域)。

在表框架中可以按行存放数据,每行数据称为一个元组,或称表的实例(instance)。实际上,一个元组由n个元组分量组成,每个元组分量是表框架中每个属性的投影值。一个表框架可以存放m个元组,m称为表的基数(cardinality)。

一个n元表框架及框架内m个元组构成了一个完整的二维表。表3-4给出了二维表的一个例子,这是一个有关学生(S)的二维表。

image

二维表一般满足下面七个性质:

image

(2)关系

image

(3)键

image

(4)关系与ER模型

虽然关系的结构简单,但它的表示范围广,E-R模型中的属性、实体(集)及联系均可用它表示,表3-5给出了E-R模型与关系间的比较。

image

在关系模型中,关系既能表示实体集又能表示联系。表3-6给出了某公司职工间上下级联系的关系表示。

image

2.关系操纵

关系模型的数据操纵就是建立在关系上的一些操作,一般有查询、删除、插入及修改四种操作。

(1)数据查询

用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。

1)一个关系内查询的基本单位是元组分量,其基本过程是先定位后操作。所谓定位,包括纵向定位与横向定位,纵向定位就是指定关系中的一些属性(称列指定),横向定位就是选择满足某些逻辑条件的元组(称行选择)。通过纵向与横向定位后就可确定一个关系中的元组分量了。在定位后即可进行查询操作,即将定位的数据从关系数据库中取出并放入至指定内存。

2)多个关系间的数据查询可分为3步进行。第1步将多个关系合并成一个关系,第2步对合并后的一个关系进行定位,最后进行查询操作。其中,第2步与第3步可看作一个关系内的查询,故我们只介绍第1步。多个关系的合并可分解成两个关系的逐步合并,如果有3个关系R1、R2与R3,那么合并过程是先将R1与R2合并成R4,然后再将R4与R3合并成最终结果R5。

因此,对关系数据库的查询可以分解成三个基本定位操作与一个查询操作:

image

(2)数据删除

数据删除的基本单位是元组,用于将指定关系内的指定元组删除。它也分为定位与操作两部分,其中定位部分只需要横向定位而无需纵向定位,定位后即是执行删除操作。因此,数据删除可以分解为两个基本操作:

image

(3)数据插入

数据插入仅用于一个关系,即在指定关系中插入一个或多个元组。插入数据时不需定位,只需将元组插入关系。因此,数据插入只有一个基本操作:

image

(4)数据修改

数据修改是在一个关系中修改指定的元组与属性值。数据修改不是一个基本操作,它可以分解为两个更基本的操作:先删除需修改的元组,然后插入修改后的元组。

(5)关系操作小结

以上四种操作的对象都是关系,而操作结果也是关系,因此它们都是建立在关系上的操作。这四种操作可以分解成6种基本操作。这样,关系模型的数据操纵可以总结如下:

1)关系模型数据操纵的对象是关系,而操纵结果也是关系。

2)关系模型基本操作有如下六种(其中三种为定位操作,三种为查询、插入及删除操作):

image

(6)空值处理

在关系元组的分量中允许出现空值(null value)以表示信息的空缺,空值的含义如下:

image

在出现空值的元组分量中一般可用NULL表示。目前的关系数据库系统都支持空值,但是它们都具有如下两个限制:

1)关系的主键中不允许出现空值。因为主键是关系元组的标识,如主键为空值则失去了其标识的作用。

2)需要定义有关空值的运算。在算术运算中如果出现空值则其结果为空值,在比较运算中如果出现空值则其结果为F(假)。此外,在统计时,如果SUM、AVG、MAX、MIN中有空值输入,其结果也为空值,而在作COUNT时如有空值输入则其值为0。

3.关系中的数据约束

关系模型允许定义三类数据约束,分别是实体完整性约束、参照完整性约束以及用户定义的完整性约束。此外,关系的安全性约束、故障恢复与多用户的并发控制实际上也是数据约束,其具体说明可见第5章。

相关实践学习
使用DAS实现数据库SQL优化
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。
相关文章
|
5月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
391 64
|
20天前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
50 19
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
66 4
|
2月前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
183 32
|
23天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
40 0
|
2月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
68 11
|
3月前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
4月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
4月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
4月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
96 3

热门文章

最新文章