[DB] 3. 관계대수

    이전.. 

    데이터 모델 = 데이터 구조, 연산, 제약조건 

    관계대수 : 관계형 DB에서 연산 담당

     

    관계대수(relatinal algebra) : 릴레이션에서 원하는 결과를 얻기 위해 질의하는 방법을 기술한 언어

    관계 데이터 연산 

    1. 관계대수(절차적) : 어떤 데이터를 찾기 위한 처리 절차를 명시, DBMS내 처리 언어로 사용

    2. 관계해석(비절차적, 선언적) : 어떤 데이터를 찾는지 명시, SQL의 이론적 기반

    * 카티전 프로덕트(X) : 데카르트 곱, 두 집합의 원소를 골라 순서쌍으로 나타낸다.

    도메인(domain) : 카티전 프로덕트의 기초 집합(A, B)가 가질 수 있는 값의 범위

     

    관계대수

    순수 관계 연산자 : 관계 데이터 모델의 위해 고안 (셀렉트, 조인, 프로젝트, 개명, 디비전)

    - 셀렉트 : 릴레이션에서 조건을 만족하는 투플들로 결과 릴레이션을 구성. (여러개의 (조건에 맞는)투플로 구성된 테이블을 만들어서 리턴.)

    결과 릴레이션이 연산 대상 릴레이션의 수평적 부분집합

     

    - 프로젝트 : 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성. (선택한 속성의 열을 가져온다.)

    결과 릴레이션이 연산 대상 릴레이션의 수직적 부분집합

     

    - 개명연산 : 관계대수 연산을 통해 만들어지는 릴레이션을 참조하기 위해 이름을 설정해주는 연산.

     

    일반 관계 연산자 : 수학의 집합이론에서 차용(교집합, 합집합, 차집합, 카티전 프로덕트)

    - 합집합(union) : 투플을 덧붙인다. 두 개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 한다.

    - 교집합(intersection) : 공통된 투플. 

    - 차집합(difference) : 릴레이션 R과 S에서 R에서 S와 공통된 투플을 삭제한 릴레이션을 반환

    집합연산자의 특징 : 피연산자가 2개 필요하다. 합집합, 교집합, 차집합은 피연자인 두 릴레이셔이 합병 가능해야 함

    - 합병가능 (union-compatible) 조건
    두 릴레이션의 차수가 같아야 함, 두 릴레이션에서 서로 대응되는 도메인 속성이 같아야 함

    - 카티션 프로덕트(cartesian product) : 릴레이션 R의 각 투플에 릴레이션 S의 각 투플을 모두 대응시켜 연결한 릴레이션을 반환

    차수는 R과 S의 차수를 더한 것과 같다. 카디널리티는 R과 S의 카디널리티를 곱한 것과 같다.

     

     

    순수 관계 연산자(relational operation)

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

     

    조인(JOIN) : 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산

    - 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함

    형식 : R과 S의 조인(C) = 셀렉트 (C)(R X S).   (R과 S는 릴레이션, C는 조인조건)

     

     

    조인의 구분

    세타조인(theta join)

    동등조인(equi join)

    - 세타조인에서 '=' 연산자를 사용한 조인을 말함. 보통 조인 연산이라 하면 동등조인을 지칭한다.

    자연조인(natural join)

    - 동등조인에서 조인에 참여한 속성이 중복지 않도록 두 번째 속성(조인에 사용한 속성)을 제거

    세미조인(semi join)

    - 세미조인은 조인 속성으로 수행한 뒤 테이블의 프로젝트 연산 결과와 자연조인하는 것.

    - 즉, 세미조인은 원래 릴레이션에서 자연 조인 연산에 참여할 수 있는 투플만 선택된다.

    - 뒤 테이블에 대한 프로젝트 연산을 수행하고, 그 결과와 자연조인 하므로 불필요한 속성을 미리 제거하여 조인 연산 비용을 줄이는 장점이 있다.

    - 기호에서 닫힌 쪽 릴레이션의 투플만 반환한다.

    외부조인(outer join)

    - 자연조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시킨다.

    - 값이 없는 대응 속성에는 NULL값을 채워, 두 릴레이션의 모든 투플을 결과 릴레이션에 포함시킨다.

    - 왼쪽 외부조인 (left outer join) : 자연조인을 수행하고, 자연조인에서 빠진 왼쪽 릴레이션의 투플에 NULL값을 대응시킨다.

    - 완전 외부조인 (full outer join): 양쪽 릴레이션에서 모든 투플들에 대해 테이블을 작성하고 대응되지 않는 값에 NULL값을 대입한다.

    - 오른쪽 외부조인 (right outer join) 

     

    디비전(division)

    - 릴레이션의 속성 값의 집합(프로덕트의 결과)로 연산을 수행한다.

    - 릴레이션 2의 모든 투플과 관련이 있는 릴레이션 1의 투플로 결과 릴레이션을 구성한다.

    - 즉, 릴레이션 1이 릴레이션 2의 모든 속성을 포함하고 있어야 연산이 가능하다. == 도메인이 같아야한다.

     

     

     

     

    '강의요약 > 데이터베이스' 카테고리의 다른 글

    [DB] 5. JOIN  (0) 2023.04.11
    [DB] 4. SQL  (0) 2023.04.04
    [DB] 2.2 키(key)  (0) 2023.03.20
    [DB] 2. 데이터 모델  (0) 2023.03.13

    댓글