관계대수
관계대수란 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어이다.
관계대수는 절차적 언어로, 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 나오기까지의 절차를 확인하는 방법을 제공한다.
관계대수 연산자
관계대수 연산자는 대략 두 개의 그룹으로 나눌 수 있다. 첫째는 관계 데이터 모델을 위해 고안된 순수 관계 연산에 사용되는 연산자이며, 둘째는 수학의 집합이론에서 차용된 일반 집합연산에 사용되는 연산자이다.
순수 관계 연산 1. 셀렉션 2. 프로젝션 3. 조인 4. 디비전 5. 개명 일반 집합 연산 1. 합집합 2. 교집합 3. 차집합 4. 카티션 프로덕트 |
셀렉션과 프로젝션
셀렉션과 프로젝션은 관계대수에서 가장 기본적인 연산으로 하나의 릴레이션을 대상으로 하는 단항 연산자이다.
셀렉션
릴레이션의 투플을 추출하기 위한 연산이다.
하나의 릴레이션을 대상으로 하는 단항 연산자이며, 찾고자 하는 투플의 조건을 명시하고 그 조건에 만족하는 투플을 반환한다.
결과 릴레이션의 차수는 대상 릴레이션과 동일하고 카디날리티는 대상 릴레이션보다 작거나 같다.
조건으로는 <속성> = <상숫값 또는 속성> 형태가 올 수 있고 R은 릴레이션을 나타낸다.
조건에는 =, <, >, <=, >= 등이 사용된다.
σ<조건>(R)
예) σ가격 <= 8000(도서)
(위의 예를 해석하자면 가격이 8000원 이하인 도서만 찾아 추출)
조건이 여러 개라면 ∧(and) ∨(or) ¬(not) 기호를 이용하여 표현할 수 있다.
예) σ가격 <= 8000 ∧ 도서번호 >= 3 (도서)
프로젝션
릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자이다.
결과 릴레이션의 차수는 대상 릴레이션의 차수보다 작거나 같고 카디날리티는 동일하다.
작성 형식 π<속성리스트>(R)
예) π 이름, 주소, 핸드폰 (고객)
이처럼 프로젝션은 원하는 속성값만 추출하고자 할 때 사용한다.
위의 예의 결과 릴레이션은 세 개의 속성을 가지므로 차수가 3이다.
집합 연산(합집합, 교집합, 차집합, 카티션 프로덕트)
관계대수에서 집합연산은 합집합(U), 교집합(∩), 차집합(-), 카티션 프로덕트(x) 등이 있다.
합집합, 차지합, 카티션 프로덕트는 기본 연산자
교집합은 기본 연산자로 정의가 가능한 유도된 연산자이다.(R∩S = R-(R-S))
합집합(Union, U)
두 개의 릴레이션을 합하여 하나의 릴레이션을 반환한다.
두 개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 한다.
반환되는 결과는 첫 번째 릴레이션의 속성 이름을 가진다.
작성형식 R U S
교집합(intersection, ∩)
교집합 역시 합병가능한 두 릴레이션을 대상으로 하며, 두 릴레이션이 공통으로 가지고 있는 투플을 반환한다.
작성형식 R ∩ S
(교집합은 두 릴레이션에 있는 같은 투플을 반환하므로 100 '정소화'만을 보여준다.)
차집합(Difference, - )
첫 번째 릴레이션에는 속하고 두 번째 릴레이션에는 속하지 않는 투플을 반환한다.
다른 집합연산과 합병 가능해야 한다.
작성형식 R - S
카티션 프로덕트(Cartesian Product, x)
카티션 프로덕트는 수평적 연산이며, 두 릴레이션을 연결시켜 하나로 합칠 때 사용한다.
속성과 도메인이 같을 필요는 없다.
두 릴레이션의 카티날리티의 곱이다.
예) 첫 번째 릴레이션의 차수: 4 카디날리티: 3, 두 번째 릴레이션의 차수: 5 카디날리티: 4라면
결과 릴레이션의 차수는:9(4+5), 카디날리티는 12(3*4)가 된다.
만약 두 릴레이션이 동일한 속성 이름을 가지고 있으면 충돌할 수 있다.
이때는 결과 릴레이션의 속성이름을 <릴레이션 이름>.<속성 이름>의 형태로 표현한다.
작성형식 R x S
카티션 프로덕트는 두 릴레이션을 무조건 수평으로 합친 결과를 반환하기 때문에 의미가 없다.
이때 셀렉션과 프로젝트 연산을 조합하여 두 릴레이션의 관계에 따른 의미 있는 결과를 찾으면 유용하게 사용할 수 있다.
조인
조인(Join)
조인은 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 투플을 수평으로 결합하는 연산이다.
두 릴레이션을 카티션 프로덕트 연산을 한 후 셀렉션 연산을 한 것으로 정의할 수 있다.
기본 연산자의 조합으로 구현이 가능한 유도된 연산자이다. (σc(R x S)와 같은 의미)
디비전
디비전(Division, ÷)
릴레이션의 속성값의 집합으로 연산을 수행한다.
작성형식 R÷S
디비젼 연산을 일반적으로 설명하면...
릴레이션 R의 속성은(A1, A2, A3...An, B1, B2, B3...Bm)으로 표시할 수 있고
릴레이션 R의 차수는 n+m이 된다.
릴레이션 R의 속성인 B의 부분집합으로 이루어진 릴레이션 S가 있으면 릴레이션 S의 속성은 (B1,B2...Bm)이 되며 차수는 m이 된다.
이때 R ÷ S를 하면...
릴레이션 S의 속성 B값과 릴레이션 R의 속성 B값이 서로 동일하게 대응하는 릴레이션 R의 속성 A의 투플을 반환한다.
실제로 자주 사용하지 않으며 조인 연산을 통해 디비전 연산을 수행할 수 있다.
'Database' 카테고리의 다른 글
[Database] 키와 무결성 제약 조건 (0) | 2023.04.10 |
---|---|
[Database] 정규화(Normalization) (0) | 2023.02.27 |
[Database] 관계 데이터 모델의 개념 (0) | 2022.10.24 |
[Database] ER 모델 (0) | 2022.10.17 |
[Database] 참여 제약 조건과 키(Key) (0) | 2022.09.25 |