【关系模型相关概念】小楼一夜听春雨——数据库学习之路(3)

关系数据库是建立在关系模型基础之上的数据库,本文的目的在于打通关系模型的相关的概念的脉络。

关系数据结构

关系

现实世界的实体以及实体间的各种联系均用关系来表示

二维表

从用户角度,关系模型中数据的逻辑结构是一张二维表

域(Domain)

一组值的集合,这组值具有相同的数据类型

笛卡尔积(Car'tesian Product)

一组域D1 , D2 ,…, Dn的笛卡尔积为: D1×D2×…×Dn= {(d1 , d2, … ,dn) |di∈Di,i=1,…,n}

元组

笛卡尔积的每个元素(d1, d2 , … ,dn)称作一个n-元组(n-tuple)

分量

元组的每一个值di叫做一个分量(component)


关系的性质

  • 列是同质的;
  • 不同的列可以来自同一域,每列必须有不同的属性;
  • 行列的顺序无关紧要;
  • 任何两个元组不能完全相同;
  • 每一分量必须是不可再分的数据,满足这一条件称为满足第一范式(1NF)

关系模式

关系的模式和实例:关系模式(型),关系(变量),实例(值)

超码(superkey)

超码是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地标识一个元组

候选码(Candidate Key)

关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码

主属性

任何一个候选码中的属性称作主属性

非主属性

不包含在任何候选码中的属性称为非主属性。

主码(Primary Key)

从一个关系的多个候选码中选定一个作为主码

外部码(Foreign Key)

关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码

  • R是参照关系(Referencing Relation)
  • S是被参照关系(Referenced Relation)
  • R通过外码F参照关系S

关系模式的完整性

实体完整性(Entity integrity)

关系的主码中的属性值不能为空值

意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的

参照完整性(Referential Integrity)

在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用

如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值

意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在

用户定义的完整性

用户针对具体的应用环境定义的完整性约束条件

系统支持

实体完整性和参照完整性由系统自动支持

系统应提供定义和检验用户定义的完整性的机制

关系代数基本运算

给定关系模式R(A1 , A2, … , An),设R是它的一个关系,t是关系的一个元组

分量:t[Ai]表示元组t中相应于属性Ai的一个分量

属性列:A={Ai1, Ai2, … ,Aik},称A为属性列

并运算

交运算

两个关系R和S若进行并运算,则它们必须是相容的:

  • 关系R和S的属性数目必须相同
  • R和S的对应属性的域相同
  • 不要求对应列同名

差运算

差运算

两个关系R和S若进行差运算,则它们必须是相容的

元组的连串:若r = (r1,…,rn),s = (s1 ,… ,sm),则定义r与s的连串为:连串运算

笛卡尔积运算

笛卡尔积

两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组

更名运算

  更名返回E的结果,把名字x赋给E,

更名返回E的结果,把名称x赋给E,并将各属性列更名为A1,A2,...An

给一个关系表达式赋予名字(Ps将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助)

选择运算

选择运算
在关系R中选择满足给定条件的元组(从行的角度)

F是选择的条件, F(t)要么为真,要么为假

F的形式:由逻辑运算符连接算术表达式而成

投影运算

投影运算

从关系 R 中取若干列组成新的关系(从列的角度)

附加的关系代数运算

交运算

交运算

所有同时出现在两个关系中的元组集合

连接运算

连接运算

从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组

A,B为R和S上度数相等且可比的属性列

斯塔为算术比较符,为等号时称为等值连接

自然连接运算

从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的列。

当R和S无相同属性时,

自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。

除运算

RS÷S的意义就是:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。


赋值运算

为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用

赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改

扩展的关系代数运算:

广义投影

广义投影

在投影列表中使用算术表达式来对投影进行扩展

聚集函数

sum, avg, count, max, min,   

分组:将一个元组集合分为若干个组,在每个分组上使用聚集函数。

求一组值的统计信息,返回单一值

外连接

为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接

外连接= 自然连接 + 失配的元组

   左外连接= 自然连接 + 左侧表中失配的元组

  右外连接= 自然连接 + 右侧表中失配的元组

   全外连接= 自然连接 + 两侧表中失配的元组

后记

“小楼一夜听春雨,深巷明朝卖杏花”, 关系代数是关系数据库系统查询语言的理论基础就如春雨,孕育了希望,滋养了大地!

你可能感兴趣的:(数据库)