학습(공부)하는 블로그 :: 5. 관계 데이터 연산 (1) - 데이터 모델, 관계 대수, 카티션 프로덕트
 

 
반응형
블로그 이미지
학습하고 공부한 것을 보고 싶을때 다시 볼려고 요약해서 정리한 블로그입니다. 좋은 정보는 서로 공유합시다. 깨비형
« 2026/7 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Archive»


Category»

Notice»

Recent Post»

Recent Comment»

Recent Trackback»

07-18 21:06

반응형

 

📋 이 글의 핵심 요약 (TL;DR)

  • 데이터 모델 = 데이터 구조 + 연산 + 제약조건, 그 연산의 핵심이 관계 데이터 연산
  • 관계 대수(절차 언어)와 관계 해석(비절차 언어), 기능·표현력은 동등
  • 관계 대수 연산자는 일반 집합 연산자 4개 + 순수 관계 연산자 4개로 구성
  • 일반 집합 연산자 : 합집합(∪) · 교집합(∩) · 차집합(−) · 카티션 프로덕트(×)
  • 합집합·교집합·차집합은 합병 가능(union-compatible) 조건 필수
  • 차집합만 교환적 특성 없음 — 나머지 세 연산자는 교환·결합 모두 성립

 

 

 

01 관계 데이터 연산이란?

 

📌 데이터 모델의 3요소
데이터 모델은 단순히 데이터를 저장하는 구조만 있는 게 아닙니다.
데이터 구조(Structure) + 연산(Operation) + 제약조건(Constraint), 이 세 가지가 합쳐져야 완전한 데이터 모델이 됩니다.

 

 

관계 데이터 연산(Relational Data Operation)은 관계 데이터 모델의 연산 부분을 담당합니다. 원하는 데이터를 얻기 위해 릴레이션(테이블)에 필요한 처리 요구를 수행하는 것이라고 이해하면 쉽습니다.

 

관계 데이터 연산에는 크게 두 가지 방식이 있습니다.

 

구분 언어 유형 특징
관계 대수
(Relational Algebra)
절차 언어
(Procedural)
원하는 결과를 얻기 위해 데이터 처리 과정을 순서대로 기술
→ "어떻게(How) 가져올지"를 명시
관계 해석
(Relational Calculus)
비절차 언어
(Non-Procedural)
원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술
→ "무엇을(What) 가져올지"만 명시

 

✅ 관계적으로 완전(Relationally Complete)하다는 것은?
관계 대수나 관계 해석으로 기술할 수 있는 모든 질의(Query)를 표현할 수 있는 데이터 언어를 가리킵니다. 두 방식은 기능과 표현력 측면에서 동등한 능력을 가집니다. 우리가 흔히 사용하는 SQL이 바로 이 기준을 충족하는 언어입니다.

※ 단, 순수 관계 대수는 중복 튜플을 허용하지 않는 엄격한 집합(Set) 연산인 반면, 실제 상용 SQL은 성능을 위해 기본적으로 중복을 허용하는 다중집합(Bag / Multiset) 연산을 토대로 합니다. 그래서 SQL에서 중복을 제거하려면 DISTINCTUNION(UNION ALL이 아닌)을 명시해야 합니다.

 

 

 

02 관계 대수(Relational Algebra) 개념

 

관계 대수는 아래 3가지 특성으로 정의됩니다.

 

특성 설명
절차 언어
(Procedural Language)
원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어
연산자들의 모임 대표 연산자 8개로 구성
일반 집합 연산자 4개 + 순수 관계 연산자 4개
폐쇄 특성
(Closure Property)
피연산자도 릴레이션이고, 연산의 결과도 릴레이션
→ 연산 결과를 또 다른 연산의 입력으로 사용 가능 (연산 중첩 가능)

 

📌 관계 대수 연산자 8개 구조

일반 집합 연산자 (4개) : 합집합(∪) · 교집합(∩) · 차집합(−) · 카티션 프로덕트(×)
순수 관계 연산자 (4개) : 셀렉트(σ) · 프로젝트(π) · 조인(⋈) · 디비전(÷)

 

 

 

03 일반 집합 연산자 — 합병 가능 조건

 

합집합, 교집합, 차집합 연산을 수행하려면 두 릴레이션이 합병 가능(Union-Compatible)해야 합니다. 카티션 프로덕트는 이 조건이 필요 없습니다.

 

⚠️ 합병 가능(Union-Compatible) 조건 2가지

두 릴레이션의 차수(Degree, 속성 수)가 같아야 함
서로 대응되는 속성의 도메인(자료형)이 같아야 함

⚡ 속성의 이름은 달라도 상관없습니다. 도메인(INT, CHAR 등)이 같으면 합병 가능입니다.

 

❌ 합병 불가능한 예 ✅ 합병 가능한 예
고객 릴레이션: 고객번호(INT) · 고객이름(CHAR) · 나이(INT)
직원 릴레이션: 직원번호(INT) · 직원이름(CHAR) · 직위(CHAR)
→ 3번째 속성의 도메인이 다름 (INT ≠ CHAR) → 합병 불가
고객 릴레이션: 고객번호(INT) · 고객이름(CHAR) · 나이(INT)
직원 릴레이션: 직원번호(INT) · 직원이름(CHAR) · 나이(INT)
→ 차수 동일 + 도메인 모두 일치 → 합병 가능

 

 

 

 

04 합집합(Union) — R∪S

 

정의 : 릴레이션 R에 속하거나 릴레이션 S에 속하는 모든 튜플로 결과 릴레이션을 구성 (중복 제거)

 

항목 내용
차수(Degree) 릴레이션 R과 S의 차수와 동일
카디널리티 R과 S의 카디널리티 합과 같거나 적어짐
(중복 튜플은 한 번만 포함)
교환적 특성 R∪S = S∪R ✅
결합적 특성 (R∪S)∪T = R∪(S∪T) ✅

 

✅ 예시
R = {(100, 정소화), (200, 김선우), (300, 고명석)}
S = {(100, 정소화), (101, 채광주), (102, 김수진)}

R∪S = {(100, 정소화), (200, 김선우), (300, 고명석), (101, 채광주), (102, 김수진)}
"(100, 정소화)"는 중복이므로 한 번만 포함 → 카디널리티 5 (6−1)

 

 

 

05 교집합(Intersection) — R∩S

 

정의 : 릴레이션 R과 S에 공통으로 속하는 튜플로 결과 릴레이션을 구성

 

항목 내용
차수(Degree) 릴레이션 R과 S의 차수와 동일
카디널리티 R과 S 어떤 카디널리티보다도 크지 않음 (같거나 적음)
(공통 튜플만 남기므로 항상 줄어들거나 같음)
교환적 특성 R∩S = S∩R ✅
결합적 특성 (R∩S)∩T = R∩(S∩T) ✅

 

✅ 예시
R = {(100, 정소화), (200, 김선우), (300, 고명석)}
S = {(100, 정소화), (101, 채광주), (102, 김수진)}

R∩S = {(100, 정소화)}
두 릴레이션에 공통으로 존재하는 튜플만 남음 → 카디널리티 1

 

 

 

06 차집합(Difference) — R−S

 

정의 : 릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 튜플로 결과 릴레이션을 구성

 

항목 내용
차수(Degree) 릴레이션 R과 S의 차수와 동일
카디널리티 R−S : R의 카디널리티와 같거나 적음
S−R : S의 카디널리티와 같거나 적음
교환·결합 특성 ❌ 없음 — R−S ≠ S−R

 

✅ 예시
R = {(100, 정소화), (200, 김선우), (300, 고명석)}
S = {(100, 정소화), (101, 채광주), (102, 김수진)}

R−S = {(200, 김선우), (300, 고명석)}   ← R에만 있고 S에는 없는 것
S−R = {(101, 채광주), (102, 김수진)}   ← S에만 있고 R에는 없는 것

 

 

 

07 카티션 프로덕트(Cartesian Product) — R×S

 

 

정의 : 릴레이션 R의 각 튜플과 릴레이션 S의 각 튜플을 모두 연결하여 만들어진 새로운 튜플로 결과 릴레이션을 구성
합병 가능 조건 불필요. 서로 다른 구조의 두 릴레이션도 연산 가능.

 

항목 내용
차수(Degree) R의 차수 + S의 차수
R이 2개, S가 2개 속성 → 결과는 4개 속성
카디널리티 R의 카디널리티 × S의 카디널리티
R이 3개, S가 3개 튜플 → 결과는 9개 튜플
교환적 특성 R×S = S×R ✅
결합적 특성 (R×S)×T = R×(S×T) ✅

 

✅ 예시 (강의노트 기준)
R : {(100, 정소화), (200, 김선우), (300, 고명석)} — 차수 2, 카디널리티 3
S : {(100, 40), (101, 30), (102, 25)} — 차수 2, 카디널리티 3

R×S : 차수 4, 카디널리티 9 (3×3)
→ (100, 정소화, 100, 40) / (100, 정소화, 101, 30) / (100, 정소화, 102, 25) ... 총 9개 튜플 생성

 

💡 학술적 팁 — 수학과 DB에서의 교환 법칙 차이

이산수학(순수 수학)의 곱집합에서는 순서쌍의 위치가 의미를 가집니다. (a, b)와 (b, a)는 서로 다른 원소이므로 R×S ≠ S×R, 즉 교환 법칙이 성립하지 않습니다.

관계 데이터 모델(DB)에서는 튜플 내 각 값이 속성 이름(Attribute Name)으로 구분됩니다. R×S와 S×R은 속성의 나열 순서만 다를 뿐, 포함하는 정보는 동일하기 때문에 논리적으로 교환 법칙이 성립한다고 간주합니다.

→ 같은 '카티션 프로덕트'지만, 이산수학 시험과 데이터베이스 시험에서 교환 법칙의 성립 여부 답이 달라질 수 있으니 주의하세요!

 

 

 

08 일반 집합 연산자 한눈에 비교

 

연산자 기호 결과 차수 결과 카디널리티 교환 결합 합병 가능 조건
합집합 R(또는 S)와 동일 R+S 이하
|R∪S| ≤ |R|+|S|
필요
교집합 R(또는 S)와 동일 R 또는 S 이하
|R∩S| ≤ min(|R|,|S|)
필요
차집합 R(또는 S)와 동일 R 이하 (R−S 기준)
|R−S| ≤ |R|
필요
카티션 프로덕트 × R차수 + S차수 R × S
|R×S| = |R|×|S|
불필요

 

 

 

📌 핵심 정리

· 데이터 모델 = 데이터 구조 + 연산 + 제약조건
· 관계 대수 : 절차 언어, 폐쇄 특성, 8개 연산자(일반 집합 4 + 순수 관계 4)
· 합병 가능 조건 : 차수 동일 + 대응 속성 도메인 동일 (이름은 달라도 됨)
· 합집합(∪) : R 또는 S에 속한 모든 튜플 → 카디널리티 R+S 이하
· 교집합(∩) : R과 S에 공통인 튜플 → 카디널리티 R 또는 S 이하
· 차집합(−) : R에 있고 S에 없는 튜플 → 교환·결합 특성 없음
· 카티션 프로덕트(×) : 모든 튜플 조합 → 차수는 합, 카디널리티는 곱

 

 

 

태그 : 관계 대수란관계 데이터 연산이란일반 집합 연산자 종류합집합 교집합 차집합 차이카티션 프로덕트란합병 가능 조건관계 대수 연산자 8개폐쇄 특성이란데이터베이스 관계 대수union compatible 조건

반응형
: