데이터베이스 (Database) 관계 대수와 관계 해석 (Part 1) 문양세 강원대학교 IT대학 컴퓨터과학전공
관계 대수 및 관계 해석 강의 요약 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 관계 대수와 관계 해석 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 이항 관계 연산: 조인과 디비전 연산 추가적인 관계 연산 관계 대수 질의의 예 투플 관계 해석 도메인 관계 해석
관계 대수 (Relational Algebra) 관계 대수와 관계 해석 데이터 모델의 구성요소 데이터베이스 구조와 제약조건의 정의 데이터를 다루기 위한 연산들의 집합 관계 대수란? 릴레이션들을 다루는 연산들 검색 요구(질의)를 기술하는 데에 사용함 릴레이션에 대한 연산의 결과도 릴레이션임 관계 대수 연산의 종류 수학적 집합 연산: 합집합, 교집합, 차집합, 카티션 프로덕트 관계 데이터베이스를 위한 특별 연산: 실렉트, 프로젝트, 조인
실렉트(Select) 연산 (1/2) 릴레이션 R에서 어떤 선택조건을 만족하는 투플들을 선택함 관계 대수와 관계 해석 릴레이션 R에서 어떤 선택조건을 만족하는 투플들을 선택함 결과 릴레이션은 R과 동일한 애트리뷰트들을 가짐 (릴레이션 차수 동일) 결과 릴레이션은 r(R)의 투플 중 애트리뷰트 값들이 선택조건을 만족하는 투플들로 구성됨 연산 형식 관계 대수란? σ<선택조건>(R) 선택조건은 R의 애트리뷰트들에 대한 부울식(Boolean equation) 임 <애트리뷰트 이름> <비교연산자> <상수값> (예: Age ≥ 18) <애트리뷰트 이름> <비교연산자> <애트리뷰트 이름> (예: Emp.ID = Manager.ID) 비교연산자: =, <, ≤, >, ≥, ≠, SUBSTRING_OF (문자열 연산시 이용)
실렉트(Select) 연산 (2/2) 예제: σDNO=4 (EMPLOYEE) σSALARY>30000 (EMPLOYEE) 관계 대수와 관계 해석 예제: σDNO=4 (EMPLOYEE) σSALARY>30000 (EMPLOYEE) σ(DNO=4 AND SALARY>25000) OR DNO=5 (EMPLOYEE)
실렉트 연산의 실행 예제 관계 대수와 관계 해석 σ(DNO=4 AND SALARY>25000) OR (DNO=5 AND SALARY>30000) (EMPLOYEE)
실렉트 연산의 성질 논리연산자 이용 교환법칙 성립 관계 대수와 관계 해석 논리연산자 이용 AND, OR, NOT 등 논리연산자 이용 가능 교환법칙 성립 σ<조건1>(σ<조건2>(R)) = σ<조건2>(σ<조건1>(R)) 결합법칙 성립 σ<조건1>(σ<조건2>(...(σ<조건n>(R))...)) = σ<조건1>AND<조건2>...AND<조건n>(R)
프로젝트(Project) 연산 (1/2) PROJECT 연산 (Π로 표기) 관계 대수와 관계 해석 PROJECT 연산 (Π로 표기) 릴레이션 R에서 애트리뷰트 리스트에 명시된 애트리뷰트들만 선택함 연산 형식: Π<애트리뷰트 리스트>(R) 결과 릴레이션은 애트리뷰트 리스트에 명시된 R의 애트리뷰트들만 가짐 결과 릴레이션의 투플수는 원래 릴레이션의 투플수보다 작거나 같음 (작을 수 있는 이유: 릴레이션은 중복 투플을 인정하지 않음 → 중복 투플의 제거) 애트리뷰트 리스트가 원래 릴레이션의 수퍼키를 포함하면 결과 릴레이션과 원래 릴레이션의 투플수는 동일함 (왜? 수퍼키를 포함하여 중복되지 않기 때문) 예제: ΠFNAME, LNAME, SALARY(EMPLOYEE)
프로젝트(Project) 연산 (2/2) PROJECT 연산은 결과 릴레이션이 수학적 집합이므로 중복된 투플들을 제거함 관계 대수와 관계 해석 PROJECT 연산은 결과 릴레이션이 수학적 집합이므로 중복된 투플들을 제거함 예제: ΠSEX, SALARY(EMPLOYEE) 봉급이 25000원인 여자 사원들이 여러 명이더라도 결과 릴레이션에는 단지 하나의 <F, 25000> 투플만이 포함되며, 나머지는 제거됨
프로젝트 연산의 실행 예제 ΠFNAME, LNAME, SALARY(EMPLOYEE) ΠSEX, SALARY (EMPLOYEE) 관계 대수와 관계 해석 ΠFNAME, LNAME, SALARY(EMPLOYEE) ΠSEX, SALARY (EMPLOYEE)
질문: 상기 질의 예에서 연산 순서를 바꾸면 어떻게 되지? 연산 순서와 이름 변경 연산 (1/4) 관계 대수와 관계 해석 다수의 연산을 결합하여 관계 대수식(질의)을 형성할 수 있음 예제: 부서 5에서 일하는 사원들의 이름과 월급을 검색 ΠFNAME, LNAME, SALARY(σDNO=5(EMPLOYEE)) 질문: 상기 질의 예에서 연산 순서를 바꾸면 어떻게 되지?
질문: 상기 질의 예에서 임시 릴레이션의 애트리뷰트 이름을 바꾸려면? 연산 순서와 이름 변경 연산 (2/4) 관계 대수와 관계 해석 중간 단계의 임시 릴레이션에 이름을 부여할 수도 있음 DEPT4_EMPS ← σDNO=5(EMPLOYEE) RESULT ← ΠFNAME, LNAME, SALARY(DEPT4_EMPS) DEPT4_EMPS RESULT FNAME LNAME 질문: 상기 질의 예에서 임시 릴레이션의 애트리뷰트 이름을 바꾸려면?
연산 순서와 이름 변경 연산 (3/4) 결과 릴레이션의 애트리뷰트 이름은 재명명 할 수도 있음 관계 대수와 관계 해석 결과 릴레이션의 애트리뷰트 이름은 재명명 할 수도 있음 TEMP ←σDNO=5(EMPLOYEE) R(FIRSTNAME, LASTNAME, SALARY) ← ΠFNAME, LNAME, SALARY(TEMP) 질문: 상기 두 개의 질의를 하나로 합하면?
연산 순서와 이름 변경 연산 (4/4) 이름 변경 연산 DEPT4_EMPS ← σDNO=5(EMPLOYEE) 관계 대수와 관계 해석 이름 변경 연산 DEPT4_EMPS ← σDNO=5(EMPLOYEE) S(B1, B2, …, Bn)(R): 릴레이션 이름과 애트리뷰트 이름을 모두 변경 S: 새로운 릴레이션의 이름 B1, B2, …, Bn: 새로운 애트리뷰트의 이름 S(R): 릴레이션 이름을 변경 (B1, B2, …, Bn)(R): 애트리뷰트 이름을 변경
관계 대수 및 관계 해석 강의 요약 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 관계 대수와 관계 해석 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 이항 관계 연산: 조인과 디비전 연산 추가적인 관계 연산 관계 대수 질의의 예 투플 관계 해석 도메인 관계 해석
합집합, 교집합, 차집합 연산 (1/4) 수학적 집합 이론에서의 이진 연산 연산 ∪, ∩, – 에서의 호환성 관계 대수와 관계 해석 수학적 집합 이론에서의 이진 연산 합집합: R1 ∪ R2 교집합: R1 ∩ R2 차집합: R1 – R2 연산 ∪, ∩, – 에서의 호환성 피연산자 릴레이션 R1(A1,A2, ..., An)과 R2(B1, B2, ..., Bn)는 애트리뷰트들의 갯수가 동일하고, 대응되는 애트리뷰트들의 도메인이 호환성을 가져야 함; 즉, i = 1, 2, ..., n에 대하여 dom(Ai) = dom(Bi)이어야 함 이 조건을 합집합 호환성(union compatibility)이라 부름
합집합, 교집합, 차집합 연산 (2/4) 관계 대수와 관계 해석 연산 ∪, ∩, – 의 결과 릴레이션은 피연산자 릴레이션 R1과 동일한 애트리뷰트 이름들을 가짐 (관례적으로) 합집합과 교집합은 교환법칙과 결합법칙이 성립됨 (차집합은?)
합집합, 교집합, 차집합 연산 (3/4) 관계 대수와 관계 해석 5번 부서에서 일하거나 5번 부서에서 근무하는 사원들을 직접 감독하는 모든 사원의 주민등록번호를 검색 DEP5_EMPS ← σDNO=5(EMPLOYEE) RESULT1 ← ΠSSN(DEP5_EMPS) RESULT2(SSN) ← ΠSUPERSSN(DEP5_EMPS) RESULT ← RESULT1 ∪ RESULT2
합집합, 교집합, 차집합 연산 (4/4) STUDENT ∪ INSTRUCTOR STUDENT ∩ INSTRUCTOR 관계 대수와 관계 해석 STUDENT ∪ INSTRUCTOR STUDENT ∩ INSTRUCTOR STUDENT - INSTRUCTOR INSTRUCTOR - STUDENT
카티션 곱 (또는 크로스 프로덕트) 연산 (1/3) 관계 대수와 관계 해석 카티션 곱 (CARTESIAN PRODUCT) R(A1, A2, ...,Am, B1, B2, ..., Bn) ← R1(A1, A2, ..., Am) × R2(B1, B2, ..., Bn) R의 투플 t는 R1의 투플 t1과 R2의 투플 t2로 분리됨 즉, t[A1,A2, ..., Am] = t1 그리고 t[B1, B2, ..., Bn] = t2 R1이 n1개의 투플을, R2가 n2개의 투플을 갖는다면, R은 n1×n2개의 투플을 가지게 됨 카티션 곱은 그 자체로는 큰 의미가 없는 연산이지만 적절한 SELECT 연산과 함께 사용되면 두 릴레이션에서 서로 관련이 있는 투플들을 생성하는데 사용될 수 있음
카티션 곱 (또는 크로스 프로덕트) 연산 (2/3) 관계 대수와 관계 해석 모든 여자사원들에 대해 그들의 부양가족들의 이름을 검색 FENAME_EMPS ← σSEX=F(EMPLOYEE) EMPNAMES ← ΠFNAME, LNAME, SSN(FENAME_EMPS) EMP_DEPENDENTS ← EMPNAMES × DEPENDENT ACTUAL_DEPENDENTS ← σSSN=ESSN(EMP_DEPENDENTS) RESULT ← ΠFNAME, LNAME, DEPENDENT_NAME(ACTUAL_DEPENDENTS)
카티션 곱 (또는 크로스 프로덕트) 연산 (3/3) 관계 대수와 관계 해석 FENAME_EMPS ← σSEX=F(EMPLOYEE) EMPNAMES ← ΠFNAME, LNAME, SSN(FENAME_EMPS) EMP_DEPENDENTS ← EMPNAMES × DEPENDENT ACTUAL_DEPENDENTS ← σSSN=ESSN(EMP_DEPENDENTS) RESULT ← ΠFNAME, LNAME, DEPENDENT_NAME(ACTUAL_DEPENDENTS) 3 ×7 = 21
관계 대수 및 관계 해석 강의 요약 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 관계 대수와 관계 해석 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 이항 관계 연산: 조인과 디비전 연산 추가적인 관계 연산 관계 대수 질의의 예 투플 관계 해석 도메인 관계 해석
조인(Join) 연산 (1/2) Join 연산 R <조인조건> S 조인 조건 Theta Join 관계 대수와 관계 해석 Join 연산 두 릴레이션으로부터 관련있는 투플을 결합하여 하나의 투플로 생성함 관련성의 여부를 조건으로 표시하며, 이를 조인 조건이라고 함 R <조인조건> S 조인 조건 <조건> AND <조건> AND … AND <조건> 각 조건의 형태는 AiΘBj 이며, Ai 는 R의 애트리뷰트, Bj는 S의 애트리뷰트임 Θ = {=, <, ≤, >, ≥, ≠} 조인 조건에 사용된 속성 (Ai와 Bj를 조인속성이라고 부름) Theta Join 일반적인 조인 조건(=, <, ≤, >, ≥, ≠)을 가진 조인 연산
조인(Join) 연산 (2/2) DEPT_MGR ← DEPARTMENT MGRSSN=SSNEMPLOYEE 관계 대수와 관계 해석 DEPT_MGR ← DEPARTMENT MGRSSN=SSNEMPLOYEE
동등 조인 (Equi-Join) 조인 조건에서 동등 비교(equality comparison) 만을 사용하는 조인 관계 대수와 관계 해석 조인 조건에서 동등 비교(equality comparison) 만을 사용하는 조인 EQUIJOIN 사용 예제: 모든 DEPARTMENT의 이름과 그 관리자의 이름을 검색하라: T ← DEPARTMENT MGRSSN=SSN EMPLOYEE RESULT ← ΠDNAME,FNAME,LNAME(T)
자연 조인(Natural Join) (1/4) 관계 대수와 관계 해석 EQUIJOIN의 결과에는 두 조인속성의 값이 중복되어 나타남 조인 결과에서 조인 속성 하나를 제거하여 중복된 값이 나타나지 않도록 한 조인을 자연조인이라고 함 표시법: R ← R1 (R1의 조인 애트리뷰트들), (R2의 조인 애트리뷰트들) R2 예제: 모든 EMPLOYEE의 이름과 그의 DEPARTMENT 이름을 검색하라 T ← EMPLOYEE (DNO), (DNUMBER) DEPARTMENT RESULT ← ΠFNAME, LNAME, DNAME(T) 두 조인 속성이 동일한 이름을 갖는다면 간단히 R ← R1 R2라고 표시함 예제: PROJ_DEPT ← PROJECT DEPT DEPT_LOCS ← DEPT_LOCATIONS DEPARTMENT
자연 조인(Natural Join) (2/4) 관계 대수와 관계 해석 DNUM DEPT DNUM PROJ_DEPT ← PROJECT DEPT DNUM
자연 조인(Natural Join) (3/4) 관계 대수와 관계 해석 DNUMBER DNUMBER DEPT_LOCS ← DEPT_LOCATIONS DEPARTMENT DNUMBER
자연 조인(Natural Join) (4/4) 관계 대수와 관계 해석 주의 사항 자연 조인에서는 조인 애트리뷰트들이 양쪽의 릴레이션에서 동일한 이름을 가져야 하며, 그렇지 않는 경우 조인 속성의 이름을 먼저 동일하게 변경해야 함 두 릴레이션에서 하나 이상의 조인 애트리뷰트 쌍이 존재하는 경우 주의가 요망됨 예제: “모든 EMPLOYEE의 이름과 그가 일하는 DEPARTMENT의 이름을 검색하라” 에 대한 자연 조인은 다음과 같이 작성함 DEPT(DNAME, DNUM, MGRSSN, MGRSTARTDATE) ← DEPARTMENT PROJ_DEPT ← PROJECT DEPT // DUNM이 조인속성임; // MGRSSN은 조인속성이 아님
셀프 조인(Self Join) 하나의 릴레이션에 대한 조인 관계 대수와 관계 해석 하나의 릴레이션에 대한 조인 Self join은 한 릴레이션의 서로 다른 두 사본을 조인하는 것으로 간주함 이 경우, 사본 릴레이션에서는 원본 애트리뷰트 이름을 재명명(renaming)하는 것이 유용함 예제: 모든 EMPLOYEE의 이름과 그의 SUPERVISOR의 이름을 검색하라. SUPERVISOR(SSSN,SFN,SLN) ← ΠSSN,FNAME,LNAME(EMPLOYEE) T ← EMPLOYEE SUPERSSN=SSSN SUPERVISOR RESULT ← ΠFNAME,LNAME,SFN,SLN(T)
조인 선택율(selectivity) 선택율 = 결과 투플의 수 / 전체 가능한 투플의 수 관계 대수와 관계 해석 선택율 = 결과 투플의 수 / 전체 가능한 투플의 수 조인 선택율 = 조인 결과로 선택된 투플의 개수 / [(R의 투플수) × (S의 투플수)] 왼편의 조인 선택율은?
관계 대수 연산의 완전 집합 최소한의 연산자 집합 기타 연산자의 표현 관계 대수와 관계 해석 최소한의 연산자 집합 지금까지 소개한 모든 연산자는 선택(SELECT), 프로젝트(PROJECT), 합집합(UNION), 차집합(SET DIFFERNECE), 카티션 프로덕트 (CARTESIAN PRODUCT) 연산들 만의 조합으로 표현할 수 있음 연산자 집합 {σ, Π, ∪, , ×}를 관계대수 연산자의 완전 집합(complete set)이라 부름 이 연산자 집합과 동등한 모든 질의 언어들은 관계적으로 완전하다(relationally complete)라고 정의함 기타 연산자의 표현 R ∩ S = (R ∪ S) – ((R – S) ∪ (S – R)) R <조건>S = σ<조건>(R×S)
= 디비전 연산 (1/3) T(Y) = R(Z) S(X)는 다음과 같이 정의됨 (X ⊆ Z 이고, Y = Z – X임) 관계 대수와 관계 해석 T(Y) = R(Z) S(X)는 다음과 같이 정의됨 (X ⊆ Z 이고, Y = Z – X임) T1 = ΠY(R) T2 = ΠY((S × T1) - R) T = T1 – T2 예제 (과정은 다음 페이지 참조) R A B S A T B a1 b1 a1 b1 a2 b1 a2 b4 a3 b1 a3 a4 b1 a1 b2 a3 b2 a2 b3 a3 b3 a4 b3 a1 b4 a2 b4 a3 b4 = T1 = ΠB(R) T2 = ΠB(( S × T1) – R) T = T1 – T2
= 디비전 연산 (2/3) T1 B S×T1 A B S×T1- R A B b1 a1 b1 a1 b3 b2 a1 b2 a2 관계 대수와 관계 해석 T1 B S×T1 A B S×T1- R A B = b1 a1 b1 a1 b3 b2 a1 b2 a2 b2 b3 a1 b3 b4 a1 b4 T ← R S T1 = ΠB(R) T2 = ΠB((S × T1) – R) T = T1 – T2 a2 b1 T2 B a2 b2 b2 a2 b3 b3 a2 b4 a3 b1 a3 b2 T B a1, a2, a3와의 모든 조합이 있는 놈: b1, b4 a3 b3 b1 a3 b4 b4
= 디비전 연산 (3/3) 질의: Smith가 근무하는 모든 프로젝트에서 근무하는 사원들의 이름을 검색하라. 관계 대수와 관계 해석 질의: Smith가 근무하는 모든 프로젝트에서 근무하는 사원들의 이름을 검색하라. = SMITH ← σFNAME=‘John’ AND LNAME=‘Smith’(EMPLOYEE) SMITH_PNOS ← ΠPNO(WORKS_ON ESSN=SSNSMITH) SSN_PNOS ← ΠESSN, PNO(WORKS_ON) SSNS(SSN) ← SSNPNOS SMITH_PNOS RESULT ← ΠFNAME, LNAME(SSNS * EMPLOYEE)
관계 대수 및 관계 해석 강의 요약 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 관계 대수와 관계 해석 단항 관계 연산: 실렉트와 프로젝트 집합 이론과 관계 대수 연산 이항 관계 연산: 조인과 디비전 연산 추가적인 관계 연산 관계 대수 질의의 예 투플 관계 해석 도메인 관계 해석
집단 함수와 집단화 (1/2) 집단 함수 (aggregate function) 혹은 집계 함수 관계 대수와 관계 해석 집단 함수 (aggregate function) 혹은 집계 함수 SUM, COUNT, AVERAGE, MIN, MAX 함수를 의미함 이들은 데이터베이스 응용에서 값들의 집합 또는 투플들의 집합에 적용되며, 표준 관계 대수로 표현할 수 없음 다음과 같이 표현하며, 그룹화 애트리뷰트들은 선택적임 <그룹화 애트리뷰트들> F<함수 리스트>(R) 예제 1: 모든 사원의 평균 급여를 검색 (그룹화 불필요) R(AVGSAL) ← FAVERAGE SALARY(EMPLOYEE) 예제 2: 각 부서에 대해, 부서 번호와 부서별 사원 수와 평균 급여를 검색 R(DNO, NUMEMPS, AVGSAL) ← DNOFCOUNT SSN, AVERAGE SALARY(EMPLOYEE) 위의 예제에서 DNO를 그룹화 애트리뷰트(grouping attribute)라고 부름
집단 함수와 집단화 (2/2) 관계 대수와 관계 해석
순환적 폐포(Recursive Closure) 연산 (1/2) 관계 대수와 관계 해석 동일한 테이블에서 투플들 간 순환적 관계 (recursive relationship)를 질의하는데 사용됨 관계 대수로서는 표현할 수 없음 예: Employee 테이블에서 사원과 상사간의 관계에 대하여 특정 사원의 모든 상사 (직간접 상사관계)에 있는 직원을 모두 검색하시오. 이러한 질의는 루핑(looping)을 사용하여 한 단계 상사들의 집합을 구하고, 이를 바탕으로 다음 단계 상사를 구하며, 이러한 과정을 더 이상의 상사 집합이 없을 때까지 (사장이 나올 때까지) 구해나가야 하므로 루핑 처리가 필요하게 됨 호스트 언어 등을 사용하여 해결할 수 있음
순환적 폐포(Recursive Closure) 연산 (2/2) 관계 대수와 관계 해석
외부 조인 연산 (1/4) 외부 조인(OUTER JOIN) 관계 대수와 관계 해석 외부 조인(OUTER JOIN) 정규 EQUIJOIN이나 자연 조인(NATURAL JOIN) 연산에서 조인 조건을 만족하지 않은 투플들은 결과 릴레이션에도 나타나지 않음 조인에 참여하는 릴레이션의 모든 투플들을 조인 결과 릴레이션에 나타내고 싶은 경우 외부조인을 사용함 외부 조인에서는 상대방 릴레이션에 대응되는 투플이 없으면 빈 애트리뷰트들에 NULL 값을 채워서 결과에 포함시킴
외부 조인 연산 (2/4) 관계 대수와 관계 해석 외부 조인의 종류 왼쪽 외부 조인 (LEFT OUTER JOIN) R1 R2: R1의 모든 투플들이 결과 릴레이션이 나타남 오른쪽 외부 조인 (RIGHT OUTER JOIN) R1 R2: R2의 모든 투플들이 결과 릴레이션이 나타남 완전 외부 조인 (FULL OUTER JOIN) R1 R2: R1과 R2의 모든 투플들이 결과 릴레이션이 나타남
외부 조인 연산 (3/4) S A B1 T B2 C 1 가 나 # 2 나 다 % 3 다 라 $ 마 @ 조인 왼쪽 외부조인 관계 대수와 관계 해석 S A B1 T B2 C 1 가 나 # 2 나 다 % 3 다 라 $ 마 @ 조인 왼쪽 외부조인 오른쪽 외부조인 양쪽 외부조인 V ← S B1=B2T V ← S B1=B2T V ← S B1=B2T V ← S B1=B2T V V V V A B1 B2 C A B1 B2 C A B1 B2 C A B1 B2 C 2 나 나 # 1 가 null null 2 나 나 # 1 가 null null 3 다 다 % 2 나 나 # 3 다 다 % 2 나 나 # 3 다 다 % null null 라 $ 3 다 다 % null null 마 @ null null 라 $ null null 마 @
외부 조인 연산 (4/4) TEMP ← EMPLOYEE SSN=MGRSSNDEPARTMENT 관계 대수와 관계 해석 null TEMP ← EMPLOYEE SSN=MGRSSNDEPARTMENT RESULT ← ΠFNAME, MINIT, LNAME, DNAME(TEMP) null null null null
외부 합집합(Outer Union) 연산 (1/2) 관계 대수와 관계 해석 합집합 호환성이 없는 두 릴레이션을 합집합(union)하는데 사용됨 데이터베이스 구조와 제약조건의 정의 방식 예제 STUDENT(Name, SSN, Department, Advisor)와 FACULTY(Name, SSN, Department, Rank)의 outer union은 RESULT(Name, SSN, Department, Advisor, Rank) 임 RESULT 에서 STUDENT 투플은 Rank 속성의 값이 null이고, FACULTY 투플은 Advisor 속성의 값이 null임
외부 합집합(Outer Union) 연산 (2/2) 관계 대수와 관계 해석 S와 T의 외부 합집합 S A B T B C D A B C D 1 가 나 # a 1 가 null null 2 나 다 % b 2 나 # a 3 다 라 $ c 3 다 % b 마 @ d null 라 $ c null 마 @ d