2.2 关系操作
2.2.1 基本关系操作
关系模型中常用的关系操作包含查询操作 和插入,删除,修改操作两大部分
关系操作中最主要的部分是其查询的表达能力,其中,选择,投影,并,差,笛卡尔积是五种基本操作
关系操作的特点是集合操作方式,即操作的对象和结果都是集合
2.2.2官司数据语言的分类
1.关系代数语言
用对关系的运算来表达查询要求
2.关系演算语言:用谓词来表达查询要求
3.具有关系代数和关系演算双重特点的语言
2.3关系的完整性
关系模型中有三类完整性约束,实体完整性,参照完整性和用户定义的完整性。其中是体贴完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性。应该由关系系统自动支持,用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语意约束。
2.3.1 实体完整性
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。
例如:
学生(学号,姓名,性别,专业号,年龄)若关系中学号为主码,则学号不能取空值。
若“学号,专业号”为主码,则学号和专业号两个属性都不能取空值
说明:
(1)实体完整性是针对基本关系而言的,一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
(2)现实世界中的实体时刻区分的,即他们具有唯一性标识。例如每个学生都是一个独立的个体,是不一样的
(3)相应的,关系模型中主码作为唯一性标识。
(4)主码中的属性不能取空值。若去了控制,则存在不可区分的实体,这与第2点相矛盾,因此这个规则称为实体完整性。
2.3.3参照完整性
现实世界中的实体往往存在着某种联系,在关系模型中实体域实体间的联系用关系来描述。
设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码k相对应,则称F是基本关系R的外码,基本关系R称为参照关系,基本关系S称为被参照关系。
其中关系R和S不一定是不同的关系(如下例三),目标关系S的主码k和参照关系的外码F必须定义在同一个域上,外码不一定要与相应的主码同名(当外码和相应的主码属于不同关系时往往取相同的名字)
参照性完整规则
若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值必须为:或者取空值,或者等于S中某个元组的主码值
如
学生关系中每个元组的i专业号属性只取两类值
(1)空值,表示尚未给该学生分配专业
(2)非空值,这是该值必须是专业关系中某个元组的专业号值,因为学生不可能分配一个不存在的专业
班长属性可以取两类值
1.空值,表示所在班级尚未选出班长
2.非空值,则该值必须是本关系中某个元组的学号值
2.3.4 用户定义的完整性
它是针对某一具体关系数据库的约束条件,反映某一具体应用所设计的数据必须满足的语义要求。
关系模型应提供定义和检验这类完整性的机制,一边用统一的系统的方法处理它们,而不是由应用程序承担这一功能。
例:
课程(课程号,课程名,学分),其中课程号为主码
课程号属性必须取唯一值
非主属性“课程名”不可以取空值
“学分属性只能取值【1,2,3,4】