데지덤

  1. 데이터관련 직무와 자격
    1. 데이터베이스 직무

    2. 데이터베이스 자격

  2. 데이터관련 학습방법
    1. 데이터베이스 개론 학습

    2. DBMS 학습

    3. 읽어볼만한 DB책

  3. 최신동향과 유명한 Things
    1. DB최신동향

    2. 데이터로 유명한 Things

  4. 데이터베이스 개념
    1. 데이터베이스 개념

    2. DBMS

    3. 데이터베이스 개발과운영

  5. 데이터베이스 설계(1/2)
    1. 데이터표준

    2. 데이터모델링

    3. 데이터모델 디자인패턴

  6. 데이터베이스 설계(2/2)
    1. 프로세스및상관모델링

    2. 정규화

    3. 반(역)정규화

    4. DB물리설계

  7. 인덱싱과 DB프로그래밍
    1. 인덱스와 해싱

    2. 관계연산

    3. DB언어

    4. SQL

    5. 데이터베이스 미들웨어

  8. 데이터베이스 운영
    1. 트랜잭션

    2. 병렬처리

    3. 데이터베이스 복구

    4. 데이터베이스 성능

    5. 병행제어(동시성제어)

  9. 분석계 및 빅데이터기술
    1. 데이터웨어하우스

    2. 데이터마이닝

    3. 빅데이터기술

  10. 데이터거버넌스
    1. 데이터거버넌스

    2. 데이터베이스 감리/진단

  11. 데이터베이스 종류와 보안
    1. 데이터베이스 종류

    2. 데이터베이스 보안

  12. DBMS
    1. 오라클

    2. SQL Server

    3. DB2

    4. Sybase

    5. Altibase

관계대수

개념
관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형언어

1. 관계 데이터 모델에서 지원되는 정형적 언어, 관계대수의 개요

  가. 관계대수(Relational algebra)의 정의

    -관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형언어

    -관계해석(Relational calculus) : 정보(데이터)만 명시

  나. 관계대수의 용도

    -상용 관계 DBMS들에서 널리 사용되는 SQL의 이론적인 기초

    -SQL을 구현하고 최적화하기 위해 DBMS의 내부 언어로서도 사용.

 

2.  관계대수의 릴레이션 생성 개념도

  • 산술 연산자와 유사하게 단일 릴레이션이나 두 개의 릴레이션을 입력으로 받아 하나의 결과 릴레이션을 생성

 

 3. 관계대수 연산자

  가. 관계대수 연산자의 종류와 표기법

구분

연산자 종류

비고

관 계

대 수

집합 연산자

합집합(UNION, ∪)

교집합(INTERSECT, ∩)

차집합(DIFFERENCE, -)

카티션 프로덕트(CARTESIAN PRODUCT, ×)

 

관계 대수의 폐쇄 성질 (closure property)

-피연산자와 연산 결과가 모두 릴레이션

-중첩(nested)된 수식의 표현이 가능

 

합병가능(union-compatible)한 릴레이션 (∪, ∩, -)

-피연산자들은 차수가 같아야 함

-애트리뷰트 별 도메인이 같아야 함

순수 연산자

실렉트(SELECT,  s )

프로젝트(PROJECT,  P )

조인(JOIN,         )

디비전(DIVISION, ÷)

근원 연산자

합집합, 차집합, 카티션 프로덕트, 프로젝트, 실렉트

하나의 논리적 기능을 수행, 다른 연산을 이용 하여 표현할 수 없음

복합 연산자

교집합, 조인, 디비전

근원 연산을 이용하여 표현할 수 있음

관 계

해 석

투플 관계해 석

{ t1.A1, t2.A2, …, tn.An|F(t1, … tn, tn+1,

…, tn+m) }

. ti : 투플 변수

. F(t1,…, tn, tn+1,…, tn+m): ti가 연관된 정형식

원하는 릴레이션을 투플해석식(tuple calculus expression) 으로 정의할 수 있는 표기법

도메인 관계해 석

{ x1,x2,…,xn|F(x1,…,xn,xn+1,…,xn+m) }

. xi: 도메인변수

. F(x1,…,xn,xn+1,…,xn+m) : xi에 대한 정형식

원하는 릴레이션을 도메인 해석식 (domain calculus expression)으로 표현하는 방법

- 일반집합연산(합집합, 교집합, 차집합, 카티션곱)와 순수관계연산(관계형 데이터베이스에서만 사용하는 연산자 : 실렉션, 프로젝션, 세타조인, 동등조인, 자연조인, 세미조인, 디비전)으로 분류가능

 

  나. 관계대수 연산자의 기능

 

  다. 일반 집합 연산자

연산자

설명

합집합

(UNION,∪)

이항 연산으로 관계성이 있는 두개의 릴레이션을 합집합하여 하나의 릴레이션을 만들어 내는 연산

교집합

(INTERSECT,∩)

이항 연산으로 관계성이 있는 두개의 릴레이션에서 중복되어 있는 내용을 선택하여 새로운 릴레이션을 만들어 내는 연산

차집합

(DIFFERENCE,-)

이항 연산으로 관계성이 있는 두개의 릴레이션이 있을 때 그 중 하나의 릴레이션에서 또 다른 릴레이션의 내용과 겹치는 내용을 제거해서 새로운 릴레이션을 생성하는 연산

카티션 프로덕트

(CARTESIAN

PRODUCT,×)

이항 연산으로 두 릴레이션의 현재 투플로 구성 가능한 모든 조합 만듬

 결과 릴레이션의 차수 = R의 차수 + S의 차수

 결과 릴레이션의 카디널리티 = R의 카디널리티 * S의 카디널리티

 

  라. 순수 집합 연산자

연산자

설명

셀렉션

(SELECT, )

단항 연산으로 릴레이션에서 조건에 맞는 레코드를 분리해내는 연산

하나의 릴레이션에서 수평적 부분집합을 취하는 방법

프로젝션

(PROJECT,∏)

단항 연산으로 릴레이션에서 참조하고자 하는 어트리뷰트를 선택하여 분리해 내는 연산

하나의 릴레이션에서 수직적 부분집합을 취하는 방법

결과에서 중복된 투플은 제거됨

조인

(JOIN, ∞)

두 개 이상의 릴레이션에서 조건에 맞는 튜플이나 어플리뷰트를 조합하여 새로운 릴레이션을 생성하는 연산

- 세타조인 : =, <>, >, >=, <, <=

- 동일조인(Equi Join) : =, 중복속성 허용

- 자연조인(Natural Join) : =, 중복속성 제거

디비전

(DIVISION, ÷)

두 개의 릴레이션 A와 B가 있을 때 B의 릴레이션의 모든 조건을 만족하는 경우의 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산

 

  마. 기타 연산자

연산자

설명

세미 조인

분산 데이터베이스 환경에서 대두된 조인

통신비용을 초소로 하는 조인

외부 조인

한 릴레이션에 있는 튜플이 조인할 상대 릴레이션에 대응하는 튜를이 없는 경우, 상대를 Null 튜플로 만들어 결과에 포함

두 조인 릴레이션의 모든 튜플들이 결과 릴레이션에 포함됨

외부 합집합

합병 가능하지 않는(부분적으로 합병가능한) 두 릴레이션을 차수를 확장시켜 합집합으로 만듦

 

4. 관계연산

 

종류

설명

합집합

<기준>

차집합(DIFFERENCE)

두 릴레이션의 차집합(difference)은 첫 번째 릴레이션에는   나타나지만 두 번째 릴레이션에는 나타나지 않는 투플들을  포함하는 세 번째 릴레이션이 된다.

두 릴레이션은 합병 가능 해야 한다

교집합(INTERSECTION)

두 릴레이션의 교집합(intersection)은 첫 번째와 두 번째   릴레이션에 모두 나타나는 투플들을 포함하는 세 번째 릴레이션이 된다. 여기서도 릴레이션들은 합병 가능해야 한다.

프로덕트(PRODUCT)

  • 두 릴레이션의 프로덕트(product,카티젼 프로덕트,cartesian product)는 첫 번째 릴레이션의 각 투플을 두 번째 릴레이션의 각 투플과 접속(concatenation)시킨 것이다.
  • m 투플을 갖는 릴레이션 A와 n 투플을 갖는 릴레이션 B의 프로덕트는 m × n 개의 투플을 갖게 된다.

   프로덕트는 A × B 또는 A TIMES B라고 표시한다.

프로젝션(PROJECTION)

프로젝션(projection)은 한 릴레이션에서 지정된 속성들을 선택하는 연산이다. 프로젝션의 결과는 선택된 속성을 포함하는 새로운 릴레이션이 된다.

즉, 프로젝션은 주어진 릴레이션에서 열들을 선택해낸다.

   그림 9-17    STUDENT 릴레이션의 프로젝션:

셀렉션(SELECTION)

  • 셀렉션(selection) 연산자는 릴레이션의 수평 부분 집합(행의 부분집합)을 만든다.
  •   셀렉션은 릴레이션 이름, 키워드 WHERE, 속성이 포함된 조건의 순으로 표시된다.
  •    그림 9-18  관계 대수의 셀렉션의 예:

조인(JOIN)

조인(join) 연산은 프로덕트, 셀렉션, (경우에 따라) 프로젝션 연산을 합친 것이다.

   두 릴레이션 A와 B의 조인은 다음과 같이 진행된다.

      ① 프로덕트 A × B를 구한다.

      ② 일부 투플을 제거하기 위해 셀렉션을 수행한다 (셀

      렉션 조건은 조인 조건의 일부로 제시된다).

      ③ (경우에 따라) 프로젝션을 통해 일부 속성을 제거한

      다.

  • 조인의 예

(예) 각 학생에 대해 이름과 좌석번호를 알고 싶다고 하자.

   STUDENT JOIN(SID = StudentNumber) ENROLLMENT로 표기

  "STUDENT의 SID값과 ENROLLMENT의 StudentNumber값이 같은 경우, 그 STUDENT 투플과 ENROLLMENT 투플을 조인시키라"는 것이다.

(과정)

  1. 이 조인을 수행하기 위해 먼저 STUDENT와 ENROLLMENT

     의 프로덕트를 구한다 (그림 9-16).

  2. 이 프로덕트 결과에서 STUDENT의 SID값이 ENROLLMENT

     의 StudentNumber값과 같은 투플들만을 SELECT한다.

  3. 최종적인 결과는 그림 9-19(b)와 같다. 그림 9-19(a)

     의 조인을 동일 조인(equijoin), 그림 9-19(b)의 조

     인을 자연 조인(natural join)이라고 한다. 특별히

     명시하지않는 한 조인이라 하면 보통 자연 조인을

     의미한다.

 

그림 9-19 STUDENT 와 ENROLLMENT 릴레이션의 조인의 예:

  (a) 동일 조인(Equijoin)

  (b) 자연 조인(Natural Join)

 

  • 동일성 이외의 조건을 사용하는 조인도 가능하다. 예를 들어, STUDENT JOIN (SID not = StudentNumber) ENROLLMENT, STUDENT JOIN (SID < FID) FACULTY와 같은조인도 가능하다. 후자의 조인은 학생 번호가 교수 번호보다 작은 투플들을 결과로 한다. 이 조인은PeopleIdentifiers가 시간 순서로 할당되어 있다면 의미가 있다. 즉, 교수보다 오래 대학에 있어온 학생에 대해 학생과 교수의 쌍을 보여주게 될 것이다.
  • 조인의 조건에는 중요한 제약이 있다. 즉, 조인 조건으로 사용되는 속성들은 도메인이 일치해야 한다.

   그러므로 STUDENT JOIN (Age = ClassSize) ENROLLMENT는 잘못된 조인이다. Age와 ClassSize값은 호환성은 있지만 도메인은 다르기 때문이다. 이러한 유형의 조인은 아무런 의미가 없다. (그러나 불행하게도 많은 관계DBMS 제품들이 이러한 조인을 허용한다.)

 

Division

R ÷ S : S의 모든 투플에 연관되어 있는 R의 투플을 선택하는 것

세미 조인 (Semijoin, )

R S : R과 S의 자연조인한 결과를 R의 애트리뷰트로 프로젝트

외부 조인 (Outerjoin, )

한 릴레이션에 있는 투플이 조인할 상대 릴레이션에 대응되는 투플이 없을 경우, 상대를

널(null) 투플로 만들어 결과 릴레이션에 포함. 두 조인 릴레이션의 모든 투플들이 결과

릴레이션에 포함됨

외부 합집합 (Outer-union, ∪ )

합병 가능하지 않은(부분적으로 합병 가능한) 두 릴레이션을 차수를 확장시켜 합집합으로 만듬

Full Outer Join

SELECT l.branch_name, l.loan_number, l.amount, b.customer_name

FROM nloan l FULL OUTER JOIN nborrower b

ON l.loan_number = b.loan_number;

주의사항 : where l.loan_number(+) = b.loan_number(+) ; è 질의어 없음.

 

Left Outer Join

SELECT l.branch_name, l.loan_number, l.amount, b.customer_name

FROM nloan l LEFT OUTER JOIN nborrower b

ON l.loan_number = b.loan_number;

 

SELECT l.branch_name, l.loan_number, l.amount, b.customer_name

FROM nloan l, nborrower b

where l.loan_number = b.loan_number(+);

 

right Outer Join

SELECT l.branch_name, l.loan_number, l.amount, b.customer_name

FROM nloan l RIGHT OUTER JOIN nborrower b

ON l.loan_number = b.loan_number;

 

SELECT l.branch_name, l.loan_number, l.amount, b.customer_name

FROM nloan l, nborrower b

where l.loan_number(+) = b.loan_number;

 

 

 

5. 관계대수의 완전성과 한계

  가. 관계대수의 완전성

   -관계대수의 필수적인 연산자를 제외한 연산자는 필수적인 연산자를 두가지 이상 조합하면 표현이 가능

    -임의의 질의어가 적어도 필수적인 연산자 만큼의 표현력을 가지고 있으면 관계적으로 완전(Relational Complete)하다고 표현

  나. 관계대수의 한계

    -관계대수는 산술연산이 불가능

    -집단함수(Aggregate Function)를 지원하지 않음

    -정렬을 나타낼 수 없음

    -데이터베이스의 수정이 불가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글