Projection as Set
관계 대수의 투영 결과는 중복 튜플을 자동으로 제거한다
릴레이션은 집합이므로 같은 튜플이 두 번 나타날 수 없습니다. SQL은 기본적으로 중복을 보존하므로 DISTINCT가 필요합니다.
입력
학생에서 학과만 투영
| 학번 | 이름 | 학과 |
|---|---|---|
| 101 | 김철수 | 컴퓨터 |
| 102 | 이영희 | 전자 |
| 103 | 박민수 | 컴퓨터 |
| 104 | 최지은 | 전자 |
관계 대수
π학과(학생)
선택된 값 흐름에는 반복이 있어도, 최종 릴레이션은 집합입니다.
컴퓨터
전자
컴퓨터
전자
집합이라 2행만 남음
컴퓨터
전자
컴퓨터
전자
반복된 튜플은 같은 원소이므로 결과 릴레이션에서 한 번만 보입니다.
DISTINCT를 붙여야 같아짐
SELECT DISTINCT 학과 FROM 학생
기본 SELECT는 중복을 유지합니다. 관계 대수의 투영 의미와 맞추려면 DISTINCT를 명시합니다.
컴퓨터
전자
관계 대수
릴레이션은 집합이라 중복 원소가 없습니다.
SQL
기본 결과는 다중 집합처럼 중복을 허용합니다.
대응
π의 중복 제거는 SELECT DISTINCT와 가깝습니다.