2.6 关系操作
1. 所有的过程式查询语言都提供一组以一个或者一对关系为输入,以一个新的关系为输出的操作。由于这些操作的输出都是一个关系,因此可以把多个操作组合起来用。
2. 最常用的操作是从一个关系中找出满足特定条件(Predicate ,如:salary > 3000)的元组。该操作的结果是原来的关系的一个子集。
3. 从关系中查询某些属性的操作也较常见。此操作的结果是一个只由选择的那些属性组成的新关系。
4. 连接操作把两个关系融合成一个。
5. 自然连接通过两个关系中同名的属性来连接这两个属性。
6. 笛卡尔积操作,不以某些属性的值相等为条件,列出两个关系中的元组的全部组合。
7. 关系是集合,因此可以在关系上做集合操作:Union、intersection、set difference等。
8. 还可以在查询结果上继续执行关系操作。
9. 常用的关系代数操作:
10.
11. 查询结果中可能有重复值,有些查询语言在返回结果Relation时会去重,有些语言为了降低开销不会去重。
12. 还可以对关系中的元组进行增、删、改操作。
2.7总结
1. 关系数据模型以表为基础。用户可以对表进行增、删、改、查操作。可以使用多种语言来表示这些操作。
2. 关系的方案(Schema)指的是其逻辑设计,实例(Instance)则是指在某个时刻方案中的数据。数据库的方案与实例的定义类似。一个关系的方案包括其属性、属性的类型以及相关的约束。
3. 超键(Superkey)是一个关系中可用来唯一区分这个关系中的元组的属性的集合。备选键是最小的超键之一——备选键(Candidate key)的属性集合是一个超键,但是它的任何真子集都不能作为一个超键.(Primary key)是数据库设计师看上的某个备选键。
4. 外键Foreign Key是引用关系(Referencing relation)中的一组属性,引用关系中的任意一个元组里的外键属性的值都是被引用关系中的某个元组的主键值。
5. 关系查询语言定义一组输入和输出都是关系的操作。输入可以是一个或一对关系,输出则总是一个关系。这些操作可以串起来用。
6. 关系代数提供一组以一个或多个关系为输入并且输出一个关系的操作。诸如SQL等查询语言是以关系代数为基础的,并在其上添加了某些特性。