관계 데이터 연산

r·2021년 2월 18일
0

데이터베이스

목록 보기
6/7

relational algebra 란 relation 을 처리하기 위한 연산의 집합으로써 2종류가 있다.
일반 집합 연산자, 순수 관계 연산자.
일반 집합 연산자(차집합, 합집합, 교집합, caretesian)

  1. 순수 관계 연산자.
    (1) select: relation 의 튜플을 연산대상으로 함. relation 의 tuple 을 하나씩 살피면서 predicate 만족하는 튜플들만 선택함. (수평적 부분집합)
    R(하나의 relation) where 조건절
    select 문은 항상 교환법칙이 성립한다.
    s1(s2(R)) = s2(s1(R)) 이다. 이때 선택도가 낮은 select 문을 먼저 수행하는 것이 유리하다.
    왜냐?
    증명) 선택도(s1) <= 선택도(s2) 라하자.
    왼쪽 식의 수행 시간은
    (R 의 tuple 개수) (선택도(S2) (R의 tuple 개수))
    오른쪽 식의 수행 시간은
    (R 의 tuple 개수) (선택도(S1) (R의 tuple 개수))
    그러므로 선택도 낮은 select 문 먼저 선택하는게 더 시간 빠름. ㅇㅎㅇㅎ . (교환법칙이 성립하기 때문이기도 해)

(2) projection (파이)
select 와는 다르게 relation 의 tuple 이 아니라 relation 의 attribute 를 연산 대상으로 한다.
연산 결과는 project 연산에 명세된 attribute 값들만 선택하게 된다. 이는 주어진 relation 의 일부 열들로만 구성된것이기 때문에 (vertical subset) 이라한다.

이 projection 연산 결과로 만들어진 relation 에 똑같은 tuple 이 중복되게 포함되면 (후보키를 전부 제거하면 이런 경우 생김) tuple 제거함 해야 함. 또한 attribute list 도 중복되면 안됨. 왜냐하면 relation 이 attribute ㅡ이 집합이니까.

(3) join
(1) equiijoin

(2) natural join

(4) division
두 relation R(X), S(Y) 에 대해서
Y <= X, X - Y = Z 라 하자
R(X) = R(Z, Y)

(5) rename: 릴레이션에 이름을 붙일 수 있다. attribute 이름도 변경 가능. 동시에도 변경 가능.

join, 교집합 division 연산을 composite 연산이라고 하고 나머지는 다 primitive 연산이라고 한다.
근원 연산: 다른 연산을 이용하여 표현할 수 없는 연산
composite 연산: 5개의 근워연산으로 표현 가능

(1) semijoin vs outerjoin:
R semijoin S
semijoin: S 와의 natural join 에 참여 할 수 있는 R 의 튜플만을 선택하는 것.

outer join: innerjoin 을 확장한 개념,
join 을 하는 과정에서 한 relation 에 있는 어떤 튜플이 join 할 상대 relation 에 대응되는 tuple 이 없을 경우에 이를 제외시키기 않고, 상대를 null 로 만들어 relation 에 포함시키고 있다.

relation data 의 연산 표현 방법으로 지금까지 relation algebra 를 설명했다. 또다른 연산 표현 방법은 relation calculus 가 있다.

profile
프론트엔드 개발자를 꿈꿉니다.

0개의 댓글