문서 읽는 데 39분 · 25강 · 3과목 · 데이터베이스 구축

관계대수

목차 20
전체 59강 중 25강 · 3과목 · 데이터베이스 구축

24강이 릴레이션의 정적 구조(키 5종·무결성 3종)를 봤다면, 25강은 그 릴레이션을 실제로 주무르는 8개 연산자다. 관계대수란 무엇이고(절차적·폐쇄 성질) → 순수 관계 연산자 4종(σ·π·⋈·÷) → 일반 집합 연산자 4종(∪·∩·−·×) → 이 연산들이 SQL의 WHERE·SELECT·JOIN으로 어떻게 이어지는가를 관통한다. 점수밭은 순수 vs 집합 분류·σ vs π·자연조인 차수·÷('모든')·× vs ⋈ — 거의 매회 1~2문항 나오는 단원이다.

핵심 암기: 순수 관계 연산자 4종 SPJD = 셀프조디(셀렉트 σ·프로젝트 π·조인 ⋈·디비전 ÷) · σ=행(수평)/π=열(수직) · 자연조인 차수 = R + S − 공통 속성 수 · ÷ = "모든" · 카티션 곱(×)은 SPJD ❌(일반 집합 연산자)


관계대수 개요

관계대수란? — 절차적 언어 + 폐쇄 성질 ·관계대수 개요·

[정의] 관계대수(Relational Algebra) = 릴레이션을 입력으로 받아 새로운 릴레이션을 출력하는 연산의 집합. 1970년 E.F. 코드(E.F. Codd) 가 관계 데이터 모델과 함께 정립했다(24강 관계 모델 제안자와 동일 인물).

[표] 관계대수 3대 특성.

특성 의미
절차적(Procedural) '어떻게(How) 가져올지'를 단계별로 명시
입력·출력 모두 릴레이션 연산 결과가 또 다른 릴레이션
폐쇄 성질(Closure Property) 결과가 릴레이션이라 연산을 중첩 가능 (예: π(σ(R)))

🔑 암기 관계대수 = 절차적(How) · 입출력 릴레이션 · 폐쇄 성질(중첩 가능). 제안자 = E.F. 코드(1970), 관계 모델과 같은 사람. ⚠️ 함정 '관계대수 = 비절차적' ❌(→ 절차적 How) / '결과는 릴레이션이 아니다' ❌(→ 입출력 모두 릴레이션·폐쇄 성질의 근거) / '관계대수 제안자 = 다른 사람' ❌(→ E.F. 코드, 24강 관계 모델과 동일). 🎯 빈출 절차적 여부·폐쇄 성질·제안자. 간헐(개념 단독). 💡 보충 폐쇄 성질이 있어 σ로 거른 결과를 다시 π로 자르는 식의 중첩이 가능하다. 오늘 우리가 쓰는 모든 SQL의 수학 뼈대가 이 관계대수다.

관계대수 vs 관계해석 — How vs What ·관계해석·

[정의] 관계해석(Relational Calculus) = 관계대수의 쌍둥이 형제. 같은 결과를 내지만 사고방식이 정반대다 — '무엇(What)'을 원하는지 논리식으로 명시하는 비절차적 언어.

[표] 관계대수 vs 관계해석.

구분 관계대수 관계해석
언어 유형 절차적(How) 비절차적(What)
표현 방식 연산자 기호(σ·π·⋈·÷) 논리식(∀·∃·predicate)
종류 1종 2종(튜플 관계해석·도메인 관계해석)
표현력 동등(코드 정리) 동등

🔑 암기 관계대수 = 절차적·1종 / 관계해석 = 비절차적·2종(튜플·도메인). 표현력은 둘이 동등. ⚠️ 함정 '관계해석 = 절차적' ❌(→ 비절차적) / '관계해석은 1종' ❌(→ 2종·튜플/도메인) / '관계대수가 관계해석보다 표현력이 강하다' ❌(→ 동등). 🎯 빈출 절차적/비절차적 분별·관계해석 2종·표현력 동등. 보통. 💡 보충 관계대수가 '재료를 씻고 썰고 볶아라'(과정 지시)라면, 관계해석은 '매콤한 파스타 한 접시'(결과만 주문)다. 둘은 표현력이 같다.


순수 관계 연산자 4종 — SPJD 셀프조디

★ SPJD 셀프조디 ★ — 순수 관계 연산자 4종 ·순수 4종·1순위·

[정의] 순수 관계 연산자(Pure Relational Operator) = 관계 데이터 모델 전용 4종 연산자. 두문자 SPJD = 셀프조디로 묶는다.

[표] 셀프조디 4종.

두음 연산자 기호 한 줄
Select σ(시그마) 행(수평) 선택
Project π(파이) 열(수직) 선택
Join ⋈(보타이) 두 릴레이션 결합
Division ÷(나누기) '모든' 조건 만족

🔑 암기 SPJD = 셀프조디 — 셀렉트·프로젝트·조인·디비전. '셀프(self)로 조던 디비전을 평정한다' 그림으로 네 글자를 한 번에 외운다. ⚠️ 함정 카티션 곱(×)·합집합(∪)·교집합(∩)·차집합(−)은 순수 관계 연산자 ❌(→ 일반 집합 연산자 4종). '순수 관계 연산자가 아닌 것은?' → 셀·프·조·디 4글자에 없는 단어가 정답. 🎯 빈출 순수 vs 집합 분류(소거형). 거의 매회 1순위. 💡 보충 셀·프·조·디 네 글자만 흔들리지 않으면 25강 분류 함정은 끝난다. 보기에 ×가 끼면 그게 정답인 패턴이 단골.

① Select(σ) — 행(수평) 부분집합 ·Select·1순위·

[정의] Select(σ, 시그마) = 릴레이션에서 조건을 만족하는 튜플(행)만 골라내는 연산. 표기 σ_{조건}(릴레이션).

[표] 적용 예제 — 원본 student(카디 5 · 디그리 4).

학번 이름 학년 학과
2024001 김철수 2 컴퓨터
2024002 이영희 3 경영
2024003 박민수 1 컴퓨터
2024004 최지원 4 디자인
2024005 정우성 2 컴퓨터

σ_{학과='컴퓨터'}(student) 결과 (카디 3 · 디그리 4) — 행만 5→3으로 줄고, 열 수는 그대로.

학번 이름 학년 학과
2024001 김철수 2 컴퓨터
2024003 박민수 1 컴퓨터
2024005 정우성 2 컴퓨터

🔑 암기 σ = 행 = 수평 = 차수 동일 · 카디 감소 = WHERE. 다섯 단어를 묶어서 외운다. ⚠️ 함정 'σ는 열을 추출' ❌(→ ) / 'σ는 차수가 변한다' ❌(→ 차수 동일, 행만 자름) / 'σ → SELECT' ❌(→ WHERE). 🎯 빈출 σ=행·차수 동일. 거의 매회(σ vs π 분별). 💡 보충 체로 거르기 — 행을 위에서 아래로 흘려보내며 조건 맞는 행만 받아낸다. 체의 칸(열·차수)은 그대로다.

② Project(π) — 열(수직) 부분집합 ·Project·1순위·

[정의] Project(π, 파이) = 지정한 속성(열)만 뽑아내는 연산. σ가 가로로 행을 잘랐다면, π는 세로로 열을 자른다. 표기 π_{속성리스트}(릴레이션).

[표] 적용 예제 — 같은 student.

π_{이름, 학과}(student) (카디 5 · 디그리 2) — 열만 4→2.

이름 학과
김철수 컴퓨터
이영희 경영
박민수 컴퓨터
최지원 디자인
정우성 컴퓨터

π_{학과}(student) (카디 3 · 디그리 1) — 컴퓨터 3명이 1행으로 자동 병합(중복 제거).

학과
컴퓨터
경영
디자인

🔑 암기 π = 열 = 수직 = 차수 감소 · 중복 자동 제거 = SELECT(정확히는 SELECT DISTINCT). ⚠️ 함정 'π는 행을 추출' ❌(→ ) / 'π는 중복을 남긴다' ❌(→ 자동 제거·결과가 릴레이션이라 집합처럼 동작) / 'π → WHERE' ❌(→ SELECT 컬럼). 🎯 빈출 π=열·중복 제거. 거의 매회. 💡 보충 π_{학과}는 컴퓨터학과 3명이 1행으로 합쳐진다 — 그래서 π는 카디널리티도 줄 수 있다(중복 제거의 결과).

σ vs π 분별 — 1순위 함정 ·σ vs π·1순위·

[정의] σ와 π는 폐쇄 성질로 중첩해 자주 함께 쓴다. 예: π_{이름}(σ_{학과='컴퓨터'}(student)) = '컴퓨터학과 학생의 이름만'. 처리 순서는 안쪽부터 — 먼저 σ로 행을 거르고(컴퓨터 3명), 그다음 π로 이름 열만 뽑는다.

텍스트
 σ (Select)  ── 행을 가로(─)로 자른다    차수 그대로 · 카디 감소
 π (Project) ── 열을 세로(│)로 자른다    차수 감소 · 중복 제거

[표] σ vs π 한눈에.

구분 σ (Select) π (Project)
방향 행(수평) 열(수직)
차수(Degree) 동일 감소
중복 그대로 자동 제거
SQL WHERE SELECT 컬럼

🔑 암기 σ=행=수평=WHERE(차수 동일) / π=열=수직=SELECT(차수 감소·중복 제거). 이 두 줄이면 σ·π 함정의 만능 통과 카드. ⚠️ 함정 σ/π를 뒤바꾼 보기('σ는 열', 'π는 행', 'σ는 차수 변함', 'π는 WHERE')는 전부 ❌. 🎯 빈출 σ↔π 바꿔치기. 거의 매회 1순위. 💡 보충 중첩 처리 순서는 항상 안쪽 연산 먼저π(σ(R))이면 σ가 먼저 돈다.


조인과 디비전

③ Join(⋈) — 두 릴레이션 결합 + 자연조인 차수 ·Join·1순위·

[정의] Join(⋈, 보타이) = 두 릴레이션을 공통 속성 기준으로 묶는 연산. 표기 R ⋈ S(자연조인) · R ⋈_{조건} S(세타조인). 입력 2개 → 출력 1개.

[표] 자연조인 예제 — student ⋈ enrollment(공통 속성 '학번'). 조인 결과 표를 작게 보려고 학생 3명(2024001~003)으로 추렸다.

student(카디 3 · 디그리 4):

학번 이름 학년 학과
2024001 김철수 2 컴퓨터
2024002 이영희 3 경영
2024003 박민수 1 컴퓨터

enrollment(카디 4 · 디그리 3):

학번 과목코드 성적
2024001 CS101 A
2024001 CS201 B+
2024002 BA101 A-
2024003 CS101 A

student ⋈ enrollment 결과 (카디 4 · 디그리 4+3−1 = 6).

학번 이름 학년 학과 과목코드 성적
2024001 김철수 2 컴퓨터 CS101 A
2024001 김철수 2 컴퓨터 CS201 B+
2024002 이영희 3 경영 BA101 A-
2024003 박민수 1 컴퓨터 CS101 A

자연조인 차수 공식: R디그리 + S디그리 − 공통 속성 수. 여기선 4 + 3 − 1 = 6. 공통 속성 '학번'이 한 번만 살아남으니 빼준다.

🔑 암기 ⋈ = 조인 = JOIN ... ON. 자연조인 결과 차수 = R + S − 공통 속성 수 / 카디 = 매칭 쌍만(≤ R카디 × S카디). ⚠️ 함정 '자연조인 차수 = R + S' ❌(→ 공통 속성 빼기·그건 동등조인) / '⋈ = 카티션 곱' ❌(→ ⋈은 매칭만, ×는 모든 쌍). 🎯 빈출 자연조인 차수 계산. 거의 매회. 💡 보충 퍼즐 맞추기 — 두 조각의 공통 속성이 맞물리는 쌍만 결합하고, 안 맞는 조각은 버린다. 실무 SQL에서 가장 자주 쓰는 연산자.

조인 종류 — 자연 / 동등 / 세타 ·조인 종류·

[정의] 조인은 조건 거는 방식에 따라 3종. 좁은 정도로 보면 세타조인 ⊃ 동등조인 ⊃ 자연조인(자연조인이 가장 정제된 형태).

[표] 조인 3종 비교.

종류 표기 조건 공통 속성 처리 결과 차수
자연조인(Natural) R ⋈ S 같은 이름 속성 자동 = 매칭 1개로 합침 R + S − 공통
동등조인(Equi) R ⋈_{R.a=S.b} S 명시한 = 비교 양쪽 다 남김 R + S
세타조인(Theta) R ⋈_{조건θ} S <, >, ≤, ≥, ≠ 등 양쪽 다 남김 R + S

🔑 암기 자연조인만 공통 속성을 1개로 합쳐 차수 R+S−공통 / 동등·세타는 안 합쳐 R+S 그대로. 이 차이가 차수 계산 함정의 핵심. ⚠️ 함정 '동등조인 차수 = R+S−공통' ❌(→ 그건 자연조인·동등은 R+S) / '자연조인은 부등호 조건' ❌(→ = 매칭·부등호는 세타조인). 🎯 빈출 자연 vs 동등 차수 차이. 보통. 💡 보충 외부조인(LEFT/RIGHT/FULL OUTER JOIN)은 오늘 범위 밖이지만 키워드만 — NULL로 채워 비매칭 행도 보존. 보기에 'NULL 보존'이 보이면 외부조인.

⋈ 중첩 — student ⋈ enrollment ⋈ course ·조인 중첩·

[정의] 폐쇄 성질로 조인 결과를 또 조인한다. course까지 묶어 '수강생 + 과목명' 한 화면을 만든다(24강 N:M 분해 student·enrollment·course 3 테이블 회수).

[표] course(카디 3 · 디그리 3).

과목코드 과목명 학점
CS101 자료구조 3
CS201 데이터베이스 3
BA101 회계원리 3

student ⋈ enrollment ⋈ course 결과 (카디 4 · 디그리 = 6 + 3 − 1 = 8, 공통 속성 '과목코드').

학번 이름 학년 학과 과목코드 성적 과목명 학점
2024001 김철수 2 컴퓨터 CS101 A 자료구조 3
2024001 김철수 2 컴퓨터 CS201 B+ 데이터베이스 3
2024002 이영희 3 경영 BA101 A- 회계원리 3
2024003 박민수 1 컴퓨터 CS101 A 자료구조 3

🔑 암기 조인 결과도 릴레이션 → 얼마든지 중첩 가능. 3 테이블 차수 = 6 + course(3) − 공통(과목코드 1) = 8. ⚠️ 함정 '⋈은 두 릴레이션만 다룬다' ❌(→ 폐쇄 성질로 중첩 가능). 🎯 빈출 다중 조인·폐쇄 성질. 간헐. 💡 보충 화면 하나를 그릴 때 평균 3~7개 테이블을 ⋈으로 묶는 게 실무 SQL의 일상이다. 24강에서 N:M으로 분해한 student·enrollment·course가 여기서 그대로 다시 묶인다.

④ Division(÷) — '모든' 조건 만족 ·Division·1순위·

[정의] Division(÷, 나누기) = 릴레이션 R에서 S의 모든 튜플과 빠짐없이 연결되는 부분 튜플을 찾는 연산. 핵심 단어는 단 하나 — '모든'(All-quantifier ∀). 표기 R ÷ S.

[표] 표준 예제 — '모든 과목(CS101·CS201·BA101)을 전부 수강한 학생'.

준비물 정의 내용
R π_{학번, 과목코드}(enrollment) 학번-과목 매핑
S π_{과목코드}(course) 전체 과목코드(CS101·CS201·BA101)
R ÷ S S의 모든 과목코드와 매칭되는 학번 3과목 다 들은 학생만

위 enrollment 기준으론 3과목을 다 들은 학생이 없어 결과는 공집합. 만약 2024001이 BA101까지 들었다면 → {2024001} 하나가 나온다.

🔑 암기 ÷ = '모든'(All-quantifier ∀). '모든 ~를 ~한 ~' 시나리오면 ÷ 즉답. SQL은 GROUP BY ... HAVING COUNT로 간접 구현. ⚠️ 함정 보기에 '일부·적어도 하나·최소 한 개'가 보이면 ÷ ❌(→ σ나 ⋈). 반드시 '모든·전부·∀'여야 ÷. 🎯 빈출 '모든 ~' 시나리오 → ÷ 용어 찾기. 거의 매회. 💡 보충 스탬프 카드 10칸을 전부 채운 사람만 무료 음료를 받는 그림 — '전부 채웠는가'를 묻는 게 ÷. SNS에서 '모든 인증 계정을 팔로우한 유저' 추출도 같은 ÷다.


일반 집합 연산자 4종

일반 집합 연산자 4종 — ∪·∩·−·× + 합병 가능 조건 ·집합 연산자·

[정의] 수학의 집합 연산을 릴레이션에 그대로 가져온 4종 — 합집합(∪)·교집합(∩)·차집합(−)·카티션 곱(×, Cartesian Product).

[표] 4종 정리.

연산 기호 의미 결과 카디
합집합 R ∪ S R 또는 S에 있는 튜플 ≤ R + S(중복 제거)
교집합 R ∩ S R과 S 모두에 있는 튜플 ≤ min(R, S)
차집합 R − S R에 있고 S엔 없는 튜플 ≤ R
카티션 곱 R × S 모든 튜플 쌍 조합 R카디 × S카디

⚠️ 합병 가능 조건(∪·∩·− 3종에만 적용): ① 차수(디그리) 동일도메인 동일. 둘 중 하나라도 어긋나면 ∪·∩·−는 아예 적용 불가. 카티션 곱(×)은 이 조건이 적용되지 않는다(차수 달라도 OK).

🔑 암기 합병 가능 = 차수 동일 + 도메인 동일(∪·∩·− 3종). 카티션 곱(×)만 예외 — 차수 합산·카디 곱. ⚠️ 함정 '카티션 곱도 합병 가능 조건 필요' ❌(→ ×는 무관) / '합집합은 차수 달라도 가능' ❌(→ 차수·도메인 동일 필수). 🎯 빈출 합병 가능 조건·× 카디 계산. 보통. 💡 보충 카티션 곱 결과: 차수 = R + S(합산), 카디 = R × S(곱). ×는 일단 모든 쌍을 다 곱해놓고 보는 연산이다.

카티션 곱(×) vs 자연조인(⋈) — 최빈출 함정 ·× vs ⋈·1순위·

[정의] 25강 함정 중의 함정 — × 와 ⋈ 의 분별. 수험생이 가장 자주 미끄러지는 지점이다.

[표] × vs ⋈ 비교.

구분 카티션 곱(×) 자연조인(⋈)
분류 일반 집합 연산자 순수 관계 연산자(SPJD)
조건 없음 — 모든 쌍 공통 속성 = 매칭
결과 차수 R + S(합산) R + S − 공통 속성 수
결과 카디 R카디 × S카디(곱) ≤ R카디 × S카디(매칭만)
의미 모든 가능한 조합 의미 있는 조합만

🔑 암기 × = 무조건 곱(R카디×S카디)·집합 연산자 / ⋈ = 매칭만(≤곱)·순수 연산자. 셀프조디에 × 없음. ⚠️ 함정 '카티션 곱 = 순수 관계 연산자' ❌(→ 집합 연산자) / '× = ⋈(같다)' ❌(→ ×는 모든 쌍, ⋈은 매칭만). 🎯 빈출 × vs ⋈ 카디 계산·분류. 거의 매회. 💡 보충 R카디 5·S카디 4면 R × S는 무조건 카디 20(의미 없는 조합까지 전부), R ⋈ S는 ≤20(공통 속성 맞는 쌍만).


SQL로 가는 다리

8연산자 종합 + SQL 매핑 ·SQL 다리·1순위·

[정의] 오늘 배운 8연산자를 한 장으로 압축하고, 각각이 SQL의 어디로 이어지는지 본다. 이게 관계대수가 SQL의 뼈대인 이유다.

[표] 8연산자 ↔ SQL 매핑.

연산자 기호 분류 즉답 SQL
Select σ 순수 WHERE
Project π 순수 SELECT 컬럼
Join 순수 조인 JOIN ... ON
Division ÷ 순수 모든 GROUP BY ... HAVING COUNT(간접)
합집합 집합 또는 UNION
교집합 집합 그리고 INTERSECT
차집합 집합 빼기 EXCEPT / MINUS
카티션 곱 × 집합 모든 쌍 CROSS JOIN

🔑 암기 σ→WHERE · π→SELECT · ⋈→JOIN · ÷→HAVING COUNT(간접). σ·π·⋈ 세 직접 매핑은 반드시 입에 붙이기. ⚠️ 함정 '÷ → ORDER BY' ❌(→ HAVING COUNT·간접·ORDER BY는 정렬) / 'σ → SELECT' ❌(→ WHERE / SELECT는 π). 🎯 빈출 관계대수↔SQL 매핑(짝짓기 오류). 거의 매회. 💡 보충 27강에서 σ·π·⋈·÷가 본격 SQL 문법(WHERE·SELECT·JOIN·HAVING)으로 변신한다 — 25강 셀프조디가 곧 27강 SQL의 밑그림이다.


기출 다지기

[기출 1 출제] 다음 중 순수 관계 연산자(Pure Relational Operator)에 속하지 않는 것은? (소거형)

  • ① Select(σ)
  • ② Project(π)
  • ③ Cartesian Product(×)
  • ④ Division(÷)
정답 및 해설 보기

정답 ③

순수 관계 연산자 = SPJD = 셀프조디 = Select(σ)·Project(π)·Join(⋈)·Division(÷) 4종. 카티션 곱(×)은 일반 집합 연산자(∪·∩·−·×)에 속한다.

선지 분류 판정
① Select 순수(S) 옳음
② Project 순수(P) 옳음
Cartesian Product 일반 집합 정답(아닌 것)
④ Division 순수(D) 옳음

🔑 셀·프·조·디 4글자에 없는 단어가 정답 — ×·∪·∩·−는 전부 일반 집합 연산자.

[기출 2 출제] 관계대수 연산에 대한 설명으로 옳은 것은? (설명 판단형)

  • ① σ는 릴레이션의 열(속성)을 추출하는 연산이다.
  • ② π는 릴레이션의 행(튜플)을 추출하는 연산이다.
  • ③ σ의 결과 차수(Degree)는 원본 릴레이션과 동일하다.
  • ④ π는 SQL의 WHERE 절에 대응된다.
정답 및 해설 보기

정답 ③

σ는 행만 자르므로 열 수(차수)는 그대로다.

선지 판정 근거
① σ는 열 추출 오답 σ는 (수평 부분집합)
② π는 행 추출 오답 π는 (수직 부분집합)
σ 차수 동일 정답 σ는 행만 자르니 열 수 그대로
④ π → WHERE 오답 π → SELECT 컬럼, σ → WHERE

🔑 σ=행=수평=WHERE / π=열=수직=SELECT — 방향만 안 헷갈리면 다 맞는다.

[기출 3 출제] 릴레이션 R(A, B, C, D)와 S(C, D, E)가 있다. 자연조인 R ⋈ S의 결과 릴레이션의 차수(Degree)는? (값 계산)

  • ① 4
  • ② 5
  • ③ 6
  • ④ 7
정답 및 해설 보기

정답 ②

자연조인 차수 = R디그리 + S디그리 − 공통 속성 수. R(A,B,C,D)=4, S(C,D,E)=3, 공통 속성 C·D=2개 → 4 + 3 − 2 = 5(스키마 A,B,C,D,E).

헷갈리는 보기 판정 근거
4 + 3 = 7 오답 공통 안 뺌 → 동등조인 차수
4 + 3 − 2 = 5 정답 자연조인 — 공통 C·D를 1개씩만 남김
4 × 3 = 12 오답 차수는 곱이 아니라 합산(카티션 곱도 7)

🔑 자연조인은 공통 속성을 1개로 합치니 빼기, 동등조인은 양쪽 다 남기니 그대로 합산.

[기출 4 출제] 다음 질의에 가장 적합한 관계대수 연산자는? (설명→용어 찾기)

'모든 과목을 수강한 학생의 학번을 검색하라.'

  • ① Select(σ)
  • ② Project(π)
  • ③ Join(⋈)
  • ④ Division(÷)
정답 및 해설 보기

정답 ④

발문에 '모든'이 보이는 순간 ÷ 확정. 표준 풀이는 R = π_{학번,과목코드}(enrollment) ÷ S = π_{과목코드}(course) — S의 모든 과목코드와 매칭되는 학번이 곧 '모든 과목 수강한 학생'.

선지 핵심 의미 적합도
① σ 조건 만족 행 추출 오답 — 단일 행 조건
② π 열 추출 오답 — 행 선별 못 함
③ ⋈ 두 릴레이션 결합 오답 — '모든'의 의미 없음
÷ 모든 ~ 만족 정답

🔑 '일부·적어도 하나·최소'면 σ나 ⋈, '모든·전부·∀'면 ÷ — 단어 하나로 갈린다.

[기출 5 출제] 관계대수와 SQL의 매핑이 틀린 것은? (짝짓기 오류형)

  • ① σ → WHERE 절
  • ② π → SELECT 컬럼리스트
  • ③ ⋈ → JOIN ... ON
  • ④ ÷ → ORDER BY 절
정답 및 해설 보기

정답 ④

÷의 SQL 표현은 GROUP BY ... HAVING COUNT(또는 NOT EXISTS 중첩)로 간접 구현된다. ORDER BY는 정렬 절이라 ÷와 무관.

선지 매핑 정오
① σ → WHERE 행 필터 옳음
② π → SELECT 컬럼 열 선택 옳음
③ ⋈ → JOIN ON 결합 옳음
÷ → ORDER BY ORDER BY는 정렬 정답(틀림)

🔑 σ·π·⋈ 셋은 SQL에 직접(WHERE·SELECT·JOIN), ÷는 간접(HAVING COUNT). ORDER BY는 8연산자 어디에도 직접 대응이 없다.

[기출 6 출제] 카디널리티가 각각 5, 4인 두 릴레이션 R, S에 대한 설명으로 옳은 것은? (값 계산·분별)

  • ① R × S의 결과 카디널리티는 9이다.
  • ② R × S의 결과 카디널리티는 20이다.
  • ③ 카티션 곱(×)은 순수 관계 연산자에 속한다.
  • ④ R ⋈ S의 결과 카디널리티는 항상 20이다.
정답 및 해설 보기

정답 ②

카티션 곱 결과 카디 = R카디 × S카디 = 5 × 4 = 20(모든 튜플 쌍 조합).

선지 판정 근거
① 카디 9 오답 9 = 5 + 4(합)·카티션 곱은
카디 20 정답 5 × 4 = 20(모든 쌍)
③ × = 순수 연산자 오답 ×는 일반 집합 연산자(셀프조디 ❌)
④ ⋈ 항상 20 오답 ⋈은 매칭만 → ≤20(항상 20 아님)

🔑 × = 무조건 곱(20)·집합 연산자 / ⋈ = 매칭만(≤20)·순수 연산자.

[기출 7 출제] 관계해석(Relational Calculus)에 대한 설명으로 옳지 않은 것은? (부정형)

  • ① 비절차적(Non-procedural) 언어이다.
  • ② 원하는 결과가 무엇인지(What)를 명시하는 언어이다.
  • ③ 튜플 관계해석과 도메인 관계해석 두 종류가 있다.
  • ④ 관계대수보다 표현력(Expressive Power)이 강하다.
정답 및 해설 보기

정답 ④

관계대수와 관계해석은 표현력이 동등하다(코드 정리). 어느 한쪽이 더 강하지 않다.

선지 판정 근거
① 비절차적 옳음 관계해석 = 비절차적(What)
② What 명시 옳음 결과만 명시(과정 X)
③ 2종 옳음 튜플·도메인 관계해석
표현력 더 강함 정답(틀림) 관계대수와 동등

🔑 관계대수=절차적·1종 / 관계해석=비절차적·2종, 표현력은 동등.


한 장 요약

영역 핵심 암기팁
관계대수 절차적(How)·입출력 릴레이션·폐쇄 성질·E.F.코드 1970 중첩 가능(폐쇄 성질)
관계해석 비절차적(What)·2종(튜플·도메인)·표현력 동등 관계대수=1종, 관계해석=2종
순수 4종 Select·Project·Join·Division SPJD = 셀프조디
σ (Select) 행(수평)·차수 동일·카디 감소 σ=행=WHERE
π (Project) 열(수직)·차수 감소·중복 자동 제거 π=열=SELECT(DISTINCT)
⋈ (Join) 두 릴레이션 결합·공통 속성 매칭 자연조인 차수 = R+S−공통
조인 3종 자연(합침)·동등(=)·세타(부등호) 자연만 R+S−공통, 동등·세타는 R+S
÷ (Division) '모든' 조건 만족(All-quantifier ∀) ÷=모든
집합 4종 ∪·∩·−·× 합병 가능 = 차수+도메인 동일(× 제외)
× vs ⋈ ×=곱·집합 / ⋈=매칭·순수 셀프조디에 × 없음
SQL 다리 σ→WHERE·π→SELECT·⋈→JOIN·÷→HAVING COUNT 27강 본격 변신

🎯 합격 한 끗: 25강은 셀프조디(SPJD) 한 두음이 거의 전부다 — σ=행·π=열·⋈=조인·÷=모든. 거기에 함정 5쌍만 더 굴리면 끝 — ① σ↔π 바꿔치기 · ② 카티션 곱(×)=순수 관계 연산자(❌·집합) · ③ 자연조인 차수=R+S(❌·−공통 빼기) · ④ ×=⋈(❌·곱 vs 매칭) · ⑤ ÷=일부 만족(❌·모든). 이 다섯이면 25강 출제분의 80%는 즉답이다.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.