【梳理】数据库系统概论 第2章 关系数据库 2.1 关系数据结构及其形式化定义 2.2 关系操作 2.3 关系的完整性
教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社
注:文档高清截图在后
第2章 关系数据库
2.1 关系数据结构及其形式化定义
1、关系数据库系统是支持关系模型的数据库系统。关系模型由IBM的E.F.Codd提出。E.F.Codd因此获得Turing奖。目前全球的数据库几乎都为关系数据库。第1章初步介绍了关系模型及其基本术语,本章将稍微深入地介绍关系模型。
回忆:数据模型的三要素是:数据结构、数据操作、数据的完整性约束条件。简单说成:结构、操作、约束条件。
2、关系模型的数据结构就是关系。关系可以画成二维表来表示。这种结构虽然简单,却能表达丰富的语义,描述现实世界的实体及各种联系。关系模型建立在集合代数的基础上,下面从集合论的角度给出关系数据结构的形式化定义。
3、域(domain)是一组相同类型的值的集合。
例如:自然数、整数、实数、复数、32字节以内的字符串集合、{0,1}、{男、女}、离散闭区间 [0, 255] 、double能表示的全部数、本校全体学生、某人的计算机中包含的全部单机游戏、S店于2019年8月售出的全部UHD BD、作家N创作的全部科幻小说。
4、笛卡尔积(cartesian product)是一种集合运算。设集合D1,D2,……,Dn,则它们的笛卡尔积为
cartesian = 与Rene Descartes相关的。
笛卡尔积生成的元素 (d1,d2,……,dn) 叫作一个n元组(n-tuple),简称元组(tuple)。元素中的每一个值都是一个分量(component)。
笛卡尔积可以表示为一张二维表。每行对应一个元组,而每列的值都来自一个域。
例如:给出导师姓名、研究方向、研究生姓名的集合
D1 = {胡安,张维文,祁连武},D2 = {计算机视觉,自然语言处理,语音识别},D3 = {林小亮,李立思,黄佳琪}。则
D1×D2×D3 =
{
(胡安,计算机视觉,林小亮),(胡安,计算机视觉,李立思),(胡安,计算机视觉,黄佳琪),
(胡安,自然语言处理,林小亮),(胡安,自然语言处理,李立思),(胡安,自然语言处理,黄佳琪),
(胡安,语音识别,林小亮),(胡安,语音识别,李立思),(胡安,语音识别,黄佳琪),
(张维文,计算机视觉,林小亮),(张维文,计算机视觉,李立思),(张维文,计算机视觉,黄佳琪),
(张维文,自然语言处理,林小亮),(张维文,自然语言处理,李立思),(张维文,自然语言处理,黄佳琪),
(张维文,语音识别,林小亮),(张维文,语音识别,李立思),(张维文,语音识别,黄佳琪),
(祁连武,计算机视觉,林小亮),(祁连武,计算机视觉,李立思),(祁连武,计算机视觉,黄佳琪),
(祁连武,自然语言处理,林小亮),(祁连武,自然语言处理,李立思),(祁连武,自然语言处理,黄佳琪),
(祁连武,语音识别,林小亮),(祁连武,语音识别,李立思),(祁连武,语音识别,黄佳琪)
}
该笛卡尔积可以画成3列27行的表,第一行记录每列的属性名,分别为:导师姓名、研究方向、研究生姓名,剩下27行每行可以放入1个笛卡尔积中的元素,对应关系中的元组。由于篇幅的关系,这里省略表格示例。
5、对有穷集合,其含有的元素个数在数值上等于其基数(cardinal number)。事实上基数的定义比这个叙述要复杂,无穷集也有其基数,本文不予讨论。如果有限集合D1,D2,……,Dn的基数分别为c1,c2,……,cn,那么D1×D2×……×Dn的基数C = c1c2……cn。
6、已知域D1,D2,……,Dn,则其笛卡尔积D1×D2×……×Dn叫作域D1,D2,……,Dn的关系,表示为R(D1,D2,……,Dn)。R为关系名,n为关系的目或度(degree)。关系中的每个元素是关系的元组,一般记为t。n = 1时,该关系为一元关系;n = 2时,该关系为二元关系。显然n目关系一定有n个属性。关系是笛卡尔积的有限子集,因为笛卡尔积的很多元素不对应现实意义。比如在上面的举例中,一个导师一般只在一个专业方向带研究生,一个研究生一般只有一个导师(以及一个研究方向),而一个专业方向一般有多个导师,一个导师可以带多名研究生。因此上述实例中的很多元组不具有实际意义。笛卡尔积本身一般不具有实际语义,而它的某个真子集才对应实际生活中的关系。
7、若关系中某些属性的值能够唯一标识一个元组而其真子集都不能,就称这部分属性为候选码(candidate key)。例如记录学生信息的一张二维表,只有学号是唯一的,其余信息都可能重复,那么学号属性为候选码。一个关系可以有多个候选码,一般只选一个作为主码(primary key)。最简单的情况下,候选码只包含一个属性。最极端的情况下,关系模式的全部属性都称为候选码,称为全码(all-key)。比如记录某品牌工作站的信息的表中,S/N(Serial number,序列号)和网卡的MAC地址都是唯一的,都可以标识一个元组——一台工作站及其全部信息,那么通常只选其中一个作为主码。
8、关系可以有三种类型:基本关系(也称基本表、基表)、查询表和视图表。基本表是实际存在的表,是实际存储数据的逻辑表示;查询表则是查询结果对应的表;视图表则是由基本表或其它识图导出的表,是虚表,不对应存储的数据。
9、关系可以是无限的集合,但是我们不可能建立一个无限大的数据库。所以关系数据模型中的关系必须是有限集合。对笛卡尔积的每个元素,如果任意多(≥2)个分量交换位置,那么交换前后的两个元素不能视为同一个元素,意即笛卡尔积的元素分量不满足交换律。这么说来,将笛卡尔积的一个子集——关系画成二维表后,由于这个子集保留了笛卡尔积及其每个元素的性质,列也不允许被变动。不过,我们可以为关系表中的每个列命名一个不同的属性名。显然,命名之后将列的位置可以自由交换而不会影响元组的数据,也就是说取消了关系属性的有序性。
10、基本关系具有如下5条性质。
(1)列是同质的(homogeneous)。比如说一个关系的二维表中,第i、j、k列分别为片名、豆瓣评分、IMDb评分。显然第i、j、k列的数据只能分别来自片名、豆瓣评分、IMDb评分的集合。也就是说,每一列的分量是同类的数据,来自同一个域。
(2)不同的列可以出自同一个域也可以来自不同的域。比如某个关系的二维表中,第i、j列分别是原作者姓名、译者姓名,那么它们可以都来自姓名域。
(3)行、列都可以自由调换顺序。
(4)任意两个元组的对应的候选码都不能取相同的值。
(5)分量必须取原子值,即分量都必须是不可分的数据项。也就是说把关系画成二维表时不允许表中有表。下图是一个表中有表的例子:
关系模型要求关系必须是规范化的(normalized)。规范化的关系简称为范式(Normal form,NF)。其概念将在第6章进一步讲解。
11、关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述。关系是元组的集合,关系模式需要描述元组集合的结构,比如说由哪些属性构成,属性分别来自哪些域,属性与域之间的关系。关系模式还需要刻画完整性约束条件。这些条件用于检验数据是否正确(符合逻辑、符合事实等)。比如:某公司的职工在70岁退休,那么对应的关系中不能出现70岁以上的在职职工的元组。
关系的描述称为关系模式(relation schema),可以记作R(U,D,DOM,F),这四个参数分别是:属性集合、属性的域、属性向域的映像集合、属性间数据的依赖关系的集合。属性间的数据依赖将在第6章讨论,本章中的关系模式仅涉及关系吗、属性名、域名、属性向域的映像4部分,记作R(U,D,DOM)。关系模式可以简记为R(U) 或R(A1,A2,……,An)。R为关系名,A1,A2,……,An为属性名。
12、关系模式通常是静态的、稳定的,而关系是动态的、随时间变化的。关系操作会不断更新数据。例如,学生关系模式在不同的学年基本上都相同,而学生关系则不同。实际工作中,人们常常把关系和关系模式都笼统地称为关系,这时需要根据上下文加以区别。
13、所有关系的集合构成一个关系数据库。关系数据库也有型和值之分。关系数据库的型也称关系数据库模式,是对关系数据库的描述。关系数据库模式包含若干个域的定义与域上定义的若干关系模式。关系数据库的值就是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.2 关系操作
1、关系模型中常用的关系操作包括查询(query)和插入(insert)、删除(delete)、修改(modify,有时写作更新(update))操作两大部分。查询操作可分为选择(select)、投影(project)、连接(join)、除(divide)并(union)、差(difference)、交(intersection)、笛卡尔积(cartesian product)等。选择、投影、并、差、笛卡尔积是5中基本操作。其它操作可以用基本操作来定义与导出,就像乘法可以用加法来定义和导出一样。
2、关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式称为一次一集合(set-at-a-time)。非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)。
3、我们通过关系数据语言来进行关系操作。早期的关系操作能力通常用代数或逻辑方式来表示,分别称为关系代数(relational algebra)和关系演算(relational calculus)。两者分别用对关系的运算和谓词来表达查询要求。关系演算可按谓词变元(变量)的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系完备性。已经证明:关系代数、元组关系演算和域关系演算三种语言在表达能力上都是等价的,都具有完备的表达能力。
关系代数、元组关系演算和域关系演算均是抽象的查询语言,与具体的DBMS中实现的实际语言不完全一样。但它们可以用作评估实际系统中查询语言能力的标准或基础。实际的查询语言除了关系代数与演算的功能外,还提供了聚集函数、关系赋值、算术运算等多种功能。
4、有一种介于关系代数和关系演算之间的结构化查询语言(Structured Query Language,SQL)。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。
综合3和4,关系数据语言可以分为三类:关系代数语言(如ISBL)、关系演算语言、具有关系代数和关系演算双重特点的语言(如SQL)。关系演算语言分为元组关系演算语言(如ALPHA、QUEL)和域关系演算语言(如QBE)。
2.3 关系的完整性
1、关系模型的完整性规则是对关系的约束条件,也就是说无论关系的值取什么,都应该满足这些约束。这些约束实际上是现实世界的要求。
2、关系模型中有三类完整性约束:实体完整性(entity integrity)、参照完整性(referential integrity)、用户定义的完整性(user-defined integrity)。实体完整性和参照完整性是一切关系模型必须满足的,称为关系的两个不变性。用户定义的完整性则是在应用领域随场合的不同而不同的约束条件,体现了具体领域中的语义约束。
3、实体完整性规则 若属性(一个或一组)A是基本关系R的主属性,则A不能为空(null)。空值就是不知道、不存在或无意义(未定义)的值。例如:某网站的数据库中保存访客记录,以IP作为主码标识特定主机,则IP不能为空,否则该条记录无效。如果主码包含多个属性,这些属性全部都不能为空。
4、设F是基本关系R的一个(组)属性,但不是R的码,KS是基本关系S的主码。如果F与KS存在某种对应关系,就称F是R的外码(foreign key),并称R为参照关系(referencing relation),S为被参照关系(referenced relation)或目标关系(target relation)。R和S不一定是不同的关系。
例如:“T影星主演的影片F的首映礼的地点”关系中,“地点”与城市关系的主码“城市名称”对应(为了讨论方便,这里假定城市不重名)。选择首映礼的地点需要考察哪些城市可以选,那么“T影星主演的影片F的首映礼的地点”关系为参照关系,城市关系为被参照关系。
5、参照完整性规则 若属性(组)F是基本关系R的外码,它与基本关系S的主码KS存在对应关系(R和S不一定不同),则对于R中每个元组在F上的值必须取空值或S中某个元组的主码值。例如:“某人收藏的UP主X的鬼畜视频”关系中每个元组的“视频名称”要么为空,可能表示录入时忘记视频名;要么只能来自“UP主X投稿的视频”关系中的“视频名称”,也就是说不能把非X发布的视频名称填入“某人收藏的UP主X的鬼畜视频”的关系中。
6、关系模型强制要求关系数据库系统支持实体完整性和参照完整性。而此外,不同的关系数据库系统根据应用环境的不同,往往还需要一些特殊的约束条件,反映在具体场景中投入应用的数据必须满足的额外要求。这就是用户定义的完整性。比如在某次批改上机作业的过程中,运用了C++11或更新版本的特性的提交才算符合课程要求,否则该提交视为无效,不予录入作业关系;比如某剧组为某科幻电视剧启用新人演员并准备进一步训练,在加州第一次海选完毕并向数据库添加复选名单时,由于动作戏的要求,限制复选人员关系中所有通过初审者必须持有Class C(或以上)以及Class M1驾驶执照。
【梳理】数据库系统概论 第2章 关系数据库 2.1 关系数据结构及其形式化定义 2.2 关系操作 2.3 关系的完整性相关推荐
- 数据库系统概论:第二章 关系数据库
2.1 关系数据结构及形式化定义 2.1.1 关系 1. 域(domain) 一组具有相同数据类型的值的集合 2. 笛卡儿积 域上的一种集合运算,笛卡儿积是不同域的所有元素的所有组合 一个域允许的不同 ...
- 《数据库系统概论》 第二章 关系数据库
2.1 关系数据结构及形式化定义 2.1.1 关系 1. 域(domain):一组具有相同数据类型的**值**的集合 2. 笛卡儿积:域上的一种集合运算 一个域允许的不同取值个数称为这个域的基数笛卡儿 ...
- (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
文章目录 一:关系 (1)域 (2)笛卡尔积 (3)关系 A:基本概述 B:码相关概念 C:关系的三种类型 二:关系模式 三:关系数据库 (1)基本概念 (2)关系数据库的型与值 前面说过,数据模型由 ...
- 【数据库系统】数据库系统概论====第六章 关系数据库理论
第六章 关系数据库理论 文章目录 第六章 关系数据库理论 6.1问题的提出 6.2规范化 6.2.1函数依赖 6.2.2码 6.2.3范式 6.2.4 2NF 6.2.5 3NF 6.2.6 BCNF ...
- 2.1 《数据库系统概论》关系数据结构及形式化定义(关系、关系模式、关系数据库)
文章目录 0.思维导图 1. 关系 (1)域(Domain) (2)笛卡尔积(Cartesian Product) (3)关系(Relation) (4)三类关系 2.关系模式 (1)什么是关系模式 ...
- 笔记 ~ 第二章 - 2.1 关系数据结构及形式化定义
目录 前言 1. 关系 (1)域 (2)笛卡尔积 (3) 关系(Relation) 2. 关系模式 (1)什么是关系模式 (2)定义关系模式 (3)关系模式与关系 3. 关系数据库 (1)关系数据库 ...
- 关系数据库之关系数据结构及形式化定义
关系数据库简介 提出关系模型的是美国IBM公司的E.F.Codd 1970年提出关系数据模型 E.F.Codd, "A Relational Model of Data for Large ...
- 数据库系统概论-第三章 关系数据库标准语言 SQL
概述 SQL的特点 综合统一 SQL集数据定义语言,数据操纵语言,数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,可以执行以下一系列要求: 定义和修改.删除 关系模式 ...
- 【梳理】数据库系统概论 第8章 数据库编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程
教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社 注:文档高清截图在后 第8章 数据库编程 标准SQL是非过程化的查询语言,操作统一.面向集合.功能丰富.使用简单.非过程化语言是相对 ...
最新文章
- 最常见企业管理SAAS软件有哪些?要解决哪些问题?
- Kinect v2.0 for windows开发环境说明
- 机器学习基石13-Hazard of Overfitting
- case when then else多个条件_sqlserver条件分支case when使用教程
- Linux笔记-bash中字符串拆分并且存到数组中
- Huffman编码解码
- kafka基础之介绍和分布式集群搭建
- pytorch中的反卷积的output_padding参数
- 【优化覆盖】基于matlab萤火虫算法求解无线网络传感覆盖优化问题【含Matlab源码 1275期】
- Coin3D相关模块学习
- bjui—关闭dialog以及当前标签
- PDF怎么编辑修改内容
- svn怎么比对文件_svn导出文件进行比较
- 【Zotero同步管理】【Zotero 6.0 + 坚果云 + iPad官方zotero APP】最新版教程
- android studio安卓订餐管理系统
- 小程序 video 控制器外观调整_Kessil 360X Tuna Sun无线控制器使用分享
- caxa计算机绘图工程师,CAXA计算机绘图
- Unity插件 - MeshEditor(一) 3D线段作画 模型网格编辑器
- 绘制基本网络图(Networkx)
- 独家专访李林 | 回归火币后的一年
热门文章
- 算法入门 12.二叉搜索树
- executor 使用_使用Executor更快地启动Windows Apps
- ios获取本机号码等
- 3GPP TS 23502-h20 中英文对照 | 4.15.3.2.3b Specific NEF service operations information flow for lo
- Greenplum(一) 基本特性 Master Segment
- 深度学习基础-----ReLu激活函数的反向传递过程
- 想要在PDF文档中提取签名和图像信息?有这篇Aspose.PDF for .NET干货教程就够了!
- linux下的ehci控制器调试
- 幽默人生 - twelfth (12th)
- 通过BigExcelWriter导出包含数据和图片的excel表,涉及到sheet.createDrawingPatriarch()画图对象,涉及到url转二进制数据