선택은 조건에 맞는 행을 남기고 투영은 지정한 속성을 남긴다. 순수 관계대수는 집합을 다룬다.
books에서 shelf_code가 DB인 행을 고르는 것은 선택 σ다. 그 결과에서 shelf_code 열만 남기는 것은 투영 π다. 집합 기반 투영 결과에는 같은 튜플이 여러 번 남지 않는다. SQL SELECT는 기본적으로 중복을 유지하므로 DISTINCT 여부를 확인한다.
디비전 ÷은 관련 조건을 모두 만족하는 대상을 표현한다. 관심분야(독자, 분야)를 필수분야(분야)로 나누면 모든 필수분야에 관심을 등록한 독자를 구하는 식으로 이해할 수 있다. 관계해석은 원하는 결과가 만족할 논리 조건을 적는 방식이다.
- 01 →
행을 고른다
- 02 →
열을 고른다
- 03 →
중복 규칙을 확인한다
- 04
모든 조건을 만족하는지 확인한다
같은 상황에서 비교하기
| 개념 | 기준 | 확인할 점 |
|---|---|---|
| σ 선택 | 조건에 맞는 행 | WHERE와 대응해 생각한다 |
| π 투영 | 지정한 열·집합 중복 제거 | SELECT DISTINCT와 비교한다 |
| ÷ 디비전 | 모든 관련 조건 | 하나 이상이라는 조건과 구분한다 |
도서관 예제로 따라가기
관심분야={(하린, DB), (하린, SW), (도윤, DB)}, 필수분야={DB, SW}라면 디비전 결과는 {하린}이다. 단순히 DB 또는 SW 중 하나가 있는 독자를 고르는 것과 구분한다.
공통 예제 데이터 보기
| book_id | title | shelf_code | pages |
|---|---|---|---|
| 1 | SQL 입문 | DB | 120 |
| 2 | 설계 노트 | SW | 200 |
| 3 | 관계 모델 | DB | NULL |
| 4 | 분산 읽기 | NULL | 160 |
| loan_id | book_id |
|---|---|
| 11 | 1 |
| 12 | 1 |
| 13 | 2 |
내 말로 설명해 보기
DB 관심만 등록한 도윤이 디비전 결과에서 빠지는 이유는?
설명 예시 확인
필수분야 SW가 빠져 모든 조건을 만족하지 못한다. 하나 이상의 분야가 일치하는 조건만으로는 충분하지 않다.