1关系代数
1970 年IBM公司的E.F.Cood博士在论文“一个通用关系式数据库系统的模 型”中首先提出了关系模型,它提供了格式化数据库系统难以做到的数据独立性 和数据相容性。此模型后来又由 Codd加以改进,被许多人认为是一切数据库系 统的未来。
关系数据库之所以发展如此之快,因为关系数据库的模型简明,便于用户理 解使用方便等等特点,更重要的是,关系数据库有着网状和层次数据库没有的数 学基础----关系代数,可以利用关系代数对表格进行任意的分割和组装, 随机地 产生用户所需要的各种新表,这为关系数据的发展提供了基础和保证。 1.1基本概念 术语
表17. 1关系模型中的术语与数据世界中的术语的对应关系
关系模型 元组 关系模型 属性 厲性值 域 关系 关系模式 候选关键字 次关键字
数据1H:界 记录 数据模型 数据项(字段) 数据项的具体取值 数据项的取值范围 文件 记录型 候选关键字 次关键字 主关键字 主关键字 定义 给定一组集合D,D2,... ,D,它们可以是相同的,若 R是这样一个有序 n元组:
仇…,d J | dj € D A 12,拥 则称R是对于这n个集合的一个关系,并称集合 D, D2, ... , Dn为关系R的域, 称n为关系的度。 1.2关系运算
在关系模型中,实体以及实体间的联系采用了单一数据结构----关系来表示。对 数据的操作就是对关系的运算。关系运算的形式可分为两大类: (1) 关系代数:把关系看作集合,以关系为运算对象的关系运算。 (2) 关系演算:使用数理逻辑谓词演算概念的关系运算。
1.2.1 并(U nion)
设R和S为同类关系,即具有相同的度和相应属性在相同的域中取值, 但并 不要求属性名一致,则关系R和S的并由属于R或属于S的所有元组构成,记作 R _.So
例:
RoS
A a d c
B to a b g C c f d a b A a d B b a b C c f d A b d B g a C a f c
SQL语句:Select * from R Union Select * from S 1.2.2 交(In tersectio n)
设R和S为同类关系,则关系R和S的交由属于R同时属于S的所有元组构 成,记作R- S。
例:
R
A a d c B S b a b C c f cl A b d B s d c a f RnS
A d B a c f
SQL语句: Select R.A,R.B,R.C from R,S where R.A=S.A and R.B=S.B and R.C=S.C
1.2.3 差(Differe nee)
设R和S为同类关系,贝U关系R和S的差由属于R但不属于S的所有元组构 成,记作R-S。
例:
R A a d c B b a t C c f d A a c B b b A b d B g a C a f
R-S C c d
1.2.4 笛卡尔积(Cartesian Product)
设R为ki元关系,S为k2元关系,则关系R和S的笛卡尔积是一个(ki+k2) 元的关系,其中每个元组的前ki个分量取自R中的一个元组,后k2个分量取自S 中的一个元组,记作R S
例:
ABC
(c ) RXS
SQL语句: Select * from R,S 1.2.5 投影(Projectio n)
设R为k元关系,Ai1,Ai2,... ,Am分别是它的第i1,i2,... ,im个属性, 则关系R在A1,A,... ,Am上的投影是一个m元关系,其属性为A1,A,... Aim,记作:
码1,i2,…,im( R
投影的基本思想是从一个关系中选择我们需要的属性成分, 并按要求排列组 成一个新的关系,新的关系的各属性值来自原来关系中相应的属性值, 并去掉重 复元组。 例:对关系R,做投影亦(R),得
C A
C f
a d c
d
SQL语句: Select Dist inct C, A from R
126 选择(Selection)
设F是一个命名公式,则在关系R上的F选择是在R中挑选满足F的所有元 组,组成一个新的关系,这个新的关系是
R的一个子集,记为:CF(R)
其中F由下列三部分组成:运算对象、算术比较符、逻辑运算符。 例:对关系R,做选择卄V [3]=f( R),得
廿⑴利甘国之(R)
A a d B b a C c f
SQL语句: Select * into R1 from R where A='a' or C='f 1.2.7 连接(Joi n)
连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。 设R为ki元关系,S为k2元关系,算术比较符是 九则关系R的第i列和关系S 的第j列的连接定义为:
Rx|S
从定义可以看出,连接运算是从两个关系的笛卡尔积中选取满足一定连接条
件的元组的集合,连接的结果是一个(kl+k2)元的关系。也称为一般连接
例:
A B C 1 1 2 3 4 5 6 7 8 9 (a) Rr r ■ B C D 3 2 5 6 3 9 8 5
A B C B C D I 2 3 2 3 2 1 2 3 5 1 6 3 1 2 3 9 8 5 4 5 6 9 8 5
A B 1 4 2 5 L C B 3 2 6 5 . C D 3 6 2 3 I id) R K s [3】二[2] SQL语句:(c) Select * from R, S where R.A < S.D
(d) Select * from R, S where R.C = S.C
1.2.8 自然连接(Natural Join)
当两个关系R和S的某些列具有相同的属性名时,可利用这些同名属性列总 的相同值作为连接条件将两个关系连接起来, 构成自然连接。在连接后的关系中, 不仅含有R与S不同的属性列,而且含有相同的属性列,其元组的数目由相同属 性列中的相同值决定。
设R是属性名组为(A, A,…,Am, ... , Ai)的ki元关系,S是属性名 组为(Ai, A, ... ,
Am, Bm+i, ... ,
B2
)的 k2兀关系,其中 Ai, As,…,Am是同
名属性列,贝U R和S的自然连接定义为…。
进行自然连接的步骤如下:(i)计算R S; (2)选择A・R=A・S的所有元组;(3) 去掉重复属性。
可以看出,如果两个关系没有公共属性,自然连接就是笛卡尔积 例:
A ! B C a b € d b <b b ; f B b b a C D c d c e d b !A B a a d d c 1 c a 1d b b b b a j 'c) RM c c c c d 图175 R和S的自然连接
SQL语句: Select Distinct R.A, R.B, R.C, S.D from R,S where R.B=S.B and R.C=S.C 1.2.9 除(Divisio n)
除运算是指用一个(m+r)度的关系R除以一个n度关系S,运算结果生成 一个m元的新关系。这里R的第(m+i)个属性和S的第i个属性(i=i , ... , n) 必须是在相同的域上定义。当把 R的前m个属性看作一个组合属性x,后n个属 性看成一个组合属性
y,则S也可类似地看成一个组合属性y。这样以S中的y
值来对R进行分组,当组中含有y值时,则组中的x值便构成了 R除以S的一个
元组。R除以S的数学表达式为:
R-: S=二a(R)-竄「a(R) S-R)
其中a为关系R中除去与S关系相同的其余属性。 例:
图按公式分解计算
(b) S
除运算
17.7氐〔R)xS
A a d e B b c d A a a d d e e B b b c c d d C c e c e c & D d f d f d f n^RJxS-R A
B c C c D d d
A
B d 赵R)佻(阳(R)xg-艮)
c A
a e B b d 关系代数对数据库的数据操作是完备的,利用关系代数可以实现一切数据操作。 2函数依赖概念
数据依赖是通过一个关系中数据间值的相等与否体现出来的数据间的相互 关系,是现实世界属性间相互关系的抽象,是数据内在的性质。
数据依赖中最重要的是函数依赖(Functional Dependency )。 2.1函数依赖
定义:设有一关系模式R( AI,A2,,,A n),X和丫均为(AI,A2,,,A n)的子集, 对于R的值r来说,当其中任意两个元组u,v中对应于X的那些属性分量的值均
相等时,则有u,v中对应于丫的那些属性分量的值也相等,称 X函数决定Y,或 Y依赖于X,记为X->Y。
例:有关系,学生(学号S#,姓名SN系名SD),子集X (学号S#),子集丫 (系名SD 。
每个学生有唯一的一个学号,学生中可以有重名的姓名,每个学生只能属于一个 系,每个系有唯一的系代号。有此,可以找出学生关系模式中存在下列函数依赖:
S#->SN S#->SD
例:有关系,学校简况(学号S#,系名SD系主任MN课程CN成绩G)。可写 出函数依赖:
S#->SD SD->MN S#,CN->G
根据函数依赖的不同性质,函数依赖可分为完全函数依赖、部分函数依赖和传递 函数依赖。 2.2完全函数依赖
定义:在R(U)中,如果X->Y,对于X的任意一个真子集X',都有X'不能决定 丫,则称丫对X完全函数依赖,记为x—亠丫。
f
例:(S#,CN) — G 2.3部分函数依赖
定义:在R(U)中,如果X-> 丫,但丫不完全函数依赖于X,则称丫对X部分函数 依赖,记为X-亠丫。
例:(S#,CN) T G 但(S#,CN)f SD
2.4传递函数依赖
定义:在R(U)中,当且仅当X-> 丫 , Y->Z时,称Z对X传递函数依赖。 例:描述学生(S#)、班级(SB)、辅导员(TN的关系U(S#,SB,TN)。一个班 有若干学生,一个学生只属于一个班,一个班只有一个辅导员,但一个辅导员负 责几个班。根据现实世界可得到一组函数依赖: F={S#->SB, SB->TN}
学生学号决定了所在班级,所在班级决定了辅导员,所以辅导员 赖于学生学号S#。
数据依赖还包括多值依赖和连接依赖两种形式。 2.5关键字(码)
TN传递函数依
定义:设K为R(U)中的属性或属性组合,若 K—*U,则称K为R的(侯选)关 键字,也称为码。若(候选)关键字多于一个,则选定其中的一个作为主关键字。
因篇幅问题不能全部显示,请点此查看更多更全内容