一、关系数据结构及形式化定义
关系数据库系统是支持关系模型的数据库系统。
1、关系
关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。
关系模型的数据结构虽然简单却能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。也就是说,在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型,即关系来表示。
1、域(domain)
定义:域是一组具有相同数据类型的值的集合。
例如:自然数、整数、实数、长度小于25字节的字符串集合、{0,1}、{男、女}、大于等于0且小于等于100的正整数等,都可以是域。
2、笛卡尔积(cartesian product)
笛卡尔积是域上的一种集合运算。
定义:给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡尔积为
D1×D2×…×Dn = {(d1,d2,…,dn)| di ∈ Di,i = 1,2,…,n}
其中,每一个元素(d1,d2,…,dn)叫作一个n元组,或简称元组(tuple)。元素中的每一个值di叫做一个分量(component)。
一个域允许的不同取值个数称为这个域的基数(cardinal number)。
笛卡尔积可表示为一张二维表。表中的每行对应一个元组,表中的每一列的值来自一个域。
例:设有3个域:导师 = { 张清玫,刘逸 };专业 = { 计算机专业,信息专业 };研究生 = { 李勇,刘晨,王敏 },则笛卡尔积 = 导师 × 专业 × 研究生。
该笛卡尔积的基数为2×2×3 = 12,也就是说,D1×D2×D3一共有2×2×3 = 12个元组。这12个元组可列成一张二维表,如下图所示:
3、关系
(1)关系的定义:D1×D2×…×Dn的子集叫作在域D1, D2, …, Dn上的关系,表示为:R(D1,D2,…,Dn)。这里R表示关系的名字,n是关系的目或度(degree)。
关系中的每个元素是关系中的元组,通常用t表示。
当 n = 1 时,称该关系为单元关系或一元关系。
当 n = 2 时,称该关系为二元关系。
(2)关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。
-
关系中不同列可以对应相同的域
-
为了加以区分,必须对每列起一个名字,称为属性(Attribute)(属性满足交换律!)
-
n目关系必有n个属性
-
候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。(解释:超码!) -
主码(Primary key)
若一个关系有多个候选码,则选定其中一个为主码。 -
全码(All - key)
所有属性组共同组成的候选码,称为全码(All - key)。 -
主属性