본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

외부 합집합(Outer Union)은 합병 가능(union compatible)하지 않은, 즉 속성 구성이 일부만 같은 두 릴레이션의 튜플을 하나의 릴레이션으로 모으면서, 한쪽에 없는 속성은 NULL 로 채우는 관계 연산이다.

보통의 합집합(∪)은 두 릴레이션의 속성 수와 도메인이 같아야(합병 가능해야) 쓸 수 있다. 외부 합집합은 이 제한을 풀어, 속성 일부만 겹치는 두 릴레이션을 합친다. R(X, Y) 와 S(X, Z) 의 외부 합집합 결과는 R(X, Y, Z) 꼴이고, R 에서 온 튜플은 Z 가, S 에서 온 튜플은 Y 가 NULL 이다. 흔히 쓰는 정의는 두 릴레이션의 속성을 합집합으로 늘린 뒤 양쪽 튜플을 그대로 모으는 것이어서, R 의 튜플과 S 의 튜플이 한 행으로 합쳐지지 않는다. 엘마스리(Elmasri)와 나바테(Navathe)는 여기에 더해, 공통 속성 X 의 값이 같은 R 튜플과 S 튜플은 같은 개체를 나타낸다고 보아 한 튜플로 합친다고 정의한다. 이 정의는 X 가 양쪽의 키처럼 한 튜플씩만 짝지어질 때를 전제로 한다. 엘마스리와 나바테는 STUDENT(Name, SSN, Department, Advisor) 와 INSTRUCTOR(Name, SSN, Department, Rank) 를 외부 합집합해 STUDENT_OR_INSTRUCTOR(Name, SSN, Department, Advisor, Rank) 를 만드는 예를 든다. 학생 튜플은 Rank 가, 교수 튜플은 Advisor 가 NULL 이다.[1]

SQL 에서의 외부 합집합

편집 원본 편집

표준 SQL 에는 OUTER UNION 연산자가 없어서 빠진 열을 NULL 로 채운 두 SELECT 를 UNION ALL 로 잇는다.

SELECT Name, SSN, Department, Advisor, NULL AS Rank FROM STUDENT
UNION ALL
SELECT Name, SSN, Department, NULL, Rank FROM INSTRUCTOR;

SAS 의 PROC SQL 은 OUTER UNION 을 집합 연산자로 제공하며, 질의 결과를 이어 붙이는(concatenate) 연산이라고 설명한다. CORRESPONDING 을 붙이면 이름이 같은 열을 겹쳐 하나로 만들고, 붙이지 않으면 열을 위치대로 덧붙인다.[2]

외부 조인과 구별하기

편집 원본 편집
구분 외부 합집합 완전 외부 조인
무엇을 하는가 두 릴레이션의 튜플을 위아래로 쌓는다 조인 조건으로 짝을 맞춰 옆으로 잇고, 짝 없는 튜플도 남긴다
짝 맞추기 하지 않는다(엘마스리 정의는 공통 속성 값이 같은 한 쌍을 한 튜플로 합친다) 조인 조건에 맞는 모든 짝 조합을 만든다
결과 튜플 수 R| + |S| R| × |S| 까지 늘 수 있다

예를 들어 A(P, Q, R) 에 (p1, q1, r1), (p2, q1, r1) 이 있고 B(Q, R, S) 에 (q1, r1, s1), (q1, r1, s2) 가 있으면, 외부 조인은 짝마다 한 행씩 (p1, q1, r1, s1), (p1, q1, r1, s2), (p2, q1, r1, s1), (p2, q1, r1, s2) 네 행을 만든다. 외부 합집합은 (p1, q1, r1, NULL), (p2, q1, r1, NULL), (NULL, q1, r1, s1), (NULL, q1, r1, s2) 처럼 양쪽 튜플을 따로 쌓을 뿐 이런 곱 조합을 만들지 않는다. 한쪽 튜플이 상대 튜플 여럿과 짝지어진 결과라면 외부 조인의 결과이다.

  1. ↑ Ramez Elmasri, Shamkant B. Navathe, 『Fundamentals of Database Systems』 7판, Pearson, 2016, 8.4.5 The OUTER UNION Operation.
  2. ↑ 「Query Expressions - Set Operators: OUTER UNION」, SAS 9.4 SQL Procedure User's Guide, SAS Institute, https://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/p1o6k7t8y56hobn1mup90vpf4ye6.htm, 확인일: 2026-11-04.