数据库复习-4.关系数据库
关系
本部分主要讲解域、笛卡尔积、关系等概念。
单一的数据结构–关系:
现实世界的实体以及实体间的各种练习均用关系来表示。
逻辑结构–二维表:
从用户角度(外模式),关系模型中数据 的逻辑结构是一张二维表。
关系是建立在集合代数的基础上。
域(Domain)
域是一组具有相同数据类型的值的集合。
例如:整数
{ 1,2,3,4,5 }
{ 男,女 }
——域要命名
D1={1,2,3,4,5},表示年级的集合
D2= { 男,女 },表示性别的集合
基数:域中数据的个数
笛卡尔积(Cartesian Product)
给定一组域D1,D2,…,Dn,这些域中可以有相同的。 D1 , D2 ,…,Dn的笛卡尔积为:
D1 × D2 ×…×Dn ={(d1,d2,…dn) | di ? Di, i=1,2,..,n }
其中 每一个元素(d1,d2,…dn) 叫作一个n元组或简称元组。
元素中的每一个值di 叫做一个分量。
若Di( i=1,2,..,n )为有限集,其基数(域中的数据的个数)为mi (i=1,2,..,n ), 则D1 × D2 ×…×Dn的基数M为:
n
M = ∏ mi (基数为构成该积所有域的基数累积)
i=1
笛卡尔积直观意义是诸集合各元素间一切可能的组合,可表示为一个二维表。
笛卡尔积直观意义是诸集合各元素间一切可能的组合,可表示为一个二维表。
关系(Relation)
D1×D2×…×Dn 的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
其中R :关系的名字
Di :第i个域名(属性)
n :关系的目或度
当n=1:单元关系;当n=2:二元关系;以此类推…;n 目关系必有n个属性;
关系中的每一个元素是关系中的元组,通常用t表示。
关系是笛卡尔积的有限子集。
术语
若关系中的某一属性组的值能唯一地识别一个元组,则称该属性为候选码。
若一个关系有多个候选码,则选定其中一个作为主码。
候选码的诸属性称为主属性。
不包含在任何候选码中的属性称为非码属性。
若关系模式的所有属性组是这个关系模式的候选码,则称为全码。
关系的类型:
- 基本表:实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:是虚表,由基本表或其它视图表导出,不对应实际存储的数据。(只是信息)
关系作为关系数据模型的数据结构时,需给予以下限定和扩充:
1、无限关系在数据库系统中无意义
元组个数是无限的
限定关系数据模型中的关系必须是有限集合。
2、为关系的每个列附加一个属性名来取消元组的有序性
即(d1,d2,…,di,dj,…,dn)=(d1,d2,…, dj, di,…, dn) (i,j=1,2 ,…, n )
关系的基本性质
1. 列是同质的
每一列的分量是同一类型的数据,来自同一域。
2. 不同的列可出自同一域(即笛卡尔积定义中Di可以相同)
3. 列的顺序可以任意交换。
4. 任意两个元组的候选码不能完全相同。
5. 行的次序可以任意交换。
6. 分量必须取原子值。
关系模式
什么是关系模式
- 关系模式(Relation Schema)是型
- 关系是值
- 关系模式是对关系的描述
- 元组集合的结构
- 属性构成
- 属性来自的域
- 属性与域之间的映象关系
- 元组语义以及完整性约束条件
- 属性间的数据依赖关系集合
- 元组集合的结构
关系模式的定义
关系模式可以形式化地表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
DOM 属性向域的映象集合
F 属性间的数据依赖关系集合
例:
导师和研究生出自同一个域——人,
取不同的属性名,并在模式中定义属性向域
的映象,即说明它们分别出自哪个域:
DOM(SUPERVISOR-PERSON)
= DOM(POSTGRADUATE-PERSON)
=PERSON
关系模式通常可以简记为
R (U)或 R (A1,A2,…,An)
- R: 关系名
- A1,A2,…,An : 属性名
注:域名及属性向域的映象常常直接说明为
属性的类型、长度
关系模式与关系
- 关系模式(个人理解:只包含关系的框架,如:属性和来自那个域)
- 对关系的描述
- 静态的、稳定的
- 关系
- 关系模式在某一时刻的状态或内容
- 动态的、随时间不断变化的
- 关系模式和关系往往统称为关系
通过上下文加以区别。
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库
- 关系数据库的型:亦称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。
- 关系数据库的值:关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系操作
本部分主要讲基本关系操作、关系数据库语言的分类。
基本关系操作
常用的关系操作:
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
- 查询的表达能力是其中最主要的部分
- 选择、投影、并、差、笛卡尔积是5种基本操作
关系操作的特点:
- 集合操作方式:操作的对象和结果都是集合,一次一集合的方式
关系数据库语言的分类
- 关系代数语言
- 用对关系的运算来表达查询要求
- 代表:ISBL
- 关系演算语言:用谓词来表达查询要求
- 元组关系演算语言
- 谓词变元的基本对象是元组变量
- 代表:APLHA, QUEL
- 域关系演算语言
- 谓词变元的基本对象是域变量
- 代表:QBE
- 元组关系演算语言
- 具有关系代数和关系演算双重特点的语言
- 代表:SQL(Structured Query Language)
关系的完整性
本部分主要讲关系的三类完整性约束。
关系的三类完整性约束
实体完整性和参照完整性:
关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
用户定义的完整性:
应用领域需要遵循的约束条件,体现了具体领域中的语义约束
实体完整性
实体完整性规则(Entity Integrity):
若属性A是基本关系R的主属性,则属性A不能取空值。
例如:选课(学号,课程号,成绩),则“学号”和“课程号”两个属性都不能取空值。
对于实体完整性规则说明如下:
#
- 实体完整性规则是针对基本关系而言。
- 现实世界中的实体是可区分的。
- 相应地,关系模型中以主码作为唯一性标识。
- 主码中属性即主属性不能取空值。
参照完整性
关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。
外码(Foreign Key)
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码。
基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)
- 关系R和S不一定是不同的关系
- 目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
- 外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
用户定义完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
关系代数
一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。
关系代数运算的三个要素
运算对象:关系
运算结果:关系
运算符:四类
1、集合运算符
- 将关系看成元组的集合
- 运算是从关系的“水平”方向即行的角度来进行
2、专门的关系运算符
不仅涉及行而且涉及列
3、算术比较符
辅助专门的关系运算符进行操作
4、逻辑运算符
辅助专门的关系运算符进行操作
![关系运算符]
传统的集合运算
传统的集合运算是二目运算,包括:
并、差、交、广义笛卡尔积四种运算
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则称关系R和关系S是相容的。
1.并(Union)
R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
R∪S
- 仍为n目关系,由属于R或属于S的元组组成
R∪S = { t|t属于R∨t属于S }
2.差(Difference)
R和S
- 具有相同的目n
- 相应的属性取自同一个域
R - S
- 仍为n目关系,由属于R而不属于S的所有元组组成
R -S = { t|t属于R∧t不属于S }
3.交(Intersection)
R和S
- 具有相同的目n
- 相应的属性取自同一个域
R∩S
- 仍为n目关系,由既属于R又属于S的元组组成
R∩S = { t|t∈R∧t∈S }
R∩S = R –(R-S)
4.笛卡尔积(Cartesian Product)
- 严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
- R: n目关系,k1个元组
- S: m目关系,k2个元组
- R×S
- 列:(n+m)列元组的集合
- 元组的前n列是关系R的一个元组
- 后m列是关系S的一个元组
- 行:k1×k2个元组
- R×S = {tr⌒ts(小帽在tr和ts上) |tr∈R ∧ ts属于S }
- 列:(n+m)列元组的集合
专门的关系运算
引入几个记号
(1)R,t属于R,t[Ai]
设关系模式为R(A1,A2,…,An)
它的一个关系设为R
t属于R表示t是R的一个元组
t[Ai]则表示元组t中相应于属性Ai的一个分量
(2)A,t[A], 非A(A上边有一横线)
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。
t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。
非A(A上边有一横线)则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。
(3)tr⌒ts(小帽在tr和ts上)
R为n目关系,S为m目关系。
tr∈R,ts∈S,tr⌒ts(小帽在tr和ts上)s称为元组的连接。
tr⌒ts(小帽在tr和ts上)是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
(4)象集Zx
给定一个关系R(X,Z),X和Z为属性组。
当t[X]=x时,x在R中的象集(Images Set)为:
Zx={t[Z]|t∈R,t[X]=x}
(它表示R中属性组X上值为x的诸元组在Z上分量的集合)
![象集]
选择(selection)
在关系R中选择满足给定条件的诸元组,记作 :
σF(R={ t | t ∈R ∧ F(t) =’真’ }
其中F:选择条件,是一个逻辑表达式,由逻辑运算符 ¬、∧、∨连接各个算术表达式组成。
算术表达式的基本形式:X1θY1
θ为比较运算符,可以是<、≤、>、≥、≠和 =
X1,Y1等是属性名,或为常量,或为简单函数
- 选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。是从行的角度进行的运算。
- 属性名可以用序号来代替。
投影(Projection)
是从R中选择出若干属性列组成新的关系,记作:
πA(R)={ t [A] | t∈R }
其中A为R中的属性列
- 投影操作是从列的角度进行的运算
- 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组
连接(join)
1)连接也称为θ连接
2)连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
R ▷◁ S = { tr⌒ts(小帽在tr和ts上)| tr∈R∧ts∈S∧tr[A]θts[B] }
AθB
- A和B:分别为R和S上度数相等且可比的属性组
- θ:比较运算符
连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组
3)两类常用连接运算
1.等值连接(equijoin)
- 什么是等值连接
θ为“=”的连接运算称为等值连接 - 等值连接的含义
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
R ▷◁ S = { tr⌒ts(小帽在tr和ts上)| tr∈R∧ts∈S∧tr[A]θts[B] }
AθB
2.自然连接(Natural join)
- 自然连接是一种特殊的等值连接
- 两个关系中进行比较的分量必须是相同的属性组
- 在结果中把重复的属性列去掉
- 自然连接的含义
R和S具有相同的属性组B
R ▷◁ S = { tr⌒ts(小帽在tr和ts上)| tr∈R∧ts∈S∧tr[A]=ts[B] }
AθB
4)一般的连接操作是从行的角度进行运算。
![连接1]
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
1.外连接
- 如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。
2.左外连接
- 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
3.右外连接
- 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
除
除运算R÷S=T,T包含所有在R中但不在S中的属性及其值,且T的元组的所有组合都在R中。
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中Y可以有不同的属性名,但必须出自相同的域集。R和S的除运算得到一个新的关系P(X),P 是R 中满足下列条件的元组在X 属性列上的投影:元组在X 上分量值为x 的象集Yx 包含S 在Y上投影的集合。记作:
R÷S = {tr[X ] | tr属于R∧πY(S)属于Yx }
其中Yx 为x 在R 中的象集,x= tr[X]
除操作是同时从行和列角度进行运算。
总结:
关系代数是关系数据操作的数学工具
1、查询
若查询信息含于一个关系中,采用“选择”或“投影”运算
若查询信息分布在不同的关系中,根据查询条件,采用“连接”、“差”、“投影”、“选择”等运算
2、插入
“并”运算
3、删除
“差”运算
关系代数的基本运算
∪ - σ π ×
其他运算可由上述五种运算导出
交:A∩B = A -(A - B)
连接:R ►◄S = σAθB(R × S)
AθB
自然连接:R ►◄S = π[S.B] (σR.B=S.B (R × S))
除: R÷S = πx (R)- πx((πx (R)×πy (S))-R)
(假定R(X,Y),S(Y,Z) )
关系数据库详解
本文详细介绍了关系数据库的基础概念,包括关系、关系模式、关系操作和完整性约束。关系是基于集合代数的二维表,关系模式描述了关系的结构和完整性规则。关系操作包括选择、投影、连接等,而完整性则分为实体完整性、参照完整性和用户定义完整性。关系代数是关系数据操作的数学工具,用于查询、插入和删除等操作。
968

被折叠的 条评论
为什么被折叠?



