★ 026 논리 데이터베이스 설계[관계대수 및 관계해석]
1. 관계대수의 개요
- 관계대수는 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적인 언어
- 관계대수는 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로, 피연산자가 릴레이션이고, 결과도 릴레이션
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 관계 DB에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
1) 순수 관계 연산자: Select, Project, Join, Division
2) 일반 집합 연산자: UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)
2. Select
- 릴레이션에 존재하는 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 생성하는 연산
- 릴레이션의 행에 해당하는 튜플을 구하는 것이기 때문에 수평 연산이라고도함
- 연산자 기호 : σ(시그마)
- 표기 형식 : σ<조건>(릴레이션명)
- 조건에는 등호, 부등호 등의 기호를 사용한 비교 연산이 허용되며, 논리 연산자를 사용하여 여러 개의 조건들을 하나의 조건으로 결합시킬 수도 있음.
3. Project
- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 단, 연산 결과에 중복이 발생하면 중복이 제거
- 릴레이션의 열에 해당하는 튜플을 구하는 것이므로 수직 연산이라고도함
- 연산자 기호 : π(파이)
- 표기 형식 : π<속성리스트>(릴레이션명)
4. Join
- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산
- Join 결과로 만들어진 릴레이션 차수는 조인된 두 릴레이션 차수를 합한 것과 같다.
- Join 결과는 교차곱 수행 후 Select를 수행한 것과 같다.
- 연산자 기호 : ⋈
- 표기 형식 : 릴레이션R⋈<키속성r=키속성s>릴레이션S
5. Division
- X⊃Y인 두 개의 릴레이션 R(x)와 S(y)가 있을 때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
- 연산자 기호 : ÷ (시그마)
- 표기 형식 : 릴레이션R[속성r÷속성s]릴레이션S
6. 일반 집합 연산자
일반 집합 연산자는 수학적 집합 이론에서 사용하는 연산자로, 릴레이션 연산에도 적용
합집합, ∪ (UNION) |
두 릴레이션에 존재하는 튜플의 합집합을 구하되, 중복 튜플은 제거 |
합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다 |
교집합, ∩ (INTERSECTION) |
두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산 |
교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다 |
차집함, - (DIFFERENCE) |
두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산 |
차집합의 카디널리티는 리렐이션 R의 카디널리티보다 크지 않다. |
교차곱, x (CARTESIAN PRODUCT) |
두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산 |
교차곱은 두 릴레이션의 카디널리티를 곱한 것과 같다 |
7. 관계 해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때 계산 수식을 사용
- 원하는 정보가 무엇인지 정의하는 비절차적 특성
- 튜플 관계해석과 도메인 관계 해석이 있다.
- 기본적으로 관계해석과 관계대수는 관계 DB를 처리하는 기능과 능력면에서 동등하며, 관계대수로 표현한 식은 관계해석으로 표현할 수 있다.
- 질의어로 표현