반응형
-
관계 대수(Relational Algebra)
-
관계 대수의 개념
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어
- 릴레이션 조작을 위한 연산의 집합으로 연산지를 이용하여 표현(절차적 언어)
-
관계 대수는 8개의 연산자들로 구성
- 관계 연산자 : SELECT, PROJECT, JOIN, DIVISION
- 잡합 연산자 : UNION, INTERSECTION, DIFFERENCE, CARTESIAN PRODUCT
-
특성에 따른 연산자 구분
- 기본 연산자 : SELECT, PROJECT, UNION, DIFFERENCE, CARTESIAN PRODUCT
- 파생 연산자 : INTERSECTION, JOIN, DIVISION
- 관계 연산자 : 특수 연산자
예제 테이블 : 학생
-
학번 | 이름 | 학년 | 전공 | 점수 |
01 | 오태훈 | 3 | 컴퓨터 | 80 |
02 | 이재현 | 2 | 전자 | 85 |
03 | 노병두 | 1 | 수학 | 70 |
04 | 이영덕 | 4 | 전기 | 79 |
-
SELECT(σ)
- 릴레이션에 존재하는 튜플들 중에서 특정 조건을 만족하는 튜플들의 부분 집합을 구하여 새로운 릴레이션을 생성
-
릴레이션에서 행에 해당하는 조건을 만족하는 튜플을 구하는 것이므로, 수평 연산이라고도 함.
표기형식 : - 예) '학생' 릴레이션에서 점수 속성의 값이 80점 이상인 튜플을 SELECT :
-
PROJECT(π)
- 주어진 릴레이션에서 속성 리스트에 제시된 속성값만을 추출하여 새로운 릴레이션을 생성
-
릴레이션에서 열에 해당하는 속성을 추출하는 것이므로, 수직 연산이라고도 함
표기형식: - 예) '학생'릴레이션에서 이름과 전공 속성을 PROJECT :
-
JOIN(⋈)
-
공통 속성을 중심으로 두 릴레이션을 하나로 합쳐서 새로운 릴레이션을 생성표기형식 : 릴레이션1 ⋈ 릴레이션2
- 예) '학생' 릴레이션과 '성적' 릴레이션에서 학번이 같은 속성을 JOIN : 학생⋈성적
-
조인의 종류
- 동등 조인(Equi Join) : 릴레이션의 공통 속성을 기준으로 같은 값을 가지는 행을 조인
- 자연 조인(Natural Join) : 동등 조인 결과에서 중복되는 속성을 제거
- 외부 조인(Outer Join) : 조인 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 조인
- 세미 조인(Semi Join) : 분산 데이터베이스 환경에서 두 릴레이션 간의 조인 시 한 릴레이션을 다른 사이트에 전송하기 전에 먼저 조인 속성만을 추출하는 프로젝션을 실시하여 전송한 후 , 다른 사이트에서 조인에 성공한 튜플만을 전송 받아 다시 조인을 수행함으로써, 네트워크를 통해 전송되는 데이터의 양을 줄이고자 하는 개념을 도입
-
-
DIVISION(÷)
-
2개의 릴레이션의 관계에서 한 릴레이션의 모든 튜플들과 관계를 갖는 특정 속성값들을 검색표기형식 : 릴레이션1÷릴레이션2
- 공급(회사명,부품번호,수량)
- 부품(부품번호, 부품명,색상,용량)
- 예) 모든 부품들을 다 공급하는 회사명을 구하여라 : 공급[회사명,부품번호]÷부품[부품번호]
-
집합 연산자 | 연산 집합 |
UNION(U) |
|
INTERSECTION(∩) |
|
DIFFERENCE(-) |
|
CARTESIAN PRODUCT(X) |
|
-
관계 대수 연산자의 특징 및 고려 사항
-
닫힘 특성(Closure Property)관계 대수의 연산자의 결과는 항상 릴레이션의 형태가 보장
-
비관계(Non-Relational) 대수
- 그룹 함수(Aggregate Function) : COUNT, SUM, AVG, MAX, MIN 등
-
관계 대수는 재귀적 질의(Recursive Query)를 지원하지 못함예) 사원 테이블을 조인하여 사장 밑에 속한 모든 사원의 계층을 구하라.
-
- 연산자들의 종류와 기호
종류 | 연산자 | 기호 | 비고 |
순수관계 연산 | 셀렉트(select) | σ | 기본연산 |
프로젝트(project) | Π | 기본연산 | |
조인(join) | ⋈ | 복합연산 | |
디비전(division) | ÷ | 복합연산 | |
집합 연산 | 합집합(union) | ∪ | 기본연산 |
교집합(intersect) | ∩ | 복합연산 | |
차집합(difference) | − | 기본연산 | |
카티션프로덕트(cartesian product) | x | 기본연산 | |
확장관계 연산 | 세미조인(semi join) | ⋉ | 복합연산 |
외부조인(outer join) | ⋈+ | 복합연산 |
-
관계 해석(Relational Calculus)
-
관계 해석의 개념
- 원하는 릴레이션을 정의하는 방법을 제공(비절차적 언어)
- { 결과 | 조건 } : 조건을 만족하는 결과를 나타냄
- 튜플 관계 해석과 도메인 관계 해석이 존재
-
튜플 관계 해석{ t | P(t) } : 술어 P가 참인 모든 튜플 t들의 집합을 나타냄 { t | t ∈ 학생 ∧ t[점수] > 90 }
- 예) 학생(학번,이름,점수) 테이블에서 성적이 90점보다 큰 학생은 ?
-
도메인 관계 해석{<x1,x2,…, xn> | P(x1, x2, .. , xn) : xi(1 ≤ i ≤ n}는 도메인 변수를 나타냄 { <학번,이름,점수> | <학번,이름,점수> ∈ 학생 ∧ 점수 > 90 }
- 예) 학생(학번,이름,점수) 테이블에서 성적이 90점 보다 큰 학생은 ?
-
관계 해석의 특징
- 비절차적(Non-procedural) 또는 선언적(Declarative) 언어 : 검색 연산의 과정을 명시할 필요 없음.
- 술어 놀리(Predicate Logic)에 기반을 둠
- 튜플 해석과 도메인 해석 2가지 모두가 관계 대수와 동등한 검색 표현 능력(Retrieval Expressive Power)을 보유
-
반응형
'밥벌이 > 데이터베이스' 카테고리의 다른 글
저장 프로시저(Stored Procedure) (0) | 2010.09.10 |
---|---|
관계형 데이터 구조의 이해 (0) | 2010.09.03 |
SQL(Structured Query Language) (0) | 2010.09.03 |
시스템 카탈로그(System Catalog) / 데이터 사전(Data Dictionary) (0) | 2010.09.03 |
개체-관계 모델(ER 모델) (0) | 2010.08.26 |