非计算机专业的搬砖人,做着计算机专业的事情。所以投影的概念作为学计算机的同学可能很容易理解。但是却成为萦绕我心中不解很久的一个词。今天,总算豁然开朗了。
先抛那个让我豁然开朗的它:
再抛专业的解释:
投影是关系代数中的一种运算。
在关系代数中,投影(Projection)是一种基本的操作,用于从关系(即表)中选取特定的列。投影操作允许我们专注于关系中的某些属性,而忽略其他属性。它对于数据简化和聚焦于所需信息非常有用。
形式上,如果有一个关系 RR 以及该关系的一组属性 A1,A2,...,AnA1,A2,...,An,那么对这些属性进行投影的结果是一个新的关系,这个新关系只包含原始关系 RR 中的这些属性,并且可能去除了重复的行(因为关系代数的结果总是集合,不允许有重复元素)。
记作:πA1,A2,...,An(R)πA1,A2,...,An(R)
这里 ππ 是表示投影操作的符号,下标 A1,A2,...,AnA1,A2,...,An 表示我们要选择的属性列表。
示例
假设有一个学生选课的关系 Enrollment
,它有以下结构:
StudentID | CourseID | Grade |
---|---|---|
101 | CS101 | A |
102 | MATH101 | B+ |
101 | MATH101 | A- |
103 | CS101 | C+ |
如果我们想要得到所有学生的学号和他们所选课程的信息,而不关心他们的成绩,我们可以使用投影操作来实现:
πStudentID,CourseID(Enrollment)πStudentID,CourseID(Enrollment)
结果将是:
StudentID | CourseID |
---|---|
101 | CS101 |
102 | MATH101 |
101 | MATH101 |
103 | CS101 |
注意到在这个例子中,即使 101
学生选了两门不同的课程,这两条记录都会被保留,因为它们是不同的组合。但如果我们的目标是去除重复的学号-课程对,那么还需要进一步处理以确保结果集中没有重复项。
投影操作是关系代数中最基础也是最常用的运算之一,常与其他关系代数操作如选择(Selection)、联接(Join)等结合使用,以便更灵活地查询数据库。
关于什么是关系代数,请移步:关系代数的由来-优快云博客