2.1关系数据结构及形式化定义
关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和关系完整性约束3部分组成。
2.1.1关系
1.域(domain)
域是一组具有相同数据类型的值的集合;
2.笛卡尔积(cartesian product)
笛卡尔积是域上面的一种集合运算。笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中的每一列的值来自一个域。
3.关系(relation)
关系是笛卡尔积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(candidate key)。
若一个关系有多个候选码,则选定其中一个为主码(primary key)。
候选码的诸属性称为主属性(prime attribute),不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)。
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。
基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据;
关系表中不允许还有表,简言之不允许表中有表。
2.2关系操作
关系模型中常用的关系操作包括查询操作(query)和插入(insert)、删除(delete)和修改(update)操作两大部分;
2.3关系的完整性
关系模型的完整性规则是对关系的某种约束条件,也就是说关系的值随着时间的变化时应该满足一些约束性条件。
2.3.1关系模型的三类完整性约束
关系中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
2.3.2实体完整性(entitiy intergrity)
实体完整性规则
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值;
2.3.3参照完整性(referential integrity)
关系中的某个属性需要参照某个关系的属性取值,不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。
设F是基本关系R的一个或一组属性,但不是关系R的码,K是基本关系S的主码,如果F与K相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系(referencing relation),基本关系S为被参照关系(referenced relation)或目标关系(target relation)。关系R和S不一定是不同的关系。
参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对应R中每个元组在F上的值必须为:
1.或者取空值(F的每个属性值均为空值);
2.或者等于S中某个元组的主码值;
2.3.4用户定义的完整性(user-defined integrity)