[DATABASE] 데이터베이스 개론_CH6

bin1225·2024년 10월 21일
0

DATABASE

목록 보기
11/19
post-thumbnail

1. 관계 데이터 연산의 개념

데이터 모델은 구조(struct), 연산(operation), 제약조건(constraint)으로 구성된다.
연산이란 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리를 요구하는 것이다.

대표적인 관계 데이터 연산으로 관계 대수관계 해석이 있다.

관계 대수(relational algebra)

  • 원하는 결과를 얻기 위해 과정을 순서대로 기술하는 절차언어이다.

관계 해석(relational calculus)

  • 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어이다.
  • SQL이 대표적인 비절차 언어이다.

관계 대수와 관계해석은 상용화된 데이터베이스에서는 잘 사용되지 않는 개념이다.
언어의 유용성을 검증하는데 검정의 기준 역할을 한다. 관계 대수와 관계 해석으로 기술할 수 있는 질의(query)를 해당 언어로 기술할 수 있으면 유용한 언어이다.


2. 관계 대수

2.1 관계 대수의 개념

관계 대수는 원하는 겨로가를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어이다.

관계 대수 연산자는 특성에 따라 일반 집합 연산자(set operation)순수 관계 연산자(relational operation)으로 분류한다.

폐쇄특성

피연산자와 연산 결과 모두 릴레이션이다.

2.2 일반 집합 연산자(합집합, 교집합, 차집합, 카티션 프로덕트)

일반집합 연산자는 수학의 집합 관련 연산자를 차용하여 릴레이션을 투플의 집합으로 간주하고 연산을 수행한다.

일반 집합 연산 조건

두 집합이 합병 가능해야 한다.

  • 두 릴레이션의 차수가 같다. -> 속성의 개수가 같다.
  • 2개의 릴레이션에 서로 대응되는 속성의 도메인이 같다.

2.2.1 합집합(union)

R∪S

R에 속하거나 S에 속하는 모든 투플로 결과 릴레이션을 구성한다.

  • 결과도 릴레이션이므로 중복 투플은 존재하지 않는다.
  • 연산의 순서에 상관없이 결과가 같다. (교환 특성)

2.2.2 교집합(intersection)

R∩S

R과 S에 공통으로 속하는 투플로 결과 릴레이션을 구성한다.

  • 결과 릴레이션의 차수는 R,S와 같고, 카디널리티는 R,S중 어떤 것보다 같거나 작다.
  • 교환 특성이 성립한다.
  • 결합 특징이 성립한다.

2.2.3 차집합(difference)

R-S

R에는 존재하지만 S에는 존재하지 않는 투플로 결과를 구성한다.

  • 교환 특성이 성립하지 않는다.
  • 결합 특징도 성립하지 않는다.

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

RXS

릴레이션 R에 속한 각 투플과 S에 속한 각 투플을 모두 연결하여 결과 릴레이션을 구성한다.

  • 합병이 불가능한 경우에도 카티션 프로덕트 연산은 가능하다. (차수와 대응 도메인이 달라도 연산이 가능하다.)

  • 교환적 특성, 결합적 특성이 성립한다.

2.3 순수 관계 연산자(셀렉트, 프로젝션, 조인, 디비전)

릴레이션의 구조와 특성을 이용하는 연산자이다.

2.3.1 셀렉트(select)

  • 주어진 조건만 만족하는 투플만 선택하여 결과 릴레이션을 구성한다.

  • 조건식은 비교 연산자(>, ≥, <, ≤, =, ≠)와 논리 연산자(∧, ∨, ¬)를 이용해 작성한다.

  • 릴레이션의 수평적 부분집합을 생성하는 것과 같다.

데이터 언어 형식 - 셀렉트
릴레이션 where 조건식
ex)
고객 where 등급 = gold and 적립금>=2000

2.3.2 프로젝트(project)

릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성한다.

  • 릴레이션의 수직적 부분집합을 생성하는 것과 같다.
데이터 언어 형식 - 프로젝트
릴레이션[속성1, ..., 속성n]

2.3.3 조인(join)

결과를 얻기 위해 여러 릴레이션을 함께 사용해야하는 경우 join 연산을 이용한다.
조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성한다.

  • 조인 속성은 두 릴레이션이 공통으로 가지는 속성으로, 두 릴레이션의 구성요소 간 관계를 나타낸다.
데이터 언어 형식 - 조인
릴레이션1 ⋈ 릴레이션2
예시


주문 릴레이션의 외래키인 고객아이디는 조인 속성이다.
고객아이디값을 통해 주문 릴레이션과 고객 릴레이션 구성요소간 관계를 알 수 있다.

특정 고객이 주문한 제품 데이터가 필요한 경우 고객과 주문에 대한 데이터가 모두 필요하다. 때문에 조인 연산으로 결과 릴레이션을 구성한 후 조건에 맞는 투플을 찾는다.

일반적으로 조인은 자연조인을 의미한다.

세타 조인
  • 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결한 새로운 투플로 결과를 구성한다.
릴레이션1 ⋈A𝜃B 릴레이션2

𝜽는 비교 연산자(>, ≥, <, ≤, =, ≠)를 의미
동일 조인
  • 세타조인에서 연산자(𝜽)가 =인 조인
  • 결과 릴레이션 속성의 중복을 허용한다. -> 중복 제거 시 자연 조인(자연조인에서는 조인 속성이 하나로 통일 된다.)

2.3.4 디비전(division)

R÷S는 S의 모든 투플과 관련 있는 릴레이션 R의 투플로 결과 릴레이션을 구성한다.

  • S에 있는 모든 속성과 대응하는 도메인을 R이 모두 가지고 있어야 연산 가능
릴레이션1 ÷ 릴레이션2

2.4 관계 대수 확장(세미 조인, 외부 조인)

조인 연산의 확장 버전이다.

2.4.1 세미 조인(semi-join)

R ⋉ S 

S 의 조인 속성으로만 구성한 릴레이션을 릴레이션 R에 자연조인 하는 것이다.

  • 교환 법칙 성립 X
  • 불필요한 속성을 줄여 조인 연산의 비용을 줄인다.

2.4.2 외부 조인(outer-join)

자연 조인 연산을 수행할 때 제외되는 투플을 결과 릴레이션에 포함시킨다.

  • 결과적으로 연산에 참여하는 두 릴레이션의 모든 투플을 결과에 포함시킨다.
  • 결과 릴레이션에 속성 값이 없는 경우는 널값으로 처리한다.

두 피연산자 중 기준을 어디로 잡느냐에 따라 분류된다.

left join

왼쪽에 있는 릴레이션의 모든 투플을 결과 릴레이션에 포함 시킨다.

right join

오른쪽에 있는 릴레이션의 모든 투플을 결과 릴레이션에 포함 시킨다.

full join

양쪽 릴레이션의 모든 투플을 결과 릴레이션에 포함시킨다.

0개의 댓글