제1항 관계데이터언어(관계대수관계해석)

관계 데이터베이스의 릴레이션을 조작하기 위한 기본연산에는 관계대수(relational algebra)와 관계해석(relational calculus)이 있다이 연산은 사용자의 입장에서 볼 때 데이터를 처리하는 데이터 언어가 되며 관계대수는 절차적 언어이며 관계해석은 비절차적 언어이다.

 

(1) 관계대수(relational algebra)

1) 대수

① 수 대신 문자를 사용해서 문제를 쉽게 하고수학적인 법칙을 간단하고 명확하게 표현하는 것

 

2) 관계대수 정의

① 관계대수는 E.F. Codd가 관계 데이터 모델을 처음 제안할 때 정의

② 관계 대수(relational algebra)는 관계 해석(relational calculus)과 함께 관계 데이터 모델에서 릴레이션을 처리하기 위한 정형적인 데이터 언어이다이 관계 대수는 원하는 데이터를 얻기 위해서 어떻게(how) 질의를 수행할 것인지 일련의 연산을 순서대로 명시해야 하는 절차적 언어이다.

③ 데이터베이스에 저장된 데이터를 문자와 연산을 통해 요청한 데이터를 정보화하여 얻을 수 있는데 그 원리가 산술 연산자와 유사

④ 관계 데이터베이스의 관계(relation), 즉 테이블을 조작하는 언어

⑤ 하나 또는 그 이상의 테이블을 피연산자로 하여 결과로 하나의 테이블을 만들어내는 연산을 말한다.

⑥ 관계대수는 질의에 대한 결과를 생성하기 위해 수행해야 할 연산의 순서를 명시하는 절차적 언어이다.

⑦ 연산자의 종류




 

3) 순수 관계 연산자

① 디비전(division)

ü 나누어지는 릴레이션인 A는 릴레이션 B의 모든 튜플에 연관되어 있는 A의 튜플을 선택한다.

ü XY인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구함

ü R[속성r ÷ 속성s]S

 

 

② 프로젝트(project, P)

ü 릴레이션에서 주어진 조건에 만족하는 속성(attribute)만을 검색하는 연산

ü 형식 P속성리스트(R)

ü 릴레이션의 열(세로)에 해당하는 속성들을 추출하는 연산자로써 수직 연산을 수행

 


 

 

③ 조인(join, )

ü 릴레이션에서 조건에 만족하는 레코드를 분리해 내는 연산을 의미하는 것으로 하나의 릴레이션에서 수평적인 부분 집합을 취하는 것이다.

ü 두개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자

 

 

ü 공통 속성을 중심으로 두개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듦

• Natural join(자연 조인)

동등 조인의 결과 릴레이션에서 조인 속성을 한 개 제외한 조인

여러가지 조인 연산자들 중에서 가장 자주 사용됨

• Equi join(동등 조인)

동등 조인의 결과 릴레이션에서 조인 속성을 모두 나타낸다.

ü 학생[학번학번]성적

 

 

  

④ 셀렉트(selection, σ)

ü 릴레이션에서 주어진 조건을 만족하는 튜플들을 선택하는 연산자

ü σ조건(R)

ü 튜플 단위로 조건에 만족하는 튜플들을 가져오는 수평 연산을 수행

ü 학생 릴레이션에 대한 셀렉션 연산


 


4) 일반 집합연산자

① 집합 연산자

ü 릴레이션이 튜플들의 집합이기 때문에 기존의 집합 연산이 릴레이션에 적용

ü 집합 연산자의 입력으로 사용되는 두개의 릴레이션은 합집합 호환(union compatible)이어야 함

 

② 합집합(union)

ü 합병 가능한 두 릴레이션 또는 B에 속하는 튜플들로 구성된 릴레이션이다.

ü 두 릴레이션 R과 S의 합집합 RS R 또는 S에 있거나 R S 모두에 속한 튜플들로 이루어진 릴레이션

ü 결과 릴레이션에서 중복된 튜플들은 제외됨


 

③ 교집합(intersection)

ü 합병 가능한 두 릴레이션 A와 B에 공통적으로 속하는 튜플들로 구성된 릴레이션이다.

ü 두 릴레이션 R과 S의 교집합 RS R S 무두에 속한 튜플들로 이루어진 릴레이션


 

④ 차집합(difference)

ü 합병 가능한 두 릴레이션 A에만 있고 B에는 없는 튜플들로 구성된 릴레이션이다.

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


 

⑤ 카티션 곱(cartesian product)

ü A에 속한 각 튜플 a에 대하여 B에 속한 튜플 b를 모두 접속시킨 튜플들(a, b)로 구성된 릴레이션이다.


 

5) 관계 대수의 한계

① 관계 대수는 산술 연산을 할 수 없음

② 집단 함수(aggregate function)를 지원하지 않음

③ 정렬을 나타낼 수 없음

④ 데이터베이스를 수정할 수 없음

⑤ 프로젝션 연산의 결과에 중복된 튜플을 나타내는 것이 필요할 때가 있는데 이를 명시하지 못함.

 

6) 추가된 관계 대수 연산자

① 집단함수(aggregate function)

ü 모든 사원들의 급여 평균은 얼마인가?

 

② 그룹화

ü 각 부서별 사원들의 급여 평균은 얼마인가?

 

③ 외부조인

ü 상대 릴레이션에서 대응되는 튜플을 갖지 못하는 튜플이나 조인 속성에 널값이 들어 있는 튜플들을 다루기 위해서 조인 연산을 확장한 조인

ü 두 릴레이션에서 대응되는 튜플들을 결합하면서대응되는 튜플을 갖지 않는 튜플과 조인 애트리뷰트에 널값을 갖는 튜플도 결과에 포함시킴

ü 왼쪽 외부 조인(LEFT OUTER JOIN), 오른쪽 외부 조인(RIGHT OUTER JOIN), 완전 외부 조인(FULL OUTER JOIN)

 

④ 왼쪽 외부조인

ü 릴레이션 R S의 왼쪽 외부 조인 연산은 R의 모든 튜플들을 결과에 포함시키고만일 릴레이션 S에 관련된 튜플이 없으면 결과 릴레이션에서 릴레이션 S의 속성값을 널값으로 채움

 

 

⑤ 오른쪽 외부조인

ü 릴레이션 R S의 오른쪽 외부 조인 연산은 S의 모든 튜플들을 결과에 포함시키고만일 릴레이션 R에 관련된 튜플이 없으면 결과 릴레이션에서 릴레이션 R의 속성값을 널값으로 채움

 

 

⑥ 완전 외부조인

ü 릴레이션 R S의 완전 외부 조인 연산은 R과 S의 모든 튜플들을 결과에 포함시키고만일 상대 릴레이션에 관련된 튜플이 없으면 결과 릴레이션에서 상대 릴레이션의 속성값을 널값으로 채움

 

 

(2) 관계해석(relational calculus)

1) 정의

① 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어

 

2) 관계해석의 특징

① 비절차 언어

② 튜플 관계 해석과 도메인 관계 해석이 있다.

③ 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등함

④ 수학의 predicate calculus에 기반을 두고 있음

⑤ 관계해석으로 질의어를 표현

⑥ 원하는 릴레이션을 정의하는 방법을 제공즉 원하는 정보가 무엇이라는것만 정의하는 비절차적인 언어

⑦ 연산들의 절차(sequence)를 사용하여 데이터를 가져옴

⑧ 기본적인 연산자로 union, intersection, difference를 사용함

⑨ 전체관계를 조작하는데 사용되는 연산들의 집합

'정보처리기사 > 데이터베이스' 카테고리의 다른 글

08. 데이터모델링 및 설계  (0) 2017.08.01
07. SQL(Structure Query Language)  (0) 2017.08.01
05. 관계데이터모델  (0) 2017.08.01
04. 정렬, 탐색기법  (0) 2017.08.01
03. 자료구조(선형, 비선형)  (0) 2017.08.01

+ Recent posts