内容正文:
第2章 关系数据库
主要内容
2.1 关系模型
2.2 关系代数
2.3 关系数据库设计
2.4 本章小结
2.1 关系模型
E.F. Codd,1970
关系模型的三要素
关系数据结构
关系数据操作
关系的完整性约束条件
2.1.1 关系模型的三要素
关系数据结构
关系模型的数据结构非常单一,即关系。
现实世界中的实体以及实体之间的各种联系统一用关系表示。
在用户看来,一个关系就是一张二维表。
行:元组(记录)
列:属性(字段)
2.1.1 关系模型的三要素
关系数据操作
查询和更新(插入、修改、删除)两大类
集合操作方式(set-at-a-time)
高度非过程化
种类
2.1.1 关系模型的三要素
关系的完整性约束条件
实体完整性
参照完整性
用户定义的完整性
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性,应由关系系统自动支持。
具体的应用领域还可能存在一些特定的语义约束,用户可以相应地定义一些完整性约束条件,这些完整性约束条件一经用户定义也应由关系系统自动支持。
2.1.2 关系数据结构
域(Domain)
一组具有相同数据类型的值的集合。
在关系中,域用来作为属性的取值范围。
学号属性所取的由11位数字组成的字符串集合
年龄属性所取的大于14且小于40的正整数集合
性别属性所取的由“男”和“女”这两个值组成的集合
笛卡尔积(Cartesian Product)
给定了一组域 ,这些域的笛卡尔积定义为:
每一个元素称为一个n-元组(n-tuple),简称元组(Tuple)。
元组中的每一个值称为一个分量(Component)。
2.1.2 关系数据结构
若干域的笛卡尔积可表示成一张二维表,表中的每一行对应于笛卡尔积的每一个元素或元组,表中的每一列对应于笛卡尔积的每一个域。
例如,给定了以下三个域:
姓名集合(name)={张林,李宏}
年龄集合(age)={20,21}
专业集合(major)={计算机科学与技术,软件工程}
则它们的笛卡尔积为:
{(张林,20,计算机科学与技术),(张林,20,软件工程),
(张林,21,计算机科学与技术),(张林,21,软件工程),
(李宏,20,计算机科学与技术),(李宏,20,软件工程),
(李宏,21,计算机科学与技术),(李宏,21,软件工程)}
2.1.2 关系数据结构
该笛卡尔积一共有 个元组,可表示成如表2.1所示的一张二维表。
显然,如表2.1所示的笛卡尔积中有很多元组是没有任何实际意义的。
2.1.2 关系数据结构
关系(Relation)
从相关域的笛卡尔积中抽取的具有实际意义的若干元组所构成的集合。
作为笛卡尔积的子集,关系同样可以表示成二维表的形式。
假设所有学生都不会同名,且每名学生只属于一个专业,那么表2.1中只有两个元组具有实际意义。
假设张林和李宏的年龄分别是21和20岁,分别是计算机科学与技术和软件工程专业的学生,相应的两个元组就构成了描述学生年龄及其所属专业的一个关系,如表2.2所示。
2.1.2 关系数据结构
关系(Relation)
关系的每一行就是关系的一个元素或元组(Tuple),描述一个具体的实体或实体之间的一个具体联系,通常用t表示。
关系的每一列就是关系的一个属性(Attribute)或字段(Field),其值来自相应的域。
在关系的所有属性中,可以唯一确定一个元组的属性或属性的最小组合称为该关系的码(键,Key)或候选码(候选键,Candidate Key)。
如果候选码多于一个,则选取其中一个候选码作为主码(主键,Primary Key)。
包含在任一候选码中的属性称为主属性(Primary Attribute)。
不包含在任何候选码中的属性称为非主属性(Non-Primary Attribute)或非码属性(Non-Key Attribute)。
2.1.2 关系数据结构
关系(Relation)
关系模型要求关系必须是规范的,即要求关系必须满足一定的规范性条件,满足一定规范性条件的关系模式的集合称为范式(Normal Form,简称NF)。
最基本的规范条件就是关系的每一个分量都必须取不可再分的原子值。
2.1.2 关系数据结构
关系模式(Relation Schema)
对关系的结构及其特征的抽象描述,相对稳定。
形式化表示为一个五元组R (U, D, dom, F)
R为关系名。
U为组成该关系的属性名集合。
D为U中各属性来自的域集合。
dom为属性到域的映射集合,用来确定U中的每一个属性分别来自D中的哪一个域。
F为属性间