본문 바로가기

와사비크래커 IT Tip/DB

[DB] 관계 대수와 관계 해석

728x90
반응형

1     관계 대수와 관계 해석

1.1    관계 해석(Relational Calculus)

-      ‘어떻게 검색할 것인가’ 보다 ‘무엇을 검색할 것인가’만을 기술하는 선언적 표현법을 사용하는 비절차적 질의어이다..

-      관계 대수와 함께 릴레이션을 다루는 대표적인 이론적 방법이다.

-      SQL을 포함한 많은 상업용 관계 언어들이 관계 해석에 기반을 두고 있다.

-      관계 해석은 튜플 관계 해석(Tuple Relational Calculus)과 도메인 관계 해석(Domain Relational Calculus)으로 구분된다.

-      관계해석과 관계 대수는 관계 데이터베이스를 처리하는 기능과 능력 면에서 동등하며, 관계 대수로 표현한 식은 관계 해석으로 표현할 수 있다.

1.2    관계 대수(Relational Algebra)

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

-      어떻게 질의를 수행할 것인가를 명시하는 절차적인 언어이다.

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

-      하나 이상의 릴레이션에 적용되는 연산자들을 포함한다. 이 연산자들은 주어진 릴레이션들로부터 새로운 릴레이션을 생성한다.

1.2.1     필수적인 연산자

1.2.1.1      셀렉션(Selection) 연산자

-      셀렉션 연산자는 한 릴레이션에 실렉션 조건[1]을 만족하는 튜플들의 부분 집합을 생성한다. 즉, 주어진 조건을 만족하는 튜플들만 걸러내는 연산이다.

-      하나의 입력 릴레이션에 적용되므로 단항 연산자이다.

-      셀렉션의 결과로 생기는 릴레이션은 입력 릴레이션과 같은 애트리뷰트들을 가지므로 결과 릴레이션의 차수는 입력 릴레이션의 차수와 같다.

-      또한, 셀렉션 연산의 결과 릴레이션의 카디날리티는 항상 원래 릴레이션의 카디날리티보다 작거나 같다.

1.2.1.2      프로젝션(Projection) 연산자

-      셀렉션과 달리 한 릴레이션의 애트리뷰트들의 부분집합을 구한다.

-      프로젝션 연산의 결과 릴레이션에는 입력 릴레이션으로부터 골라낸 일부 애트리뷰트들만 포함되므로 중복된 튜플들이 존재할 수 있다. 따라서 릴레이션의 특성을 만족하기 위해 중복 튜플들을 제거하는 과정이 필요하다.

1.2.1.3      집합(Union) 연산자

-      릴레이션이 튜플들의 집합이기 때문에 기존의 집합 연산이 릴레이션에 적용된다.

-      집합 연산에는 합집합, 교집합, 차집합 연산자가 있다.

-      집합 연산자들은 두 개의 릴레이션을 입력으로 받아들이므로 이항 연산자이다.

s   합집합 연산자(Uon)

s   두 릴레이션 R과 S의 합집합 R∪S는 R 또는 S에 있거나 R과 S 모두에 속한 튜플로 이루어진 릴레이션이다.

s   릴레이션이 튜플들의 집합이므로 결과 릴레이션에서 중복된 튜플들은 제외된다.

s   교집합 연산자(Intersection)

s   두 릴레이션 R과 S의 교집합 R∩S는 R과 S 모두에 속한 튜플들로 이루어진 릴레이션이다.

s   차집합 연산자(Difference)

s   두 릴레이션 R과 S의 차집합 R-S는 R에는 속하지만 S에는 속하지 않은 튜플들로 이루어진 릴레이션이다.

s   카테시언 곱(Cartesian product)

s   실렉션이나 프로젝션을 사용하여 한 릴레이션으로부터 정보를 검색할 수 있지만, 한 릴레이션의 튜플들을 다른 릴레이션의 튜플들과 연관시키기 위해서 흔히 두 릴레이션의 튜플들을 결합할 필요가 있다.

s   집합 R 과 집합 S을 곱한 집합이고 R×S로 표시한다.

s   동일한 애트리뷰트가 구 릴레이션에 포함되어 있을 수 있기 때문에 결과 릴레이션에서 이런 애트리뷰트들을 구분하기 위해서 애트리뷰트 이름 앞에 릴레이션 이름을 붙인다.

-      예를 들어 집합 R={1,2,3,4}이 있고 집합 S = {3,4,5,6} 이 있을 때

합집합

R∪S

= {1,2,3,4,5,6}

교집합

R∩S

= {3,4}

차집합

R-S

= {1,2,3}

곱집합

R×S

= {(1,3),(1,4),(1,5),(1,6),(2,3),(2,4),(2,5),(2,6),

(3,3),(3,4),(3,5),(3,6),(4,3),(4,4) ,(4,5),(4,6)}

1.2.1.4      조인(Join) 연산자

-      두 개 이상의 테이블을 연결하여 데이터를 검색할 때 사용한다.

-      데이터베이스 시스템과 그 환경의 성능을 확인하는데도 사용할 수 있다.

-      조인에는 여러 가지 종류가 있다.

조인 종류

설 명

내부조인

(INNER JOIN)

조건을 사용해서 두 테이블의 레코드를 결합한다.

외부조인

(OUTER JOIN)

내부조인과 비슷한데 일치하지 않는 열까지 반환하며 그 열은 NULL로 반환한다.

동등 조인

(EQUI JOIN)

내부조인이다. 두 테이블 사이의 같은 행들을 반환한다.

비동등 조인

(NON-EQUI JOIN)

 내부조인이다. 두 테이블 사이의 같지 않은 행들을 반환한다.

자연 조인

(NATURAL JOIN)

'ON' 절이 없는 내부조인. 같은 열 이름을 가진 두 테이블을 조인할 때만 작동

크로스 조인

(CROSS JOIN)

한 테이블의 모든 행과 다른 테이블의 모든 행이 연결되는 모든 경우를 반환.

카티젼 조인

(CARTESIAN JOIN)

크로스 조인의 한 종류. 조건이 없다. (크로스 프로덕트)

콤마 조인

(COMMA JOIN)

콤마가 CROSS JOIN 키워드 대신 사용된다는 점을 제외하면 크로스 조인과 같다.

셀프 조인

(SELF JOIN)

자기 자신을 조인한다.

1.2.1.5      디비전(Division) 연산자

-      Division은 한 릴레이션에서 다른 릴레이션의 애트리뷰트를 제외한 속성만 선택하는 것이다.

1.2.2     추가된 연산자

-      관계 대수의 표현력을 높이기 위해서 몇 가지 새로운 연산자들이 도입되었다.

1.2.2.1      집단 함수

-      SUM(총합), AVG(평균), MAX(최대), MIN(최소), COUNT(수량)

1.2.2.2      그룹화

-      릴레이션은 그룹화 애트리뷰트들의 값에 의해서 분할되고, 각 그룹에 속하는 튜플들에 대해서 집단 함수를 적용할 수 있다.

1.2.2.3      외부조인

-      상대 릴레이션에서 대응되는 튜플을 갖지 못하는 튜플이나 조인 애트리뷰트에 널 값이 들어 있는 튜플들을 다루기 위해서 조인 연산을 확장한 것이다.

-      외부 조인은 두 릴레이션에서 대응되는 튜플들을 겹합하면서, 대응되는 튜플을 갖지 않는 튜플과 조인 애트리뷰트에 널 값을 갖는 튜플도 결과에 포함시킨다.

-      외부 조인에는 왼쪽 외부 조인(Left Outer Join), dhfmsWhr 외부 조인(Right Outer Join), 완전 외부 조인(Full Outer Join)와 같이 세 가지 종류가 있다.

1.2.3     관계 대수의 한계

-      관계 대수 연산자는 한 개 이상의 릴레이션을 입력으로 받아 새로운 결과 릴레이션을 한 개 생성하지만 몇 가지 제한을 갖고 있다.

-      따라서 관계 DBMS의 표준 데이터베이스 질의어인 SQL은 이런 제한을 모두 만족한다.

s   관계 대수는 산술 연산을 할 수 없다.

s   집단 함수[2]를 지원하지 않는다.

s   정렬을 나타낼 수 없다. 예를 들어, 릴레이션의 모든 튜플들을 오름차순으로 정렬하라고 표현할 수 없다.

s   데이터베이스를 수정할 수 없다.

1.3    내장 SQL (Embeedded SQL)

-      C/C++, 코볼, 포트란, 파스칼, 에이다, 자바(SQLJ) 같은 절차적 프로그래밍에 RDBMS를 조작하기 위한 SQL을 통합한 기법이다.

-      MySQL은 지원하지 않는다.

 


[1] Selection Condition: 프레티키트(Predicate)라고도 . 릴레이션의 애트리뷰트들에 대하여 명시된 Boolean Expression.

[2] Aggregate Function: 값들의 집합을 입력으로 받아 단일 값을 구하는 함수를 말한다. (ex: SUM, AVG, COUNT, MAX, MIN)

반응형

'와사비크래커 IT Tip > DB' 카테고리의 다른 글

[DB] MySQL  (0) 2020.08.25
[DB] SQL (Structured Query Language)  (0) 2020.08.24
[DB] RDBMS  (0) 2020.08.21
[DB] Data Model  (0) 2020.08.21
[DB] DBMS (Database Management System)  (0) 2020.08.20