관계 대수(데이터베이스)

심채운·2023년 7월 5일
0

학점은행제 컴공

목록 보기
21/40

관계 대수(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)
  • 이항 연산
    • JOIN (⋈)
    • DIVISION (/)
  • 부가 연산
    • 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 임
profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글