관계 대수
기본 연산자
단항 연산자(unary operator)
- 셀렉트
- 프로젝트
- 리네임
이항 연산자(binary operator)
- 합집합
- 차집합
- 카티션 프로덕트
<참고. 그리스 소문자>
이름 | 소문자 |
---|---|
시그마 | σ (대문자는 Σ) |
파이 | π |
로 | ρ |
세타 | θ |
단항 연산자
셀렉트
릴레이션에서 조건을 만족하는 레코드를 선택하는 것으로 시그마 기호로 표시한다.
σ조건(R)
σ번지=231(회원)
프로젝트 연산자
한 릴레이션의 여러 속성 중 특정 속성만 선택하는 것으로 파이 기호로 표시한다.
수학적인 관점에서 릴레이션은 집합이므로 프로젝트된 릴레이션에서 중복되는 레코드는 제거된다.
πA1,A2,...,An(R)
π주소,전화번호,소속(회원)
리네임 연산자
관계 대수식에서 결과로 생성된 릴레이션은 이름이 없어, 참조할 수 있는 이름을 부여해야 한다.
리네임 연산으로 그리스 소문자 로(ρ)를 사용한다.
<R을 x로 이름을 부여>
ρx(R)
ρcs(σ번지=231(회원))
<R을 x로 이름을 부여하고 n개의 속성 이름까지 부여>
ρx(A1,A2,...,An)(R)
이항 연산자
집합 연산자
집합론을 이론적 배경으로 하는 릴레이션은 동일한 스키마를 만족하는 레코드의 집합이라고 할 수 있기 때문에 릴레이션에서 합집합, 교집합, 차집합 연산자를 동일하게 적용할 수 있다.
릴레이션은 호환 가능한 릴레이션간에 사용할 수 있으므로 집합 연산자를 사용하기 위해서는 아래 두 조건을 만족해야 한다.
집합 연산자를 사용하기 위한 두 릴레이션을 R과 S라 할때
- R과 S는 가지고 있는 속성의 수가 같아야 한다.
- 모든 i에 대해 릴레이션 R의 i번째 속성의 모데인과 릴레이션 S의 i번째 속성의 도메인이 서로 같아야 한다.
합집합 연산자
두 개의 릴레이션을 입력으로 받는 이항 연산자로, 두 릴레이션이 포함된 모든 레코드를 갖는 릴레이션을 결과값으로 가지며, 합집합 연산자 '∪'를 나타낸다.
π회원명(σ주소='서울'∧'성별='남')(회원) ∪ π회원명(σ주소='경기'∧'성별='남')(회원)
논리 접속자: ∨, ∧, ¬, ⊃, ≡
차집합 연산자
차집합 연산자는 한 릴레이션에는 포함되고 다른 릴레이션에는 포함되지 않는 레코드를 가지는 릴레이션을 결과값으로 가지며, '-'로 나타낸다.
π회원명(σ집주소='서울'∧'성별='남')(회원) - π회원명(σ근무지='서울'∧'성별='남')(회원)
교집합 연산자
입력 받은 두 릴레이션에 동시에 포함되는 레코드들의 집합을 결과값으로 가지며, 교집합 연산자 '∩'로 나타낸다.
π회원명(σ집주소='서울'∧'성별='남')(회원) ∩ π회원명(σ근무지='서울'∧'성별='남')(회원)
기본 연산자의 조합
R∩S=R-(R-S)
벤다이어그램으로 생각해 보면 쉽게 이해할 수 있다.
카티션 프로덕트 연산자
앞서 언급된 단항 연산자나 서로 양립 가능한 서로 다른 두 개의 릴레이션과 다르게
서로 다른 릴레이션 간의 관계성을 이용하는 연산자로 'x'로 표시된다.
카티션 프로덕트 연산자는 두 릴레이션의 레코드 간에 모든 조합을 취하는 연산이다.
RxS={(rs) | r∈R∧s∈S}
R릴레이션의 레코드가 4개이고 S릴레이션의 레코드가 4개이면 44=16개가 된다.*
조인 연산
카티션 프로덕트 연산과 다르게 두 릴레이션에서 서로 관련된 레코드만 결합하여 결과 집합에 포함시킨다.
σ회원.주소=사원.주소(회원x사원)
세타 조인
조인 연산 가운데 하나로 관계 연산자 'θ'로 정의되는 조인조건을 가진다.
A라는 속성을 갖는 릴레이션 R과 B라는 속성을 갖는 릴레이션 S에 대한 세타 조인(⋈AθB) 정의
R⋈AθBS=σAθB(RXS)
정의에서 θ는 관계연산자 {=,<,<=,>,>=,!=} 중에 하나가 된다.
θ가 '='이면 동등 조인 또는 이쿼 조인(equi join)이라 하며, 다음과 같이 표현할 수 있다.
회원⋈회원.주소=사원.주소사원
'프로그래밍 > database' 카테고리의 다른 글
MariaDB(MySQL) 외부 접근 허용|금지하기 (0) | 2019.05.09 |
---|