先决条件 – 关系代数
项目操作选择(或选择)某些属性而丢弃其他属性。 Project 操作也称为垂直分区,因为它垂直分区关系或表,丢弃其他列或属性。
符号:
πA(R)
其中’A’是属性列表,它是来自relation(R)属性的期望属性集,
符号 ‘π(pi)’ 用于表示项目运算符,
R 通常是一个关系代数表达式,它导致一个关系。
例子 –
πAge(Student)
πDept, Sex(Emp)
例子 –
给定关系 Faculty (Class, Dept, Position) 与以下元组:
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,而 Faculty 关系的度数为 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)
- 来自 Project 操作的结果关系的基数(元组数)是:
1 <= πA(R) <= |R|
- 来自 Project 操作的结果关系的程度(属性数)等于属性列表“A”中的属性数。
- 在 SQL 中,SELECT DISTINCT 查询与此处的 PROJECT 完全相同。