1. 관계대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 관계대수는 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션이다.
- 관계대수는 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있다.
2. 순수 관계 연산자
종류 | 특징 | 기호 |
Select | – 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산 – 릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 함 | σ(시그마) |
Project | – 주어진 릴레이션에서 속성 리스트(Attribute List) 에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산 – 연산 결과에 중복이 발생하면 중복이 제거됨 – 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함 | π(파이) |
Join | – 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산 – Join의 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같음 | ⋈ |
Division | X⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산 | ÷ |
3. 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자
- 일반 집합 연산자 중 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 한다.
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같다.
연산자 | 기능 및 수학적 표현 | 카디널리티 |
합집합 UNION ∪ | – 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산이다. R ∪ S = { t | t ∈ R V t ∈ S } ※ t는 릴레이션 R 또는 S에 존재하는 튜플이다. | | R ∪ S | ≤ | R | + | S | 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다. |
교집합 INTERSECTION ∩ | – 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산이다. R ∩ S = { t | t ∈ R ^ t ∈ S } ※ t는 릴레이션 R 그리고 S에 동시에 존재하는 튜플이다. | | R ∩ S | ≤ MIN{ | R | , | S | } 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다. |
차집합 DIFFERENCE — | – 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산이다. R – S = { t | t ∈ R ^ t ∉ S } ※ t는 릴레이션 R에는 존재하고 S에 없는 튜플이다. | | R – S | ≤ | R | 차집합의 카디널리티는 릴레이션 R의 카디널리티 보다 크지 않다. |
교차곱 CARTESIAN PRODUCT × | – 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산이다. R × S = { r · s | r ∈ R ^ s ∈ S } ※ r는 R에 존재하는 튜플이고, s는 S에 존재하는 튜플이다. | | R × S| = | R | × | S | 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다. |
4. 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
- 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
- 원하는 정보를 정의할 때는 계산 수식을 사용한다.