关系模式
关系模式的构成要素:
数据结构,数据操作,完整性约束
一些定义
examples
定义2.1:域(domain)是一组值的集合,同一个域中的所有值均应具有相同的数据类型
例2-1:
D1={袁玲,吴丹,刘杰}姓名域
D2={男,女}性别域
D3={18,19}年龄域
其中:D1(姓名)、D2(性别)和D3(年龄)为域名,分别表示“人员”关系中姓名、性别和年龄的可取值范围
D1的基数m1=3,D2的基数m2=2,D3的基数m3=2
域名中元素数量为域名的基数,plus域中元素无排列顺序
域中元素一般无排列次序,如:D2={男,女}={女,男}
定义2.2:域D1,D2,…,Dn上的笛卡儿积(Cartesian product)是一个集合:
D1×D2×…×Dn={(d1,d2,…dn) | di∈Di,1≤i≤n}
其中允许Di=Dj且i≠j,将该集合中的每一个元素(d1,d2,…dn)称为一个元组(tuple),元组中的每一个值di称为一个分量(component),有n个分量的元组称为n元组
域的笛卡尔乘积被称为一个集合,该集合中的元素(d1,d2,…dn)称为一个元组(tuple),元组中的di称为分量,n个分量的元组称为n元组
例2-2:已知三个域: D1={袁玲,吴丹,刘杰} D2={男,女} D3={18,19}
该笛卡尔积的基数为3×2×2=12,即共有12个元组,(袁玲、男、18)和(吴丹、女、19)就是元组,“袁玲”、“女”、“吴丹”、“19”就是分量。
有时一个元组也被称为一条记录
定义2.3:D1×D2×…×Dn上的任意一个子集均是定义在域D1,D2,…Dn上的一个关系(relation),记为R
由n个域构成的关系通常称为n元关系,关系中的每个元素即是这个关系的元组
即:关系是笛卡尔乘积的子集,元组是笛卡尔乘积的元素,元组也是关系的元素,分量是元组中的某一个域的值
由于域可以相同,为了加以区分,必须为每列起一个名字,称为属性(Attribute)
定义2.4:为关系的每个列所起的名字称为关系的属性,一般可表示为A,B,C…
n元关系必有n个属性,表的任意一列对应一个属性,属性的名称称为“属性名”,具体元组的属性取值称为“属性值”
例:学生关系有学号、姓名、性别、系名、年龄等属性
即:分量是某个关系上属性的值,属性名,属性值 注意区分 域可以相同
定义2.5:如果一个关系中的某个属性或属性集能够唯一的确定一个元组,则称该属性(集)是这个关系上的超键(super key,SK);如果将超键中的任一属性去掉后剩余的属性集不能唯一标识一个元组,则称该属性集是关系上的候选键(candidate key,CK);通常从候选键中选择一个使用,这个候选键称为关系的主键(primary key,PK)
一般情况下,如不加特别说明,键即指主键。如果关系R1中的某个属性集是另外一个关系R2的候选键,那么该属性集对于关系R1而言是它的外键(foreign key,FK)
1、超键:在关系中能唯一标识元组的属性集称为关系模式的超键
2、候选键:不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!
3、主键:用户选作元组标识的一个候选键程序主键。
4、外键:如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。
主键为候选键的子集,候选键为超键的子集,而外键的确定是相对于主键的
定义2.6:关系模式(relation schema)是对关系的型的描述,可以表示为:
R(U,D,DOM,I,F)
其中,U是R的属性集合{A1,A2,…,An},D是属性的取值范围,即域的集合{D1,D2,…,Dn},DOM是U到D的映射集合{A1→D1,A2→D2,…,An→Dn},I是完整性约束规则集,F是函数依赖集合
习惯上将关系模式简记为R(A1/D1,A2/D2,…,An/Dn)或者R(A1,A2,…,An)
关系与关系模式的区别
关系可看作是关系模式在某一时刻的状态或内容,也就是说,关系模式是型,关系是值
关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
关系的要点
(1) 关系中不允许出现相同的元组(元组不重复)
(2) 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即他们的分量可以取自同一个域(属性不重复)
(3) 关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序(元组间无序)
(4) 关系中属性的顺序是无关紧要的,即属性的顺序可以任意交换(属性间无序)
(5) 同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。
(6) 关系中每个分量必须是不可分的数据项,或者说所有属性值都是原子的,是一个确定的值,而不是值的集合,即不可“表中有表” 。属性值可以为空值,表示“未知”或“不可使用”。
关系的类型
在关系数据库中,关系有以下三种类型:
(1) 基本表:实际存在的表,对应实际存储数据的逻辑表示
(2) 查询表:对基表查询得到的结果表
(3) 视图:从基本表或其他视图中导出的表
关系数据库的型与值
关系数据库的型: 关系数据库模式
对关系数据库的描述。
关系数据库模式包括:
1若干域的定义
2在这些域上定义的若干关系模式
关系数据库的值: 关系模式在某一时刻对应的关系的集合,简称为关系数据库
关系模型的完整性
关系模型的完整性(integrity)规则是为了保证数据的正确性和相容性而在关系上施加的约束条件
(1)域完整性约束
元组分量在某个属性上的取值应在其值域之内;元组是否能在某个属性上取空值null,由该属性的语义决定
(2)实体完整性约束
元组在键上的取值不可重复,且不能为null
按照键的定义,如果不同的元组在键上取相同值或空值,则将无法区分两个不同的元组
关系代数
关系运算是关系数据库的数学基础,分为关系代数和关系演算两大类
关系代数中运算对象是关系,运算结果也是关系,运算符包括四类:
(1) 集合运算符:∪(并),-(差),∩(交),×(广义笛卡尔积)
(2) 专门的关系运算符:σ(选择),π(投影),⋈(连接),÷(除)
(3) 算术比较符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于)
(4) 逻辑运算符:∧(与),∨(或),┐(非)
(1)并(union)
R、S都是n元关系,且各自的对应属性具有相同的域,则关系R和S并的结果R∪S仍为n元关系,表示为:
R∪S={t| t∈R∨t∈S}
满足并运算要求的两个关系是“并兼容”的
(2)差(difference)
R和S是并兼容的n元关系,R与S的差R-S仍为n元关系,表示为:R-S={t| t∈R∧t S}
即R-S由那些仅出现在R中且不出现在S中的元组构成
(3)交(intersection)
R和S是并兼容的n元关系,R与S的交R∩S仍为n元关系,表示为:R∩S={t| t∈R∧t∈S}
即R∩S由那些既在R中出现又在S中出现的元组构成
(4)笛卡儿积(Cartesian product)
m元关系R与n元关系S的笛卡儿积是(m+n)元关系,且每个元组的前m个分量是R的一个元组,后n个分量是S的一个元组,可以表示为:
R×S={t(m+n) | t(m)∈R∧t(n)∈S}
如果R中共有i个元组,S中共有j个元组,则R×S一定有i×j个元组
examples
专门的关系运算
(1)选择(selection)
σF®={t| t∈R∧F(t)=true}
其中σ是选择算符,表示进行选择运算,F是选择条件,最简单的选择条件形如XθY或者Xθc,X,Y是属性名,c是常量,θ是算术比较运算符,包括>,≥,<,≤,=,≠等。可以由简单的选择条件通过逻辑运算符构成更为复杂的条件,逻辑运算符包括∧,∨和﹁。
examples:
(2)投影(projection)
ΠX®={t[X]| t∈R}
其中,X是关系R的一个属性子集,t[X]表示关系R上的元组t在属性子集X上的分量
由于关系的属性间是无序的,因此X中的属性顺序可以和它们在R中的出现顺序不一致。此外,需要注意的是因为关系中不允许有重复元组,因此在投影后需要将可能出现的重复元组进行合并
*****注意投影完后的合并
examples:
(3)连接(join)
θ连接 :
连接是笛卡儿积和选择的复合运算,可以表示为:
R⋈AθBS={rs| r∈R∧s∈S∧r[A]θs[B]}=σAθB(R×S)
其中,⋈是连接运算符,AθB是连接条件,θ是算术比较运算符。R⋈AθBS表示将关系R和S在各自的属性A,B上满足θ条件的元组连接起来。θ条件可以有多个,它们之间用逻辑算符连接。这样的连接一般被称为“θ连接”。特别的,如果θ是“等于”比较,称这样的连接运算是“等连接”或“等值连接”
****本质上可以看作笛卡尔乘积后做选择运算
example:
自然连接:
消除了重复属性的等值连接,称为“自然连接”。表示如下:
R⋈S=πAttr®∪(Attr(S)-A)(σR.A=S.A(R×S))
其中Attr®是关系R的属性全集
examples:
外连接:
外连接将不满足连接条件的元组仍然保留在结果关系中,并在缺失属性上取null。
根据保留元组的不同,外连接又分为左外连接,右外连接,全外连接
examples:
半连接:
R和S的半连接是将其自然连接的结果在R的属性集上投影,可以表示为:
R S=πR (R S),S R=πS (R S)
半连接不具有交换率
(4)除(Divison)
给定两个关系R(X,Y),S(Y),其中X,Y均是属性的集合。设T(X)=R(X,Y)÷S(Y)表示R与S除运算的结果,÷是除运算的算符,结果关系T的属性集由X构成,则T与S的笛卡儿积必定是R的一个子集。R÷S可表示如下:
T=R÷S={t[X]| t∈R∧ s∈S,t[X]s∈R}=πX®- πX((πX®×S)-R)
式中t[X]s表示由元组t在属性子集X上的分量同关系S的元组s构成的新元组
T与S的笛卡尔乘积必是R的子集
examples:
总结
-
关系模式的三个构成要素是什么,并做简要说明。
数据结构,数据操作,完整性约束
-
解释一下概念,域,关系,关系模式,属性,超键,候选键,主键,外键
域(domain)是一组值的集合,同一个域中的所有值均应具有相同的数据类型
域的笛卡尔乘积的子集是关系
关系模式是对关系的型的描述
属性是关系每个列的名字
超键,是属性或者属性集,这个能唯一确定一个元组
候选键,去掉超键中不必要的属性,还能够唯一标识一个元组
主键就是候选键的子集
外键,比如R1中的某个属性集是另一个R2的候选键,则改属性集合称为R1的外键
-
关系运算
交,并,补集,选择,投影,连接(笛卡尔乘积后做选择)包括自然连接,外连接,左外连接,右外连接(可以含NULL),除法(T = R/S,最后,T和S的笛卡尔乘积是R的子集)。