先修课程–关系代数
项目操作选择(或选择)某些属性而放弃其他属性。项目操作也称为垂直分区,因为它对关系或表进行垂直分区,从而丢弃其他列或属性。
符号:
πA(R)
其中“ A”是属性列表,它是Relation(R)的属性中所需的一组属性,
符号“π(pi)”用于表示Project运算符,
R通常是一个关系代数表达式,它导致一个关系。
例子 –
πAge(Student)
πDept, Sex(Emp)
例子 –
给定与以下元组的关系系(班级,系,职位):
Class | Dept | Position |
---|---|---|
5 | CSE | Assistant Professor |
5 | CSE | Assistant Professor |
6 | EE | Assistant Professor |
6 | EE | Assistant Professor |
1.学院的项目班级和部门–
πClass, Dept(Faculty)
Class | Dept |
---|---|
5 | CSE |
6 | EE |
在这里,我们可以看到结果关系的程度(属性数)为2,而教职关系的程度为3,因此可以得出结论,将Project操作应用于某个关系可能会得到不同程度的关系。
因此,结果关系的程度等于属性列表“ A”中的属性数量。
2.教师的项目职位–
πPosition(Faculty)
Position |
---|
Assistant Professor |
在这里,我们可以观察到在结果关系中所有重复的元组都从关系中删除。这称为重复消除。
3.学院的项目班级–
πClass(Faculty)
Class |
---|
5 |
6 |
重要事项:
- Project操作将删除重复的元组。
- Project操作不是可交换的,即:
πAttribute List 1(πAttribute List2(R)) != πAttribute List 2 (πAttribute List1(R))
- 仅当属性列表1是属性列表2的子集时,以下表达式才有效。
πAttribute List 1(πAttribute List2(R))
此外,编写上面的表达式与编写下面的表达式一样好:
πAttribute List 1(πAttribute List2(R)) = πAttribute List 1 (R)
- 项目操作产生的关系的基数(元组数)为:
1 <= πA(R) <= |R|
- 项目操作产生的关系的程度(属性数)等于属性列表“ A”中的属性数。
- 在SQL中,SELECT DISTINCT查询与此处的PROJECT完全相同。