CH5 관계 대수와 관계 해수
01 관계 대수
: 원하는 데이터를 얻기 위해서 어떻게 질의를 수행할 것인지 일련의 연산을 순서대로 명시해야 하는 절차적 언어
- 관계 대수는 관계 해석과 기능과 능력 면에서 동등하다.
-
관계 대수로 표현한 식은 관계 해석으로 표현할 수 있다. ( 역 성립 )
- 사용자가 요청한 데이터를 정보화 ~= 산술 연산자와 유사
대수 : 수 대신 문자를 사용해 문제를 쉽게 하고, 수학적 법칙을 간단 명확하게 표현
관계 대수 : 데이터베이스에 저장된 데이터를 문자와 사용한 연산을 통해 요청한 데이터를 정보화하여 얻을 수 있는데 그 원리가 산술 연산자와 유사함
순수 관계 연산자
- 셀렉트 (SELECT, σ)
릴레이션에서 주어진 조건에 만족하는 튜플을 선택하는 연산자
수평적 (가로)으로 절단하여 그 일부를 가지고 구성한 것 = 수평 연산
σ<조건> (R)조건>
σ점수>80(학생) > 학생 릴레이션에서 80점 초과 학생만 찾을 때
셀렉트 연산자 : 하나의 입력 릴레이션에 적용되므로 단항 연산자이며, 한 릴레이션에서 조건을 만족하는 튜플의 부분 집합을 생성
조건 : 프레디키드(predicate) > 일반적으로 릴레이션의 임의의 어트리뷰트와 성수, 비교 연산자, 부울 연산자를 포함할 수 있다.
- 프로젝트 (PROJECT, π)
릴레이션에서 어트리뷰트 리스트에 제시된 어트리뷰트만을 추출하는 연산자
릴레이션의 열(세로)에 해당하는 어트리뷰트를 추출하는 것 = 수직 연산
π<어트리뷰트 리스트="">(R)어트리뷰트>
π이름, 전공 (학생) > 학생 릴레이션에서 이름과 성적 추출
결과 : 릴레이션의 카디날리티는 입력 릴의 카디날리티와 같고 차수는 항상 원 릴의 차수보다 작거나 같다
- 조인 (JOIN, ▷◁)
공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새 릴레이션을 만듦
종류 : 세타 조인, 동등 조인, 자연 조인, 외부 조인, 세미 조인
-
-
- 세타 조인과 동등 조인
-
세타 조인 : 선택연산의 비교 연산자가 = , < , > 등이 사용되는 연산
동등 조인 : 세타 조인 중 비교 연산자가 =인 조인이고 표기 형식 ▷◁을 사용
R ▷◁ 키 속성r = 키 속성s S
학생 ▷◁ 학번=학번 성적
중복되지 않은 값은 결과에 포함되지 않음 + 불필요한 중복이 있음
-
-
- 자연 조인 동등 조인 결과로 얻어진 불필요한 중복되는 어트리뷰트를 한 개 제외한 조인 R ▷◁ S 학생 ▷◁N 성적 조인 연산자들 중에서 가장 자주 사용 중복되지 않을 때는 삭제된다.
-
- 외부 조인 상대 릴레이션에서 대응되는 튜플을 갖지 못한 튜플이나 조인 어트리뷰트에 널 값이 들어 있는 튜플들을 다루기 위해서 조인 연산을 확장한 조인 릴레이션에 관련된 튜플이 없으면 결과 릴레이션에서 어트리뷰트를 널 값으로 채운다.
-
-
- 왼쪽 외부 조인 R의 모든 튜플들을 결과에 포함, S에 관련 튜플이 없으면 결과 릴레이션에서 릴레이션 S의 어트리뷰트들은 널 값으로 채운다.
-
-
-
-
-
- 오른쪽 외부 조인 S의 모든 튜플을 결과에 포함, R에 관련 튜플이 없으면 결과 릴레이션에서 R의 어트리뷰트는 널 값으로 채운다.
-
-
-
-
-
- 완전 외부 조인 R과 S의 모든 튜플을 결과에 포함시키고, 상대 릴레이션에 관련된 튜플이 없으면 결과 릴레이션에서 상대 릴레이션의 어트리뷰트는 널 값으로 채운다.
-
-
- 디비전 (DIVISION, ÷)
X ⊃ Y인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
R [속성r ÷ 속성s] S
속성 r,s는 동일 속성값을 가지는 속성이어야 한다.
일반 집합 연산자
-
합집합 (UNION, ⋃)
R 또는 S에 있거나 R과 S 모두에 속한 튜플로 이루어진 릴레이션
R ⋃ S = {t t ∈ R ∨ t ∈ S} 중복된 튜플 제외 후 결과 릴레이션의 차수는 R 또는 S의 차수와 같디.
결과 릴레이션의 어트리뷰트의 이름과 같거나 S 어트리뷰트의 이름이 같아야 한다
-
교집합 (INTERSECT, ∩)
R과 S 모두에 속한 튜플로 이루어진 릴레이션, 공통 정보 이외는 삭제
R ∩ S = {t t ∈ R ∧ t ∈ S} 결과 릴레이션의 차수는 R 또는 S와 같으며, 카디날리티 R ∩ S 는 릴레이션 R이나 S의 카디날리티보다 크지 않다. -
차집합 (DIFFERENCE, -)
R에는 속하지만 S에는 속하지 않는 튜플로 이루어진 릴레이션
R - S = {t t ∈ R ∧ t ∉ S} 겹치지 않는 튜플만 잔여
-
카티션 프로덕트 연산자 (CARTESIAN PRODUCT, ✕)
차수가 n + m이고, 카디날리티가 i*j이고, 어트리뷰트가 (A1, A2, … An, B1, B2, … Bm)이며, R과 S의 튜플들의 모든 가능한 조합으로 이루어진 릴레이션
R x S = {r ∙ s r ∈ R ∧ s ∈ S} -
외부 합집합
합병 가능한 두 개의 릴레이션에 대해서만 적용
외부 합집합 U+는 완전하게 합병 가능하지 않은 두 릴레이션을 합집합으로 만드는 것
합병 가능하지 않은 어트리뷰트에 해당하는 값이 없는 튜플 = 널 값