관계 대수와 관계 해석
쉽게 말하면
관계 대수는 표를 다루는 계산법이에요. 조건에 맞는 행만 고르는 셀렉트(σ), 원하는 열만 뽑는 프로젝트(π), 두 표를 공통 열로 잇는 조인(⋈), 나누기 같은 디비전(÷)이 있어요. 집합처럼 합치기(∪), 겹치는 것(∩), 빼기(−), 모든 짝 만들기(×)도 있어요. 관계 대수는 '어떻게 구할지' 순서를 적는 절차적 언어이고, 관계 해석은 '무엇을 원하는지'만 적는 비절차적 언어예요.
시험용 정의
관계 대수는 원하는 정보를 얻기 위해 어떻게 연산할지 순서를 명시하는 절차적 언어다. 순수 관계 연산자: 셀렉트 σ(조건에 맞는 튜플, 수평 연산), 프로젝트 π(속성 추출, 수직 연산, 중복 제거), 조인 ⋈(공통 속성으로 두 릴레이션 결합), 디비전 ÷(나누는 릴레이션의 모든 튜플과 관련된 튜플). 일반 집합 연산자: 합집합 ∪, 교집합 ∩, 차집합 −, 교차곱(카티션 프로덕트) ×. 합·교·차집합은 두 릴레이션이 합병 가능(속성 수와 도메인이 같음)해야 한다. 관계 해석(코드 제안)은 무엇을 원하는지만 기술하는 비절차적 언어로 튜플 관계 해석과 도메인 관계 해석이 있으며, 관계 대수와 표현 능력이 같다.
비유로 이해하기
학생 명단에서 '3학년만'은 셀렉트(줄 고르기), '이름 칸만'은 프로젝트(칸 고르기), 학생 명단과 수강 명단을 학번으로 이어 붙이기는 조인이다. 관계 대수는 길 찾기 순서를 하나하나 알려 주는 것, 관계 해석은 목적지만 말하는 것이다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 절차적 언어 | 결과를 얻는 방법과 순서를 적는 언어 |
| 비절차적 언어 | 원하는 결과만 적고 방법은 시스템에 맡기는 언어 |
| 합병 가능 | 두 릴레이션의 차수가 같고 대응 속성의 도메인이 같은 것 |
| 자연 조인 | 공통 속성으로 조인하고 중복 속성을 하나만 남긴 조인 |
연산자 기호와 SQL 대응
| 연산 | 기호 | SQL로 치면 | 결과 |
|---|---|---|---|
| 셀렉트 | σ | WHERE | 조건에 맞는 행 |
| 프로젝트 | π | SELECT 열 목록 (DISTINCT) | 선택한 열 |
| 조인 | ⋈ | JOIN | 결합한 행 |
| 디비전 | ÷ | (직접 대응 없음) | B의 모든 값과 짝을 이루는 A의 값 |
| 합집합 | ∪ | UNION | 두 결과 합 (중복 제거) |
| 교집합 | ∩ | INTERSECT | 공통 행 |
| 차집합 | − | EXCEPT / MINUS | A에만 있는 행 |
| 교차곱 | × | CROSS JOIN | 모든 조합 |
결과 크기 계산
| 연산 | 결과 차수 | 결과 카디널리티 |
|---|---|---|
| R × S (R: 차수 3·튜플 4, S: 차수 2·튜플 5) | 3 + 2 = 5 | 4 × 5 = 20 |
| R ∪ S (합병 가능) | 같음 | 중복 제거 후 개수 (최대 합) |
표기 읽기
σ 학년=3 (학생): 학생에서 학년이 3인 튜플π 이름, 학과 (학생): 학생의 이름·학과 열π 이름 (σ 학과='컴퓨터' (학생)): 컴퓨터 학과 학생의 이름
시험에 이렇게 나와요
- 순수 관계 연산자 → 셀렉트(σ)·프로젝트(π)·조인(⋈)·디비전(÷) / 일반 집합 → 합·교·차·카티션 프로덕트
- 수평 부분집합(행 고르기) → 셀렉트, 수직(열 고르기) → 프로젝트
- 관계 대수는 절차적(어떻게 구할지), 관계 해석은 비절차적(무엇을 원하는지)
- 카티션 프로덕트 결과 → 차수는 더하고, 카디널리티는 곱한다
- 관계 해석 기호 → ∀ 모든 것에 대하여, ∃ 존재한다
확인 문제
Q1. 릴레이션에서 조건을 만족하는 튜플(행)만 골라내는 관계 대수 연산은?
- 셀렉트 σ
- 프로젝트 π
- 조인 ⋈
- 디비전 ÷
정답 보기
1번 셀렉트 σ
셀렉트(σ)는 행을 고르는 수평 연산, 프로젝트(π)는 열을 뽑는 수직 연산이다. SQL로 치면 σ는 WHERE, π는 SELECT 열 목록이다.
Q2. 순수 관계 연산자가 아닌 것은?
- Join
- Cartesian Product
- Project
- Select
정답 보기
2번 Cartesian Product
교차곱(×)은 일반 집합 연산자.
Q3. 차수가 3이고 카디널리티가 4인 R과, 차수가 2이고 카디널리티가 5인 S의 교차곱(R × S) 결과는?
- 차수 5, 카디널리티 9
- 차수 6, 카디널리티 20
- 차수 5, 카디널리티 20
- 차수 6, 카디널리티 9
정답 보기
3번 차수 5, 카디널리티 20
차수는 3+2, 카디널리티는 4×5.
Q4. 관계 해석에 대한 설명으로 옳은 것은?
- 원하는 정보가 무엇인지만 정의하는 비절차적 언어다
- 절차적 언어다
- 관계 대수보다 표현 능력이 떨어진다
- SQL과 관계가 없다
정답 보기
1번 원하는 정보가 무엇인지만 정의하는 비절차적 언어다
코드가 제안한 비절차적 언어로 관계 대수와 표현 능력이 같다.
Q5. 릴레이션에서 원하는 속성만 추출하는 수직 연산의 기호는?
- ÷
- ⋈
- σ
- π
정답 보기
4번 π
π(프로젝트)다. 세로로 원하는 속성(열)만 고른다. σ(셀렉트)는 가로로 조건에 맞는 튜플(행)을, ⋈는 조인을, ÷는 디비전이다.
헷갈리기 쉬운 O·X
셀렉트 연산은 릴레이션의 열을 추출하는 수직 연산이다.
정답 보기
X 셀렉트는 행을 고르는 수평 연산. 열 추출은 프로젝트.
합집합 연산을 하려면 두 릴레이션이 합병 가능해야 한다.
정답 보기
O
관계 대수는 원하는 결과를 얻는 방법과 순서를 기술하는 절차적 언어다.
정답 보기
O