关系数据结构及形式化定义:
按照数据模式的3个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分完成。
关系:
关系模型的数据结构非常简单,只包含单一的数据结构----关系。
在用户看来,关系模式中数据的逻辑结构是一张扁平的二维表。
1.域:是一组具有相同数据类型的值的集合。
2.卡迪尔积:是域上面的一种集合运算。
3.关系
D1XD2X...XDn 的子集叫做域D1,D2,...Dn上的关系,表示为:
R(D1,D2,...,Dn)
这里R表示关系的名字,n是关系的目或者度。单元关系 二元关系
若关系的某一个属性组的值能唯一地标识一个元组,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码。
候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性。
在最简单的情况下,候选码只含一个属性,在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。
基本表是实际存在的表,它是实际存储的逻辑表示。
查询表示查询结果对应的表。
视图表是有基本表或其他视图表导出来的表,是虚表,不对应实际存储的数据。
基本关系具有以下六条性质:
1、列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
2、不同的列可出资同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
3、列的顺序无所谓,即列的次序可以任意交换。
4、任意两个元组的候选码不能相同。
5、行的顺序无所谓,即行的次序可以任意交换。
6、分量必须取原子值,即每一个分量都必须是不可分的数据项。
关系模式
在数据库中要区分型和值。关系数据库中,关系模式是型,关系是值。
2.2关系操作
基本的关系操作
关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。
关系的查询表达能力很强,是关系操作中最主要的部分。查询操作又可以分为:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡儿积等。
其中选择。投影、并、差、卡迪尔积是5种基本操作。
2.3关系的完整性
关系模式中有三类完整性约束:实体完整性,参照完整性和用户定义的完整性。
2.4关系代数
传统的集合运算是二目运算,包括并、差、交、笛卡儿积四种运算。
⒈ 并(Union)
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。其结果关系仍为n目关系。记作:
R∪S={t|t∈R∨t∈S}
⒉ 差(Difference)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:
R-S={t|t∈R∧t∉S}
⒊ 交(Intersection Referential integrity)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
R∩S={t|t∈R∧t∈S}
⒋ 广义笛卡尔积(Extended cartesian product)
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
专门的关系运算(Specific relation operations)包括选择、投影、连接、除等。
为了叙述上的方便,我们先引入几个记号。
⒈ 设关系模式为R(A1, A2, …, An)。它的一个关系设为R。t∈R表示t是R的一个 元组。t[Ai]则表示 元组t中相应于属性Ai的一个分量 。
⒉ 若A={Ai1, Ai2, …, Aik},其中Ai1, Ai2, …, Aik是A1, A2, …, An中的一部分,则A称为属性列或域列。フA则表示{A1, A2, …, An}中去掉{Ai1, Ai2, …, Aik}后剩余的属性组。t[A]=(t[Ai1], t[Ai2], …, t[Aik])表示元组t在属性列A上诸分量的集合。
⒊ R为n目关系,S为m目关系。设tr∈R(r为下标),ts∈S(s为下标),则trts(整个式子上方加一个半弧,r和s为下标) 称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
⒋ 给定一个关系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)
选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:
σF(R) = {t|t∈R ∧ F(t)='真'}
其中F表示选择条件,它是一个 逻辑表达式,取逻辑值‘真’或‘假’。
逻辑表达式F的基本形式为:
X1 θ Y1 [ φ X2 θ Y2 ]
θ表示比较运算符,它可以是>、≥、<、≤、=或≠。X1、Y1等是属性名或 常量或简单函数。属性名也可以用它的序号来代替。φ表示 逻辑运算符,它可以是フ、∧或∨。[ ]表示任选项,即[ ]中的部分可以要也可以不要,...表示上述格式可以重复下去。
因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
⒉ 投影(Projection)
关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
ΠA(R) = { t[A] | t∈R }
其中A为R中的属性列。
⒊ 连接(Join)
连接包括θ连接,自然连接,外连接,半连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的 元组。
连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi-join),另一种是 自然连接(Natural join)。
θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些 元组。
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。
一般的连接操作是从行的角度进行运算。但 自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。
4. 除(Division)
给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R中的Y与S中的Y&127;可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X)。该P中只包含R中投影下来的的X属性组,且该X属性组应满足:R(Y)=S(Y)。
2.3关系的完整性