第2章 关系数据库理论基础
• 2.1 关系模型
• 2.2 关系代数
• 2.3 关系数据库
• 2.4 函数依赖
• 2.5 关系模式的范式
• 2.6 关系模式的分解和规范化
2.1 关系模型
• 关系模型的基本要素:关系模型的数据结构、关系操作和关系的完整性约束三部分。
• 2.1.1 关系模型的数据结构——关系定义2.1 令D = D1×D2×…×Dn = {(d1, d2,…, dn) | di ∈Dn , i = 1,2,…,n},即D为D1, D2, …, Dn的笛卡儿积,则D的任何非空子集R都称为D1, D2, …, Dn上的n元关系,其中Di为有限的属性值域,i = 1,2,…,n。
Ø 一个n元关系R通常记为R(D1, D2, …, Dn),R中的任一元素(d1, d2,…, dn)称为n元组,简称元组(Tuple)。元组中的每个值di称为分量。n称为关系的度或元。当n = 1时,R称为单元关系;当n = 2时,R称为二元关系。
Ø 注意,一个关系实际上就是若干元组的集合。一个关系必须是有限元组的集合,无限集合对数据库技术来说是无意义的。
• 笛卡儿积可以用二维表直观地表示。
【例子】 假设笛卡儿积D = D1×D2×D3,D1为学号的集合, D1={201301, 201302},D2为姓名的集合, D2={李思思, 刘洋},D3为英语成绩(简称“英语”)的集合, D3={90, 85, 70}。
D = {201301, 201302}×{李思思, 刘洋}×{90, 85, 70}
= {(201301, 李思思, 90), (201301, 李思思, 85), (201301, 李思思, 70), (201301, 刘洋, 90), (201301, 刘洋, 85), (201301, 刘洋, 70),
(201302, 李思思, 90), (201302, 李思思, 85), (201302, 李思思, 70),
(201302, 刘洋, 90), (201302, 刘洋, 85), (201302, 刘洋, 70)}。
• 由定义2.1,D为一个笛卡儿积,D的任意子集都是三元关系。
【例子】令R = {(201301, 刘洋, 70), (201302, 李思思, 90)},R 为D的一个子集,所以R 为3元关系。
• 这个关系记作R(D1, D2, D3),其对应二维表示如表2.2所示。
• 笛卡儿积D本身也是一种关系,但这种关系由于过于泛化而可能会导致语义上的矛盾,从而失去实际意义。一般来说,只有部分关系有意义,而不是全部。
【例子】 元组(201301, 刘洋, 90)和元组(201301, 刘洋, 85)就是一对矛盾的元组,因为学号“201301”、姓名为“刘洋”的学生的英语成绩不可能同时取90分和85分这两个值。
• 数据库理论中的一些概念;
Ø 关系:一个关系等同于一张二维表,是有限元组的集合;一个数据库可以视为若干关系的集合
Ø 元组:二维表中的一行对应一个元组,也称为记录。
Ø 由表2.2所示,“201301”,““刘洋”和“70”构成的行就是元组(201301,刘洋, 70)。
Ø 属性:二维表中的每一列都称为属性或字段。
Ø 域:即属性的值域,也就是属性的取值范围。
Ø 由表2.2所示,“学号”这个属性的值域为{201301, 201302}。
Ø 分量:一个元组中的一个属性值,也常称为数据项。
Ø 由表2.2所示,“刘洋”、“70”等都是数据项。数据项不能再分了,它是关系数据库中最小的数据单位。
Ø 候选码和主码:如果二维表中存在一个属性或若干属性组合的值能够唯一标识表中的每一个元组,则该属性或属性组合就称为候选码,简称码;如果一个表存在候选码,且从中选择一个候选码用于唯一标识每一个元组,则该候选码称为主码(Primary key)。主码也常称为主健(主关键字段)。
Ø 主属性和非主属性:包含在任何候选码中的属性都称为主属性,不包含在任何候选码中的属性称为非主属性。
• 关系的性质:
Ø 列是同质的,即每一列中的分量是同一类型的数据,它们都是来自同一个域。
Ø 每一列为一个属性,不允许存在相同属性名的情况。
Ø 列(行)的顺序是任意的,列(行)的次序可以任意交换。
Ø 不允许存在两个相同的元组。
Ø 每一个分量都是不可再分的,即不允许表中套表。
定义2.2 假设一个n元关系R的属性分别为A1, A2, …, An,令R(A1, A2, …, An)表示关系R的描述,称为关系模式。
Ø 关系模式是由属性构成,与属性值无关。为了体现关系模式中的主码,对构成主码的属性添加下划线。
【例子】在关系模式R(A, B, C, D, E)中,属性A和B的组合是该关系模式的主码。
Ø 关系模式是描述关系的“型”,即凡是具有相同属性的关系都属于相同的“型”,即它们都属于同一个关系模式。
Ø 一个关系模式可以视为一类具有相同类型的关系集合,属于同一个关系模式的关系都拥有相同的属性(但属性值却不一定相同)。
Ø 一个特定的关系是其对应关系模式的“值”,或者说关系是关系模式这个集合中在某一时刻的一个“元素”。
Ø 关系和关系模式的区别和联系:
• 关系和关系模式之间的联系就好像是数据类型和数据之间的联系。
• 关系模式和关系是有区别的,即前者是后者的抽象,后者是前者的特定实例