[정보처리기사 필기] 데이터베이스 설계 - 066. 관계 대수 및 관계 해석

1. 관계대수의 개요

  • 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
  • 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어
  • 피연산자와 결과 모두 릴레이션
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
  • 관계대수의 종류
    • 순수 관계 연산자
      • 관계 데이터베이스에 적용
      • Select, Project, Join, Division
    • 일반 집합 연산자
      • 수학적 집합 이론에서 사용
      • 합집합 UNION, 교집합 INTERSECTION, 차집합 DIFFERENCE, 교차곱 CARTESIAN PRODUCT
        • 교차곱
          • 두 릴레이션이 존재하는 모든 튜플들을 대응시켜 새로운 릴레이션을 만드는 연산
          • 연산의 결과 차수 = 두 릴레이션의 차수를 합한 것
          • 튜플 = 두 릴레이션의 튜플 수를 곱한 것과 같음
          • 교차곱의 결과는 두 릴레이션을 연결하여 나타낼 수 있는 모든 튜플들을 표현할 수 있으므로 여기에서 필요한 튜플만 식별하는 Select 연산을 수행하면 Join 연산의 결과와 같아지는 것

2. Select

  • 릴레이션에 존재하는 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
  • 수평 연산 : 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것
  • 표기형식 : σ (조건) (R)
    • R :  릴레이션 이름
    • 조건 : 비교 연산이 허용 (=, ≠, <, ≤, >, ≥ 등의 기호 사용), 논리 연산자를 사용하여 여러 개의 조건들을 하나의 조건으로 결합시킬 수도 있음

3. Project

  • 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
  • 연산 결과에 중복이 발생하면 중복이 제거
  • 수직 연산자 : 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것
  • 표기 형식 : π <속성리스트> (R)

4. Join

  • 공동 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
  • Join의 결과로 만들어진 릴레이션의 차수 = 조인된 두 릴레이션의 차수를 합한 것
  • Join의 결과 : Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같음
  • 표기 형식 : R ⋈키속성r π 키속성s S
    • 키 속성 r은 릴레이션 R의 속성, 키 속성 s는 릴레이션 S의 속성
  • 자연 조인 Natural Join
    • 조인 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데, 이중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
    • 자연 조인이 성립되려면 두 릴레이션의 속성명과 도메인이 같아야 함

5. Division

  • X⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
  • 표기 형식 : R [속성r ÷ 속성s] S
    • 속성 r은 릴레이션 R의 속성, 속성 s는 릴레이션 S의 속성, 속성 r과 속성 s는 동일 속성값을 가지는 속성이어야 함

6. 일반 집합 연산자

  • 수학적 집합 이론에서 사용하는 연산자
  • 릴레이션 연산에도 그대로 적용할 수 있음
  • 합집합, 교집합, 차집합을 처리하기 위해서는 합병 조건을 만족해야 함
    • 합병 조건
      • 합병하려는 두 릴레이션 간에 속성의 수가 같음
      • 대응되는 속성별로 도메인이 같아야 함
      • 속성의 이름이 같아야 되는 것은 아님
  • 연산별 특징
연산자 기능 및 수학적 표현 카디널리티
합집합
UNION
• 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산
• t는 릴레이션 R 또는 S에 존재하는 튜플
• R ∪ S = { t | t ∈ R ∨ t ∈ S}
• |R∪S| ≤ |R| + |S|
• 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않음
교집합
INTERSECTON
• 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
• 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
x
• 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
• R X S = { r ∙ s | r ∈ R ∧ s ∈ S}
• r은 R에 존재하는 튜플, s는 S에 존재하는 튜플
• |R x S| ≤ |R| x |S|
• 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같음

 

7. 관계해석 Relational Caiculus

  • 관계 데이터 모델의 제안자인 코드 (E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안
  • 관계 데이터의 연산을 표현하는 방법
  • 원하는 정보를 정의할 때는 계산 수식을 사용
  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
  • 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등, 관계대수로 표현한 식은 관계해석으로 표현할 수 있음
  • 질의어로 표현
  • 관계해석의 종류 : 튜플 관계해석, 도메인 관계해석
  • 주요 논리기호
기호 구성 요소 설명
전칭 정량자 가능한 모든 튜플에 대하여 (For All)
존재 전량자 하나라도 일치하는 튜플이 있음 (There Exists)