관계 대수(Relational Algebra)
관계형 모델을 위한 기본적인 연산으로 릴레이션들을 다루는 연산이다. 질의(검색)를 기술하는데에 사용하며 질의 결과도 항상 릴레이션 된다.
셀렉트(SELECT)연산
릴레이션 R에서 어떤 선택조건 c를 만족하는 투플들을 선택한다. 그리스 알파벳 σ (시그마)로 표기한다.
카티션 곱(Cartesian Product)
카티션 곱 R1 X R2 이다. R1의 투플들과 R2의 투플들의 조합으로 구성된다. R1이 n1개의 투플을 R2가 n2개의 투플을 갖는다면, 결과 릴레이션은 n1 x n2 개의 투플을 가지게 된다.
조인(join) 연산
두 릴레이션으로부터 관련 있는 투플들을 결합하여 하나의 투플로 생성한다. 관련성의 여부를 조건으로 표시하며 이를 조인 조건이라고 한다.
관계 대수 연산의 완전집합(Complete Set)
최소한의 연산자 집합으로서 모든 관계대수 연산은 σ, π, ∪, -, X 만의 조합으로 표현할 수 있다. 연산자 집합 { σ, π, ∪, -, X }를 관계대수 연산의 완전 집합(Complete set)이라 부른다.
디비젼(Division) 연산
기본 연산자는 아니지만, A는 x와 y, B는 y로 구성되었을 때 “모든 y에 해당되는 x를 구하라” 같은 경우에 사용한다. A / B는 B의 모든 에 대하여, A 내에 가 존재하는 그러한 x들의 모임이다
단항 관계 연산
관계 대수 개요
- 관계형 모델을 위한 기본적인 연산들
- 릴레이션(테이블)들을 다루는 연산들
- 질의(검색)를 기술하는 데에 사용함
- 질의 결과도 릴레이션임
관계 대수 연산의 종류
- 단항 연산
- SELECT (σ sigma)
- PROJECT (π pi)
- RENAME (ρ rho)
- 집합 연산
- UNION (∪)
- INTERSECTION (∩)
- DIFFERENCE (-)
- CARTESIAN PRODUCT (X)
- 이항 연산
- 부가 연산
- OUTER JOINS
- OUTER UNION
- 군집함수 (SUM, COUNT, AVG, MIN, MAX)
셀렉트 연산
- 그리스 알파벳 σ (시그마)로 표기
- 릴레이션 R 에서 어떤 선택조건 c 를 만족하는 투플들을 선택함
- 연산 형식 : σ <선택조건 c> (R)
- 조건 c 는 R 의 속성들에 대한 임의의 불린(Boolean) 식임
- 결과 릴레이션은 r(R)의 투플 중 속성 값들이 조건 c 를 만족하는 투플들로 구성됨
- 결과 릴레이션은 R 과 동일한 속성들을 가짐
- 결과 릴레이션이 수학적 집합이므로 중복된 투플들을 제거함
프로젝트 연산
- 그리스 알파벳 Π (파이) 로 표기
- 릴레이션 R에서 속성 리스트 L에 명시된 속성들만 선택함
- 연산 형식 : Π <속성 리스트 L> (R)
- 결과 릴레이션은 속성 리스트 L에 명시된 속성들만 가짐
- 결과 릴레이션이 수학적 집합이므로 중복된 투플들을 제거함
연산 순서와 재명명
- 다수의 연산을 결합하여 식을 형성할 수 있음
- EX)
- 부서 4에서 일하는 사원들의 이름과 봉급을 검색하라
- Π FNAME,LNAME,SALARY (σ DNO=4(EMP))
- EX)
- 각 중간 단계의 임시 릴레이션에 이름을 부여할 수도 있음
- DEPT4_EMPS ← σ DNO=4(EMP)
- R ← Π FNAME,LNAME,SALARY (DEPT4_EMPS)
- EX)
- 결과 릴레이션의 속성 이름을 재명명할 수도 있음
- R(FN, LN, SAL) ← Π FNAME,LNAME,SALARY (DEPT4_EMPS)
집합 연산인 합집합, 교집합, 차집합, 집합곱
합집합, 교집합, 차집합 연산
- 합집합: R1∪ R2
- 교집합: R1∩ R2
- 차집합: R1 – R2
- 연산 ∪, ∩, - 에서의 호환성
- 피 연산자 릴레이션 R1(A1,A2,...,An)과 R2(B1,B2,...,Bn)는
- 속성들의 개수가 동일하고,
- 대응되는 속성들끼리 도메인이 같아야 함
- 이 조건을 합집합 호환성(Union compatibility)이라 함
- 집합 연산의 결과 릴레이션은 관례적으로 첫번 째 피연산자 릴레이션 R1과 동일한 속성 이름들을 가짐
카티션 곱 연산
- 카디션 프로덕트 또는 크로스 프로덕트라고도 함
- 카티션 곱: R1 X R2
- R(A1, A2,..., Am, B1, B2,..., Bn) ← R1(A1, A2,..., Am) X R2(B1, B2,..., Bn)
- R 의 투플들은 R1의 투플들과 R2의 투플들의 조합으로 구성됨
- R1 이 n1개의 투플을 R2가 n2개의 투플을 갖는다면, R은 n1 x n2 개의 투플을 가지게 됨
- 카티션 프로덕트은 그 자체로는 큰 의미가 없는 연산이지만 적절한 셀렉트 연산과 함께 사용되면 두 릴레이션에서 서로 관련이 있는 투플들을 생성하는데 사용될 수 있음
이항 관계 연산
이항 연산 개요
- 피 연산자가 두 개인 관계 연산
- 조인 연산 (대표적 1)
- 완전 집합
- 세타, 동등, 자연 조인, 자체 조인(self join)
- 디비젼 연산 (대표적 2)
조인 연산과 종류
조인 연산
- 두 릴레이션으로부터 관련 있는 투플들을 결합하여 하나의 투플로 생성함
- 관련성의 여부를 조건으로 표시하며 이를 조인 조건이라고 함
- 연산 형식 : R1▷◁
<join condition>
R2
세타, 동등, 자연, 자체 조인
- 조인 조건
- <조건> AND <조건> AND … AND <조건>
- 각 조건의 형태는 Ai Θ Bj
- 조인 조건에 사용되는 속성 Ai 와 Bj 를 조인 속성이라고 부름
- 세타 조인(Theta Join)
- 일반적인 조인 조건( >, =, < 등)을 가진 조인 연산
- 동등 조인(Equi Join)
- 조인 조건에서 동등 비교(Equality comparison) 만을 사용하는 조인
- 동등 조인 사용 EX : 모든 부서의 부서명과 관리자의 이름을 검색하라
- T ← DEPT ▷◁ MGRSSN=SSN EMP
- RESULT ← Π DNAME,FNAME,LNAME ( T)
- 자연 조인(Natural Join)
- 동등 조인의 결과에는 두 조인 속성의 값이 중복되어 나타남
- 조인 결과에서 조인 속성 하나를 제거하여 중복된 값이 나타나지 않도록 한 조인을 자연조인이라고 함
- 표시법 : R ← R1 *(R1의 조인 속성),(R2의 조인 속성) R2
- EX) 모든 사원의 이름과 그가 소속된 부서의 이름을 검색하라
- T ← EMP *(DNO),(DNUMBER) DEPT
- RESULT ← Π FNAME,LNAME,DNAME (T)
- 두 조인 속성이 동일한 이름을 갖는다면 간단히 R1* R2 라고 표시함
- 자체 조인(Self Join)
- 하나의 릴레이션에 대한 조인
- 자체 조인은 한 릴레이션의 서로 다른 두 사본을 조인하는 것으로 간주함
- 이 경우, 사본 릴레이션에서는 원본 애트리뷰트 이름을 재명명(Renaming)하는 것이 유용함
- EX) 모든 사원의 이름과 그들의 상사 이름을 검색하라
- SUPERVISOR(SSSN,SFN,SLN) ← Π SSN,FNAME,LNAME (EMP)
- T ← EMP ▷◁ SUPERSSN=SSSN SUPERVISOR
- RST ← Π FNAME,LNAME,SFN,SLN (T)
관계대수 연산의 완전 집합
- 최소한의 연산자 집합 : 지금까지 소개한 모든 연산자는 σ, π, ∪, -, X 만의 조합으로 표현할 수 있음
- 연산자 집합 { σ, π, ∪, -, X } 를 관계대수 연산자의 완전 집합(Complete set)이라 부름
- 이 연산자 집합과 동등한 모든 질의 언어들은 관계적으로 완전하다(Relationally complete)라고 정의함
- 추가적으로 유용한 연산자들
- 디비젼 연산
- 집계 함수와 그룹화 연산
- 외부 조인과 외부 합집합
디비젼 연산
디비젼(Division)
- 기본 연산자는 아니지만
- A 는 x 와 y, B 는 y 로 구성되었을 때 “모든 y 에 해당되는 x 를 구하라” 같은 경우에 디비젼을 사용
- 즉, A / B는 B의 모든 y에 대하여, A 내에 x, y가 존재하는 그러한 x 들의 모임임
추가적인 연산들
- 집계 함수
- SUM, COUNT, AVERAGE, MIN, MAX 함수를 의미함
- 표준 관계 대수로는 표현할 수 없음
- 다음과 같이 표현하며 그룹화 속성들은 선택적임
- <그룹화 속성들>F<함수 리스트>(R)
- 순환적 폐포 연산
- 동일한 테이블에서 투플들 간의 순환적 관계를 질의하는데 사용됨
- 관계 대수로서는 표현할 수 없음
- 예) Employee 테이블에서 특정 사원의 모든 상사 직원을 모두 검색하시오
- 이러한 질의는 반복 구조(루프)을 사용하여 1단계 위 상사들의 집합을 구하고, 이를 바탕으로 2단계 위 상사를 구하며, 이러한 과정을 더 이상의 상사 집합이 없을 때까지 구해나가야 하므로 반복 처리가 필요하게 됨
- 외부 조인(Outer Join) 연산
- 동등 조인이나 자연 조인 연산에서 조인 조건을 만족하지 않은 투플들은 결과 릴레이션에 나타나지 않음
- 조인에 참여하는 릴레이션의 모든 투플들을 조인의 여부와 관계없이 결과 릴레이션에 나타내고 싶은 경우 외부 조인을 사용함
- 외부 조인에서는 상대방 릴레이션에 대응되는 투플이 없으면 빈 속성에 NULL을 채워서 결과에 포함시킴
- LEFT OUTER JOIN : R1 R2는 R1의 모든 투플들이 결과 릴레이션에 나타나도록 함
- RIGHT OUTER JOIN) : R1 R2는 R2의 모든 투플들이 결과 릴레이션에 나타나도록 함
- FULL OUTER JOIN) : R1 R2는 R1과 R2의 모든 투플들이 결과 릴레이션에 나타나도록 함
- 외부 합집합(Outer Union) 연산
- 호환성이 없는 두 릴레이션을 합집합하는데 사용됨
- 예제) STUDENT(Name, SSN, Department, Advisor)와 FACULTY(Name, SSN, Department, Rank)의 OUTER UNION 은 T(Name, SSN, Department, Advisor, Rank)
- T 에서 STUDENT 투플의 Rank 값은 null 이고
- FACULTY 투플의 Advisor 값도 null 임