基本概念
域(Domain)
笛卡尔积(cartesian product)
笛卡尔积是域上的一种集合运算
给定一组域
D
1
,
D
2
,
.
.
.
.
.
.
,
D
n
{D_1,D_2,......,D_n}
D1,D2,......,Dn,允许其中的某些域是相同的,
D
1
,
D
2
,
.
.
.
.
.
.
,
D
n
{D_1,D_2,......,D_n}
D1,D2,......,Dn的笛卡尔积为
D
1
×
D
2
×
.
.
.
×
D
n
=
{
(
d
1
,
d
2
,
.
.
.
,
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
,
.
.
.
n
}
D_1\times D_2 \times ... \times D_n = \{(d_1,d_2,...,d_n) | d_i\in D_i ,i=1,2,...n\}
D1×D2×...×Dn={(d1,d2,...,dn)∣di∈Di,i=1,2,...n}
其中,每一个元素
(
d
1
,
d
2
,
.
.
.
,
d
n
)
{(d_1,d_2,...,d_n)}
(d1,d2,...,dn)叫做一个n元组(n-tuple),或简称元组(tuple)。元素中的每一个值
d
i
d_i
di叫做一个分量(component)
一个域允许的不同取值个数称为这个域的基数(cardinal number)
笛卡尔积的表示方法
关系(Relation)
关系
D 1 × D 2 × . . . × D n D_1 \times D_2 \times ... \times D_n D1×D2×...×Dn的子集叫做在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示为 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn)
R表示关系的名字,n是关系的目或度(degree)
元组
单元关系与二元关系
关系的表示
属性
码
候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
简单的情况:候选码只包含一个属性
全码(All-key)
主码
主属性
非主属性
三类关系
基本关系的性质
关系的描述称为关系模式(relation schema)
可以形象的表示为R(U,D,DOM,F)
其中,R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的 域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合
关系模式是型,关系是值
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系模型中有三类完整性约束
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
关系数据库中每个元组应该是可区分的,是唯一的。这样的约束条件用实体完整性来保证
实体完整性规则
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(不存在,不知道,无意义)
在关系模型种实体及实体间的联系都是用关系来描述的,存在着关系与关系间的引用
设F是基本关系R的一个或一组属性,但不是关系R的码,K,是基本关系S的主码。如果F与K,相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系(referencing relation),基本关系S为被参照关系(referenced relation) 或目标关系(target relation)。关系R和S不一定是不同的关系。
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和校验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
关系代数是一种抽象的查询语言,是对关系的运算来表达查询
关系代数的运算对象是关系,运算结果也是关系
关系代数按运算符的不同可分为传统的集合运算和专门的关系运算两类
集合运算是从关系的水平方向即行的角度进行
专门的关系运算不仅涉及行而且涉及列

传统的集合运算是二目运算,包括,并,差,交 ,笛卡尔积4中运算
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量, t ∈ R t \in R t∈R表示t是R的一个元组
并(union)
关系R与关系S的并记作
R
∪
S
=
{
t
∣
t
∈
R
∨
t
∈
S
}
R \cup S = \{t|t\in R\lor t\in S\}
R∪S={t∣t∈R∨t∈S}
其结果仍为n目关系,由属于R或属于S的元组组成
差(except)
关系 R与关系S的差记作
R
−
S
=
{
t
∣
t
∈
R
∧
t
∉
S
}
R - S = \{t|t\in R \land t\notin S\}
R−S={t∣t∈R∧t∈/S}
其结果仍为n目关系,由属于R而不属于S的所有元组组成
交(intersection)
关系S与R的交记作
R
∩
S
=
{
t
∣
t
∈
R
∧
t
∈
S
}
R\cap S =\{t|t\in R \land t \in S\}
R∩S={t∣t∈R∧t∈S}
其结果仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示
R
∩
S
=
R
−
(
R
−
S
)
R \cap S = R-(R-S)
R∩S=R−(R−S)
笛卡尔积(cartesian product)
严格地讲应该是广义的笛卡尔积
R : n 目关系, k 1 个元组, S : m 目关系, k 2 个元组 R:n目关系,k_1个元组,S:m目关系,k_2个元组 R:n目关系,k1个元组,S:m目关系,k2个元组
R与S的笛卡尔积 运算表示为
R
×
S
R\times S
R×S
R
×
S
=
{
t
r
t
s
⌢
∈
R
∧
t
s
∈
S
}
R \times S = \{\overset{\LARGE{\frown}}{t_r t_s}\in R \land t_s \in S\}
R×S={trts⌢∈R∧ts∈S}
运算结果为

专门的关系运算包括选择,投影,连接,除运算等
相关记号说明:
关系模式为R ( A 1 , A 2 , . . . , A n ) (A_1,A_2,...,A_n) (A1,A2,...,An),它的一个关系设为R。 T ∈ R T\in R T∈R表示t是R的一个元组 t [ A i ] t[A_i] t[Ai]则表示元组t中相应于属性 A i A_i Ai的一个分量
若 A = { A i 1 , A i 2 , . . . , A i k } A=\{A_{i1},A_{i2},...,A_{ik}\} A={Ai1,Ai2,...,Aik},其中 A i 1 , A i 2 , . . . , A i k A_{i1},A_{i2},...,A_{ik} Ai1,Ai2,...,Aik是 A 1 , A 2 , . . . , A n A_1,A_2,...,A_n A1,A2,...,An中的一部分,则A称为属性列或属性组。 t [ A ] = ( t [ A i 1 ] , t [ A i 2 ] , . . . , t [ A i k ] ) t[A] = (t[A_{i1}],t[A_{i2}],...,t[A_{ik}]) t[A]=(t[Ai1],t[Ai2],...,t[Aik])表示元组t在属性列A上诸分量的集合, A ‾ \overline{A} A则表示 A i 1 , A i 2 , . . . , A i k {A_{i1},A_{i2},...,A_{ik}} Ai1,Ai2,...,Aik中去掉 { A i 1 , A i 2 , . . . , A i k } \{A_{i1},A_{i2},...,A_{ik}\} {Ai1,Ai2,...,Aik}后剩余的属性组。
R为n目关系,S为m目关系。 t r ∈ R , t x ∈ S , t r t x ⌢ t_r\in R,t_x \in S, \overset{\LARGE{\frown}}{t_r t_x} tr∈R,tx∈S,trtx⌢称为元组的连接(concatenation)或元组的串接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
给定一个关系R(X,Z),X和Z为属性组。当r[X]=x时,x在R中的象集(imagesset)定义为
Z
x
=
{
t
[
z
]
∣
t
∈
R
,
t
[
X
]
=
x
}
Z_x=\{t[z] | t \in R,t[X]=x\}
Zx={t[z]∣t∈R,t[X]=x}
它表示R中属性组X上的值为x的诸元组在Z上分量的集合
选择(selection)
选择又称为限制(restriction)。它是在关系R中选择满足给定条件的诸元组,记作
σ F ( R ) = { t ∣ ∈ R ∧ F ( t ) = ′ 真 ′ } \sigma_F(R) = \{t|\in R \land F(t)='真'\} σF(R)={t∣∈R∧F(t)=′真′}
其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。逻辑表达式F的基本形式为:
X 1 θ T 1 X_1\theta T_1 X1θT1
其中θ表示比较运算符,它可以是>,≥,<,≤,=或<>。 X 1 , Y 1 X_1,Y_1 X1,Y1等是属性名,或为常量,或为简单函数;属性名也可以用它的序号来代替。在基本的选择条件上可以进一步进行逻辑运算,即进行求非( ¬ \neg ¬)、与( ∧ \land ∧)、或(V)运算。条件表达式中的运算符如表2.5所示。
投影(projection)
关系R上的投影是从R中选择若干属性列组成新的关系。记作:
Π A ( R ) = { t [ A ] ∣ t ∈ R } \Pi_A(R)=\{t[A]|t\in R\} ΠA(R)={t[A]∣t∈R}
其中A为R中的属性列
投影操作是从列的角度进行的运算
连接(join)
连接也称 为
θ
\theta
θ连接。它是从两个关系 的笛卡尔积中选取属性间满足一定条件的元组。记作:
R
⋈
A
θ
B
S
=
{
t
r
t
s
⌢
∣
t
r
∈
R
∧
t
x
∈
S
∧
t
r
[
A
]
θ
t
x
[
B
]
}
R \underset{A\theta B }{\bowtie} S = \{\overset{\LARGE{\frown}}{t_r t_s}|t_r \in R \land t_x \in S\land t_r[A]\theta t_x[B]\}
RAθB⋈S={trts⌢∣tr∈R∧tx∈S∧tr[A]θtx[B]}
其中,A和B分别为R和S上列数相等且可比的属性组,O是比较运算符。连接运算从R和S的笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系
θ
{\theta}
θ
两类常用连接运算
等值连接(equijoin)
θ {\theta} θ为"="的连接运算称为等值连接
等值连接的含义
R ⋈ A = B S = { t r t s ⌢ ∣ t r ∈ R ∧ t x ∈ S ∧ t r [ A ] = t x [ B ] } R \underset{A=B}{\bowtie} S = \{\overset{\LARGE{\frown}}{t_r t_s}|t_r \in R \land t_x \in S\land t_r[A]= t_x[B]\} RA=B⋈S={trts⌢∣tr∈R∧tx∈S∧tr[A]=tx[B]}
自然连接(Natural join)
自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同属性组,在结果中把重复的属性列去掉
自然连接的含义
R ⋈ S = { t r t s ⌢ ∣ t r ∈ R ∧ t x ∈ S ∧ t r [ A ] = t x [ B ] } R \bowtie S = \{\overset{\LARGE{\frown}}{t_r t_s}|t_r \in R \land t_x \in S\land t_r[A]= t_x[B]\} R⋈S={trts⌢∣tr∈R∧tx∈S∧tr[A]=tx[B]}
自然连接还需要取消重复列,所以是同从行和列的角度进行运算。
概念
除运算(divsion)
给定关系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
=
t
r
[
x
]
∣
t
r
∈
R
∧
Π
r
(
S
)
⊆
Y
x
R\div S = {t_r[x]|t_r\in R \land \Pi_r(S) \subseteq Y_x}
R÷S=tr[x]∣tr∈R∧Πr(S)⊆Yx
其中
Y
x
Y_x
Yx为x在R中的象集,
x
=
t
r
[
x
]
x=t_r[x]
x=tr[x]
除操作是同时从行和列角度进行运算
关系演算是以数理逻辑中的谓词演算为基础的。按谓词变元的不同,关系演算可分为元组关系演算和域关系演算。
元组关系演算以元组变量作为谓词变元的基本对象。一种典型的元组关系演算语言是E.F.Codd提出的ALPHA语言。
ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP 6条语句,语句的基本格式为:
操作语句工作空间名
(
表达式
)
:操作条件
操作语句 工作空间名(表达式):操作条件
操作语句工作空间名(表达式):操作条件
检索操作
用GET语句实现

