20|관계 대수·관계 해석·관계 연산자

글 요약

사무자동화산업기사 – 관계 대수와 관계 해석의 차이, 선택·추출·결합·나누기와 합집합·교집합·차집합·교차곱 연산자를 정리합니다.

관계형 데이터베이스에서는 릴레이션에 저장된 모든 데이터를 그대로 사용하는 것이 아니라, 필요한 행과 열을 고르고 여러 릴레이션을 결합하여 질의에 맞는 새로운 릴레이션을 만듭니다. 이러한 데이터 조작의 이론적 기반이 관계 대수와 관계 해석입니다.

이 장에서는 관계 대수와 관계 해석의 차이를 먼저 구분하고, 관계 대수 연산자인 선택·추출·결합·나누기의 의미와 사용 방법을 살펴봅니다. 이어서 합집합·교집합·차집합·교차곱의 조건과 결과, 교차곱에서 차수와 카디널리티를 계산하는 방법을 정리합니다.

이 장의 핵심 내용

  • 관계 대수는 릴레이션과 연산자를 이용해 원하는 결과를 만드는 연산적 방법입니다.
  • 관계 해석은 결과를 구하는 절차보다 원하는 데이터의 조건을 선언하는 방법입니다.
  • 튜플 관계 해석은 튜플 변수를, 도메인 관계 해석은 속성값 변수를 사용합니다.
  • 선택은 조건을 만족하는 행을 고르고, 추출은 필요한 열을 선택합니다.
  • 결합은 관련 속성을 기준으로 두 릴레이션의 튜플을 연결합니다.
  • 나누기는 주어진 모든 조건을 만족하는 대상을 구할 때 사용합니다.
  • 합집합·교집합·차집합에는 두 릴레이션의 합병 가능 조건이 필요합니다.
  • 교차곱의 차수는 두 차수의 합이고, 카디널리티는 두 카디널리티의 곱입니다.

관계 대수와 관계 해석은 무엇이 다른가?

관계 대수(Relational Algebra)와 관계 해석(Relational Calculus)은 모두 관계형 데이터베이스에서 원하는 정보를 표현하는 형식 질의 언어입니다. 두 방식은 같은 종류의 질의를 표현할 수 있지만, 질의를 작성하는 관점이 다릅니다.

비교 항목관계 대수관계 해석
영문Relational AlgebraRelational Calculus
기본 관점어떤 연산을 어떤 순서로 수행할 것인가어떤 조건을 만족하는 정보가 필요한가
성격절차적·연산적비절차적·선언적
표현 방법선택·추출·결합 등의 연산자 조합논리식·조건·정량자 사용
주요 활용질의 처리와 실행 계획의 내부 표현사용자가 원하는 결과 조건의 표현
관계 대수는 결과를 만드는 연산 과정을 표현하고, 관계 해석은 결과가 만족해야 할 조건을 표현합니다.

관계 대수

학생 릴레이션에서 전자과 학생을 선택한 뒤 학번과 이름을 추출하는 것처럼 연산의 순서를 표현합니다.

선택 → 추출

관계 해석

전자과에 속하는 학생 가운데 학번과 이름을 결과로 반환하라는 조건을 논리식으로 표현합니다.

원하는 결과 조건 선언

관계 대수는 ‘어떻게 구하는가’를 연산으로 표현하고, 관계 해석은 ‘무엇을 구하는가’를 조건으로 표현합니다.

관계 해석에는 어떤 종류가 있는가?

관계 해석은 변수의 대상에 따라 튜플 관계 해석과 도메인 관계 해석으로 구분합니다. 두 방식 모두 비교 연산자, 논리 연산자와 정량자를 이용하여 원하는 결과를 정의합니다.

구분튜플 관계 해석도메인 관계 해석
영문Tuple Relational CalculusDomain Relational Calculus
변수의 대상릴레이션의 튜플 전체각 속성의 도메인 값
변수 의미한 행을 나타내는 튜플 변수하나의 속성값을 나타내는 도메인 변수
유사한 질의 방식SQL과 비교하기 쉬움QBE와 비교하기 쉬움
튜플 관계 해석은 행 단위로, 도메인 관계 해석은 속성값 단위로 변수를 설정합니다.

관계 해석의 정량자

기호명칭의미
전칭 정량자
Universal Quantifier
모든 대상에 대하여 조건이 성립함
존재 정량자
Existential Quantifier
조건을 만족하는 대상이 하나 이상 존재함
나누기 연산처럼 ‘모든 조건을 만족하는 대상’을 표현할 때 전칭 정량자의 개념이 중요합니다.

기호 주의: 는 ‘모든 것에 대하여’, 는 ‘적어도 하나가 존재함’을 의미합니다. 두 기호의 의미를 반대로 암기하지 않도록 주의합니다.

관계 대수 연산자는 어떻게 분류하는가?

관계 대수 연산자는 순수 관계 연산자와 일반 집합 연산자로 구분하는 경우가 많습니다. 순수 관계 연산자는 릴레이션의 행·열·관계를 직접 조작하며, 일반 집합 연산자는 수학의 집합 연산을 릴레이션에 적용합니다.

구분연산자기호핵심 기능
순수 관계 연산자선택
Select
σ조건을 만족하는 행 선택
추출
Project
π필요한 열 선택
결합
Join
관련된 두 릴레이션 연결
나누기
Division
÷모든 조건을 만족하는 값 검색
일반 집합 연산자합집합
Union
두 릴레이션의 튜플을 합침
교집합
Intersection
두 릴레이션에 공통된 튜플 검색
차집합
Difference
첫 번째 릴레이션에만 있는 튜플 검색
교차곱
Cartesian Product
×두 릴레이션의 모든 튜플 조합 생성
연산자 분류는 교재에 따라 기본 연산자와 유도 연산자로 구분하기도 하므로 문제에서 제시한 분류 기준을 확인해야 합니다.

이론적 분류 차이: 데이터베이스 이론에서는 선택·추출·합집합·차집합·교차곱 등을 기본 연산으로 보고, 결합·교집합·나누기를 기본 연산의 조합으로 표현 가능한 유도 연산으로 설명하기도 합니다.

선택 연산자는 행을 어떻게 고르는가?

선택(Select)은 릴레이션의 튜플 가운데 주어진 조건을 만족하는 행만 선택하는 연산입니다. 릴레이션을 수평 방향으로 일부 잘라 내는 것과 같으므로 수평적 연산이라고도 합니다.

표현: σ학과=’전자과’(학생)

다음 학생 릴레이션에서 학과가 전자과인 학생을 선택해 보겠습니다.

학번이름학과졸업연도
b101박수준국문과2025
c101김희영전자과2026
c103두옥이전자과2027
d101면처리영문과2028
선택 연산을 적용하기 전의 학생 릴레이션
학번이름학과졸업연도
c101김희영전자과2026
c103두옥이전자과2027
학과가 전자과인 튜플만 선택한 결과

차수

열은 삭제되지 않으므로 결과 릴레이션의 차수는 원래 릴레이션과 같습니다.

카디널리티

조건에 맞지 않는 행이 제거되므로 원래 릴레이션보다 작거나 같습니다.

SQL과 혼동 주의: 관계 대수의 Select는 행을 선택합니다. SQL에서는 행 조건이 주로 WHERE 절에 해당하고, SQL의 SELECT 절은 열을 지정하므로 관계 대수의 추출과 대응되는 부분이 있습니다.

추출 연산자는 열을 어떻게 고르는가?

추출(Project 또는 Projection)은 릴레이션에서 필요한 속성만 선택하는 연산입니다. 열을 수직 방향으로 선택하므로 수직적 연산이라고도 하며, 연산 기호로 파이(π)를 사용합니다.

표현: π학번, 이름(학생)

앞의 학생 릴레이션에서 학번과 이름 속성만 추출하면 다음과 같은 결과가 만들어집니다.

학번이름
b101박수준
c101김희영
c103두옥이
d101면처리
학생 릴레이션에서 학번과 이름만 추출한 결과
  • 선택한 속성만 결과 릴레이션에 남습니다.
  • 결과 릴레이션의 차수는 선택한 속성의 수가 됩니다.
  • 고전적인 관계 대수는 집합을 기반으로 하므로 같은 결과 튜플은 중복을 제거합니다.
  • 열만 줄이더라도 중복 제거에 따라 카디널리티가 감소할 수 있습니다.

선택은 행을 고르고 차수를 유지하며, 추출은 열을 고르고 차수를 줄일 수 있습니다.

결합 연산자는 두 릴레이션을 어떻게 연결하는가?

결합(Join)은 두 릴레이션에서 서로 관련된 튜플을 연결하여 하나의 새로운 릴레이션을 만드는 연산입니다. 일반적으로 공통 속성이나 지정한 결합 조건을 기준으로 튜플을 대응시킵니다.

학생 릴레이션에는 학과코드가 저장되어 있고, 학과 릴레이션에는 학과코드별 학과명과 사무실이 저장되어 있다고 가정합니다. 두 릴레이션을 학과코드로 자연 결합하면 공통 속성값이 같은 튜플끼리 연결되고, 공통 속성인 학과코드는 결과에서 한 번만 나타납니다.

학생

학번이름학과코드
S001김민수D01
S002이지연D02
S003박준호D01

학과

학과코드학과명사무실
D01전자과공학관 201호
D02국문과인문관 301호
학번이름학과코드학과명사무실
S001김민수D01전자과공학관 201호
S002이지연D02국문과인문관 301호
S003박준호D01전자과공학관 201호
학생과 학과 릴레이션을 학과코드로 자연 결합한 결과
결합 종류의미결과의 공통 속성
세타 결합
Theta Join
=, <, > 등의 일반 비교 조건으로 결합두 릴레이션의 속성을 모두 유지
동등 결합
Equi Join
동등 비교 조건만 사용하는 세타 결합동일한 결합 속성이 두 번 남을 수 있음
자연 결합
Natural Join
이름이 같은 공통 속성의 값이 같은 튜플을 결합공통 속성을 한 번만 남김

주의: 단순히 두 릴레이션의 모든 튜플 조합을 만드는 것은 결합이 아니라 교차곱입니다. 결합은 교차곱 결과에 결합 조건을 적용한 연산으로 이해할 수 있습니다.

나누기 연산자는 어떤 값을 검색하는가?

나누기(Division)는 ‘주어진 모든 조건을 만족하는 대상’을 검색하는 연산입니다. 나누어지는 릴레이션을 R(X, Y), 나누는 릴레이션을 S(Y)라고 하면, R ÷ S는 S에 있는 모든 Y값과 관계를 가지는 X값을 반환합니다.

표현: 수강R(학생ID, 과목코드) ÷ 필수과목S(과목코드)

의미: 모든 필수과목을 수강한 학생ID를 검색합니다.

수강 R

학생ID과목코드
S001C101
S001C102
S001C103
S002C101
S002C102
S003C102
S003C103

필수과목 S

과목코드
C101
C102
학생ID(결과)
S001
S002
‘수강R ÷ 필수과목S’의 결과: 모든 필수과목을 수강한 학생

필수과목 C101과 C102를 모두 수강한 학생은 S001과 S002입니다. S003은 C102는 수강했지만 C101을 수강하지 않았으므로 결과에서 제외됩니다.

  • 나누는 릴레이션 S의 속성은 나누어지는 릴레이션 R의 속성에 포함되어야 합니다.
  • 결과에는 R에만 있고 S에는 없는 속성이 남습니다.
  • ‘모든’, ‘전부’, ‘각각 모두’라는 표현이 있는 질의에서 나누기 연산을 검토합니다.

교재 표현 교정: 나누는 릴레이션(S)이 나누어지는 릴레이션(R)의 모든 속성을 포함하는 것이 아닙니다. 반대로 나누는 릴레이션(S)의 속성 집합이 나누어지는 릴레이션(R)의 속성 집합에 포함되어야 합니다.

합집합·교집합·차집합에는 어떤 조건이 필요한가?

합집합·교집합·차집합은 두 릴레이션을 집합처럼 처리하는 이항 연산입니다. 이 세 연산을 수행하려면 두 릴레이션이 합병 가능해야 합니다.

합병 가능 조건은 두 릴레이션의 차수가 같고, 대응하는 속성의 도메인이 서로 호환되는 것입니다.

릴레이션 R

학생ID
S001
S002
S003

릴레이션 S

학생ID
S002
S003
S004
연산기호결과의미
합집합R ∪ SS001, S002, S003, S004R 또는 S에 포함된 모든 튜플
교집합R ∩ SS002, S003R과 S에 공통으로 포함된 튜플
차집합R − SS001R에는 있지만 S에는 없는 튜플
반대 방향 차집합S − RS004S에는 있지만 R에는 없는 튜플
합집합과 교집합은 순서를 바꾸어도 결과가 같지만 차집합은 연산 순서에 따라 결과가 달라집니다.

중복 처리: 고전적인 관계 대수는 릴레이션을 튜플의 집합으로 다루므로 합집합·교집합·차집합 결과에 동일한 튜플이 중복되어 나타나지 않습니다.

교차곱은 차수와 카디널리티를 어떻게 계산하는가?

교차곱(Cartesian Product)은 첫 번째 릴레이션의 각 튜플과 두 번째 릴레이션의 각 튜플을 모두 조합하여 새로운 릴레이션을 만드는 연산입니다.

릴레이션 R의 튜플 하나마다 릴레이션 S의 모든 튜플이 연결되므로 결과 튜플 수는 두 릴레이션의 카디널리티를 곱한 값입니다. 결과 속성에는 두 릴레이션의 모든 속성이 포함되므로 차수는 두 차수의 합입니다. 교차곱에서는 한쪽 릴레이션의 모든 행이 다른 쪽 릴레이션의 모든 행과 조합되기 때문에 차수는 합으로, 카디널리티는 곱으로 계산됩니다.

두 릴레이션에 같은 이름의 속성이 있으면 결과 속성을 구분하기 위해 릴레이션 이름을 함께 표시하거나 이름 변경 연산자 ρ를 사용할 수 있습니다.

차수(R×S)=차수(R)+차수(S)\text{차수}(R \times S)=\text{차수}(R)+\text{차수}(S)
카디널리티(R×S)=카디널리티(R)×카디널리티(S)\text{카디널리티}(R \times S)=\text{카디널리티}(R)\times\text{카디널리티}(S)

릴레이션 R의 차수가 4이고 카디널리티가 5이며, 릴레이션 S의 차수가 6이고 카디널리티가 7이라고 가정합니다.

구분릴레이션 R릴레이션 SR × S의 결과
차수464 + 6 = 10
카디널리티575 × 7 = 35
교차곱 결과의 차수는 10이고 카디널리티는 35입니다.

합병 가능 조건: 교차곱은 합집합·교집합·차집합과 달리 두 릴레이션의 차수나 대응 도메인이 같을 필요가 없습니다.

연산자에 따라 차수와 카디널리티는 어떻게 달라지는가?

연산자차수의 변화카디널리티의 변화핵심 기준
선택 σ입력과 같음입력보다 작거나 같음행 조건
추출 π선택한 속성 수로 감소 가능중복 제거로 감소 가능열 목록
결합 ⋈결합 종류와 공통 속성에 따라 결정결합 조건에 따라 달라짐관련 속성 또는 조건
나누기 ÷나누어지는 릴레이션에서 나누는 릴레이션의 속성을 제외모든 조건을 만족한 튜플 수전칭 조건
합집합 ∪입력과 같음중복을 제외한 두 집합의 합합병 가능
교집합 ∩입력과 같음공통 튜플 수합병 가능
차집합 −입력과 같음첫 번째 릴레이션에만 있는 튜플 수합병 가능·방향 중요
교차곱 ×두 차수의 합두 카디널리티의 곱모든 튜플 조합
시험에서는 연산의 목적과 함께 결과 릴레이션의 차수와 카디널리티 변화를 묻기도 합니다.

시험에서 자주 혼동되는 개념

선택과 추출

선택은 조건에 맞는 행을 고르고 σ를 사용합니다. 추출은 필요한 열을 고르고 π를 사용합니다.

결합과 교차곱

결합은 관련된 튜플만 조건에 따라 연결하지만, 교차곱은 두 릴레이션의 모든 튜플 조합을 만듭니다.

합집합과 결합

합집합은 같은 구조의 튜플을 세로로 합치고, 결합은 관련 속성을 기준으로 열을 확장하여 연결합니다.

교집합과 차집합

교집합은 양쪽에 공통된 튜플을 반환하고, 차집합은 앞의 릴레이션에만 있는 튜플을 반환하므로 순서가 중요합니다.

관계 대수와 관계 해석

관계 대수는 수행할 연산을 표현하고, 관계 해석은 결과가 만족해야 하는 조건을 표현합니다.

나누기와 전칭 조건

나누기는 하나의 조건만 만족하는 값을 찾는 것이 아니라 주어진 조건을 모두 만족하는 값을 찾습니다.

행은 선택, 열은 추출, 관련 튜플은 결합, 모든 조건 충족은 나누기로 구분합니다.

이번 장 핵심 요약

  1. 관계 대수는 릴레이션에 수행할 연산과 순서를 표현하는 절차적·연산적 방법입니다.
  2. 관계 해석은 원하는 정보가 만족해야 할 조건을 정의하는 비절차적·선언적 방법입니다.
  3. 튜플 관계 해석은 튜플 변수를, 도메인 관계 해석은 속성값 변수를 사용합니다.
  4. ∀는 모든 대상에 대하여, ∃는 하나 이상의 대상이 존재함을 의미합니다.
  5. 선택은 σ를 사용하여 조건을 만족하는 행을 선택합니다.
  6. 추출은 π를 사용하여 필요한 열을 선택합니다.
  7. 자연 결합은 공통 속성값이 같은 튜플을 연결하고 공통 속성을 한 번만 남깁니다.
  8. 나누기는 나누는 릴레이션의 모든 튜플과 관계를 가지는 값을 구합니다.
  9. 합집합·교집합·차집합에는 합병 가능 조건이 필요합니다.
  10. 차집합은 연산 순서에 따라 결과가 달라집니다.
  11. 교차곱은 두 릴레이션의 모든 튜플 조합을 생성합니다.
  12. 교차곱의 차수는 두 차수의 합이고 카디널리티는 두 카디널리티의 곱입니다.

복습 문제

원하는 결과를 구하기 위해 수행할 연산과 순서를 표현하는 방법은?

관계 대수입니다.

원하는 정보가 만족해야 할 조건만 정의하는 비절차적 방법은?

관계 해석입니다.

릴레이션에서 조건을 만족하는 행을 선택하는 연산자는?

선택 연산자이며 기호는 σ입니다.

릴레이션에서 필요한 열을 선택하는 연산자는?

추출 연산자이며 기호는 π입니다.

두 릴레이션의 관련된 튜플을 공통 속성이나 조건으로 연결하는 연산자는?

결합 연산자이며 기호는 ⋈입니다.

주어진 모든 조건을 만족하는 대상을 구할 때 사용하는 연산자는?

나누기 연산자이며 기호는 ÷입니다.

합집합·교집합·차집합을 수행하기 위한 공통 조건은?

두 릴레이션의 차수가 같고 대응하는 속성의 도메인이 호환되는 합병 가능 조건을 만족해야 합니다.

두 릴레이션의 모든 튜플 조합을 만드는 연산자는?

교차곱입니다.

차수가 4와 6인 두 릴레이션을 교차곱하면 결과 차수는?

4+6이므로 10입니다.

카디널리티가 5와 7인 두 릴레이션을 교차곱하면 결과 카디널리티는?

5×7이므로 35입니다.

R − S와 S − R의 결과는 항상 같은가?

같지 않습니다. 차집합은 첫 번째 릴레이션을 기준으로 하므로 연산 순서에 따라 결과가 달라집니다.

‘모든 필수과목을 수강한 학생’을 찾는 데 적합한 관계 연산자는?

나누기 연산자입니다.

참고자료

이 글은 사무자동화산업기사 시험 범위에 포함된 관계 대수와 관계 해석, 선택·추출·결합·나누기와 일반 집합 연산자를 이해하고 복습할 수 있도록 재구성한 정리입니다. 관계 대수 연산자의 기본·유도 분류와 일부 기호는 교재에 따라 다르게 표현될 수 있으므로 실제 시험에서는 문제에서 제시한 정의와 최신 Q-Net 출제기준을 함께 확인해야 합니다.


같은 주제의 다른 글

이 글과 같은 카테고리에 있는 이전 글과 다음 글을 확인해보세요.