CS (Computer Science)

[개발 공부 100일차] DB 개론 | 관계대수

MOLLY_ 2024. 9. 22. 17:31
728x90

< 목차 >

0. TL;DR

1. 관계대수

2. 관계연산

3. 집합연산

4. 조인

5. 디비전 (division)

 

 

0. TL;DR

  1. 관계대수: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용해 질의하는 방법을 기술하는 것
  2. 관계연산
    1. 셀렉션: 릴레이션의 튜플을 추출하기 위한 연산
    2. 프로젝션: 릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자
  3. 집합연산: 합집합(∪), 교집합(∩), 카티션프로덕트(X)
    1. 합집합 (union): 2개의 테이블(릴레이션)을 합해서 하나의 테이블을 반환
    2. 교집합 (intersection): 2개의 테이블이 공통으로 가지고 있는 튜플을 반환
    3. 차집합 (set-difference): 첫 번째 릴레이션엔 속하고, 두 번째 릴레이션엔 속하지 않는 튜플 반환
    4. 카티션프로덕트 (cartesian product): 2개의 릴레이션을 연결해 하나의 릴레이션 반환 ⇒ 경우의 수만큼 데이터 발생
  4. 조인: 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평으로 결합한 연산
  5. 디비전 (division): 릴레이션의 속성값의 집합으로 연산 수행

 

 

1. 관계대수

: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용해 질의하는 방법을 기술하는 것

 

절차적 언어로, 하나 이상의 릴레이션에 연산을 수행해 결과 릴레이션이 나오기까지의 절차를 확인할 수 있는 방법을 제공한다. SQL 언어는 관계해석을 기반으로 하고, DBMS 내부에선 관계대수에 기반을 둔 연산을 수행한다.

 

 

관계의 수학적 의미

  • 관계 데이터베이스는 릴레이션이라는 수학적 개념에 기초함
  • 집합: 숫자, 문자, 사람 등 객체의 모임
  • 도메인: 카티션프로덕트의 기초 집합 A, B, C 각각이 가질 수 있는 값의 범위
    • 집합 A의 도메인: {1, 3, 5}

 

  • 집합연산: 합집합(∪), 교집합(∩), 카티션프로덕트(X)

 

 

관계대수 연산자

수학에서 연산자(operator)란 ‘피연산자에 적용되는 연산기호’를 말한다.

e.g. 2 + 3에서 2와 3은 피연산자, +기호는 연산자, 결과는 5

 

관계대수 연산자는 2가지로 나눌 수 있다.

  1. 관계 데이터 모델을 위한 순수 관계 연산(relational operations): 셀렉션, 프로젝션, 조인, 디비전, 리네임
  2. 수학적 집합 이론에 차용된 일반 집합연산(set operations): 합집합, 교집합, 차집합, 카티션프로덕트

피연산 개수가 1개면 단항 연산자, 2개면 이항 연산자다.

 

 

2. 관계연산

(1) 셀렉션

: 릴레이션의 튜플을 추출하기 위한 연산

 

  • 하나의 릴레이션을 대상으로 하는 단항 연산자 or 찾고자 하는 튜플의 조건을 명시하고, 조건에 만족하는 튜플을 반환함
  • 결과 릴레이션의 차수: 대상 릴레이션과 동일하고, 카디널리티는 대상 릴레이션보다 작거나 같음
  • 조건: <속성>=<상수값 or 속성> 형태
    • Q<조건>(R)
    • e.g. 부트캠프의 강의 목록 중, 데이터베이스인 강의를 검색하세요.

 

 

(2) 프로젝션

: 릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자

 

  • 결과 릴레이션의 차수: 대상 릴레이션의 차수보다 작거나 같고, 카디널리티는 동일
  • π<조건>(R)
    • e.g. 카달로그를 발송하기 위한 주소록을 만드세요.
    • π<이름, 주소, 전화번호>(고객)

 

 

3. 집합연산

(1) 합집합 (union)

: 2개의 테이블(릴레이션)을 합해서 하나의 테이블을 반환

 

  • 수학의 합집합과 동일한 개념
  • ∪ 기호 사용
  • 2개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함
  • 반환되는 결과는 첫 번째 릴레이션의 속성명을 가짐
  • R ∪ S로 표현
    • e.g. 모든 매장에서 판매하는 상품의 목록을 추출하세요.

 


(2) 교집합 (intersection)

: 2개의 테이블이 공통으로 가지고 있는 튜플을 반환

 

  • 수학의 교집합과 동일한 개념
  • ∩ 기호 사용
  • 2개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함
  • 반환되는 결과는 첫 번째 릴레이션의 속성명을 가짐
  • R ∩ S로 표현
    • e.g. 두 매장에서 동일하게 보유 중인 상품 목록을 추출하세요.

 

 

(3) 차집합 (set-difference)

: 첫 번째 릴레이션엔 속하고, 두 번째 릴레이션엔 속하지 않는 튜플 반환

 

  • - 기호 사용
  • 2개의 릴레이션은 서로 같은 속성과 도메인을 가져야 함
  • 반환되는 결과는 첫 번째로 릴레이션의 속성명을 가짐
  • R - S로 표현
    • e.g. 두 매장 중 A 매장에서만 보유하고 있는 상품을 추출하세요.

 

 

(4) 카티션프로덕트 (cartesian product)

: 2개의 릴레이션을 연결해 하나의 릴레이션 반환 ⇒ 경우의 수만큼 데이터 발생

 

  • 수학의 곱집합과 동일한 개념
  • X 기호 사용
  • 반환되는 결과는 첫 번째 릴레이션 오른쪽에 두 번째 릴레이션의 모든 튜플을 순서대로 배열
  • 2개의 릴레이션은 서로 같은 속성 순서와 도메인일 필요 없음
  • 결과 릴레이션의 차수는 두 릴레이션 차수의 합이고, 카디널리티는 두 릴레이션의 카디널리티의 곱
    • e.g. 첫 번째 릴레이션의 차수 4, 카디널리티 3, 두 번째 릴레이션의 차수 5, 카디널리티 4일 때
      • 결과 차수는 9(4+5), 카디널리티는 12(3*4)
      • 결과 릴레이션은 9개의 속성과 12개의 튜플을 가짐
  • R X S로 표현

 

 

4. 조인

: 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평으로 결합한 연산

수평으로 확장이 되고, 동일한 값을 조회할 때 사용한다.

 

  • 두 릴레이션을 카티션 프로덕트로 연산 → 셀렉션 연산을 한 것과 동일한 정의임 (셀렉션의 <조건>은 속성값이 같은지 비교)
  • ⋈ 기호 사용
  • 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성돼 있어야 함
  • 조인 연산의 결과는 공통 속성의 속성값이 동일한 튜플만 반환
  • 조인 연산
    1. 기본 조인 연산: 두 릴레이션 간의 속성값 비교 (세타 조인, 동등 조인, 자연 조인)
    2. 확장된 조인 연산: 두 릴레이션을 조인한 후, 한 릴레이션의 튜플만 반환 (세미 조인, 외부 조인)

 

 

5. 디비전 (division)

: 릴레이션의 속성값의 집합으로 연산 수행

  • 특정 값들을 모두 갖고 있는 튜플을 찾을 때 사용
  • 실제 자주 사용되진 않음
  • 조인 연산의 조합으로 같은 디비전 연산을 수행

 

 

728x90