슬라이드 제목 없음

Download Report

Transcript 슬라이드 제목 없음

데이터베이스
제 4 장 관계 데이터 연산
1. 개요
2. 관계 대수
3. 관계 해석
1
데이터베이스
1. 개 요

관계 데이터 연산 : 1970년 E. F. Codd 가 발표한 관계 데이터 모델에 포함된
연산 방법.
- 관계 대수 : 관계 데이터베이스의 릴레이션을 조작하기 위하여 절차를
명시하는 절차 언어 (procedural language ).
- 관계 해석 : 릴레이션에 저장된 어떤 데이터를 조작할 것인지를 명시하는
비절차 언어(nonprocedural language).
2
데이터베이스
관계 데이터 연산
관계 데이터 연산
관계 대수
(Relational Algebra)
• 절차 언어
(Procedural language)
• 어떻게(How)의 관점
일반 집합 연산자
순수 관계 연산자
관계 해석
(Relational Calculus)
• 비절차 언어
(Nonprocedural language)
• 무엇(What)의 관점
• 사용자 입장의 편의성 증대
투플 관계 해석
도메인 관계 해석
(Tuple Relational Calculus)
(Domain Relational Calculus)
3
데이터베이스
예제 릴레이션
학과(DEPARTMENT)
학과코드
DEPT_NO
학과명
DEPT_NAME
학과장
CHIEF
조교
ASSISTANT
전화
DEPT_TEL
위치
LOCATION
001
002
003
:
컴퓨터공학과
정보과학과
정보통신학과
0001
0015
0022
이지은
김영미
박순애
3333
3334
3335
T101
T201
T301
교수(PROFESSOR)
교수번호
이름
P_NO
P_NAME
0001
0002
0003
:
직급
GRADE
연구실
ROOM_NO
전화
P_TEL
주소
P_ADDRESS
생년월일
P_BIRTH
교 수
교 수
부교수
T102
T103
T302
4444
4445
4555
서울…
서울…
서울…
19520401
19540605
19610105
김수철
이기문
박동진
입사일
호봉
JOIN_DATE PAY_STEP
00880301
00890901
00910301
4444
4445
4555
강좌(COURSE)
강좌번호
C_NO
0001
0002
0003
0004
:
강좌이름
C_NAME
시수
TIMES
학점
POINT
필수/선택
R/O
3
3
3
3
3
3
3
3
R
R
R
O
정보사회와 컴퓨터
데이터베이스
네트워크
C언어
학생(STUDENT)
학번
S_NO
9911001
9912002
9911003
9813009
9811015
:
이름
S_NAME
정찬우
김정길
강재우
이수자
이길녀
학과
DEPT
학년
YEAR
컴퓨터공학과
정보과학과
컴퓨터공학과
정보통신학과
컴퓨터공학과
2
2
2
3
3
전화
S_TEL
023355519
03463355411
0325491115
0428601144
023386634
주소
지도교수
S_ADDRESS ADVISOR
서울…
경기도…
인천…
대전…
서울…
0001
0015
0002
0022
0003
생년월일
S_BIRTH
19800505
19801215
19801119
19791205
19791130
강의(LECTURE)
강좌번호
C_NO
교수번호
P_NO
요일
DAY_WEEK
시간
TIME
강의실
ROOM_NO
0001
0001
0002
0002
:
0001
0002
0005
0005
mon
tue
wed
thu
1
5
1
1
T447
T448
T337
T337
등록(ENROLLMENT)
강좌번호
C_NO
학번
S_NO
성적
GRADE
0001
0001
0002
0002
:
9911001
9912002
9813009
9811015
A
B
A
C
4
데이터베이스
관계 대수

절차 언어인 관계 대수는 각각 4가지씩의 일반 집합(set-theoretic) 연산자와
순수 관계(native relational) 연산자로 구성된다
- 일반집합 연산자 : 관계 데이터베이스의 릴레이션 내의 투플들의 집합을
이용.
- 순수 관계 연산자 : 투플들의 구조를 이용.
5
데이터베이스
관계 대수 연산자
6
데이터베이스
관계 대수 연산자의 우선 순위
7
데이터베이스
2. 1 일반 집합 연산

관계 대수의 일반 집합 연산자는 합집합(UNION), 차집합(DIFFERENCE),
교집합(INTERSECTION), 카티션 프로덕트(CARTESIAN PRODUCT) 등이
다.

이 중에서 카티션 프로덕트를 제외한 나머지 3가지 연산자는 모두 피연산자
인 두 개의 릴레이션이 모두 합병 가능(union-compatible)해야한다.
8
데이터베이스
2. 1. 1 합집합

합집합(UNION) 연산은 합병 가능한 두 개의 릴레이션 A와 B의 합집합(A∪B)을 구
하는 것으로, 합집합 연산의 결과는 릴레이션 A 또는 B에 속하는 투플들로 구성된 릴
레이션이다. .
합집합(UNION) 연산자의 개념
A
B
A∪B
예제 1
예제 릴레이션 A와 B의 합집합(A∪B) 연산의 결과는 다음과 같다.
A
a
b
a1 b1
a1 b2
a2 b3
B
a
b
a1
a2
a2
a3
b1
b1
b3
b3
A∪B
a
b
a1
a1
a2
a2
a3
b1
b2
b1
b3
b3
9
데이터베이스
2. 1. 2 교집합
교집합(INTERSECTION) 연산은 합병 가능한 두 개의 릴레이션 A와 B의 교집합

(A∩B)을 구하는 것으로, 교집합 연산의 결과는 릴레이션 A와 B에 공통적으로 속하는
투플들로 구성된 릴레이션이다.
A
B
A∩ B
예제 2
예제 릴레이션 A와 B의 교집합(A∩B) 연산의 결과는 다음과 같다.
A
a
b
a1 b1
a1 b2
a2 b3
B
a
b
a1
a2
a2
a3
b1
b1
b3
b3
A∩B
a
b
a1 b1
a2 b3
10
데이터베이스
2. 1. 3 교집합

차집합(DIFFERENCE) 연산은 합병 가능한 두 개의 릴레이션 A와 B의 차집합(A B)
을 구하는 것으로, 차집합(A B) 연산의 결과는 릴레이션 A에만 있고 B에는 없는 투플
들로 구성된 릴레이션이다.
차집합(DIFFERENCE)연산의 개념
A
A- B
B
예제 3
예제 릴레이션 A와 B의 두 가지 차집합(A B와 B A) 연산의 결과는 다음과 같다.
A
B
A-B
B-A
a
b
a
b
a
b
a
b
a1
a1
a2
b1
b2
b3
a1
a2
a2
a3
b1
b1
b3
b3
a1
b2
a2
a3
b1
b3
11
데이터베이스
2. 1. 4 카디션 프로덕트

카티션 프로덕트(CARTESIAN PRODUCT) 연산은 두 개의 릴레이션 A와 B의 카티
션 프로덕트(A B)를 구하는 것으로, 카티션 프로덕트의 연산 결과는 A에 속한 각 투
플 a에 대하여 B에 속한 투플 b를 모두 접속(concatenation : )시킨 투플들(a b)로
구성된 릴레이션이다.
카티션 프로덕트(CARTESIAN PRODUCT) 연산의 개념
A
B
AXB
a1
b1
a2
b2
a1 b1
a1 b2
a2 b1
a2 b2
12
데이터베이스
2. 1. 4 카디션 프로덕트
예제 4
예제 릴레이션 A와 B의 카티션 프로덕트(CARTESIAN PRODUCT) 연산의 결과는
다음과 같다.
A
a
b
a1 b1
a1 b2
a2 b3
B
b
c
b1
b2
b2
b3
c1
c1
c3
c3
AXB
A.a A.b B.b B.c
a1
a1
a1
a1
a1
a1
a1
a1
a2
a2
a2
a2
b1
b1
b1
b1
b2
b2
b2
b2
b3
b3
b3
b3
b1
b2
b2
b3
b1
b2
b2
b3
b1
b2
b2
b3
c1
c1
c3
c3
c1
c1
c3
c3
c1
c1
c3
c3
13
데이터베이스
2. 2 순수 관계 연산

관계 대수의 순수 관계 연산자는 셀렉트(SELECT), 프로젝트(PROJECT), 조인
(JOIN), 디비전(DIVISION) 등이다

2. 2. 1 셀렉트
- 셀렉트(SELECT) 연산은 릴레이션에서 주어진 조건을 만족하는 투플들을 검색하는
것으로, 기호는 그리스 문자의 시그마(σ)를 이용한다.
셀렉트 연산 표기법
① σ조건식(릴레이션)
② 릴레이션 where 조건식
셀렉트 (SELECT) 연산의 개념
릴레이션
셀렉트 연산의
결과 릴레이션
조건식
14
데이터베이스
2. 2 순수 관계 연산
예제 5
학생(STUDENT) 릴레이션에서 학과(dept) 속성 값이 ƒ컴퓨터공학과„인
투플들을 검색하라.
① 관계 대수 1 : σdept='컴퓨터공학과ƒ(STUDENT)
② 관계 대수 2 : STUDENT where dept='컴퓨터공학과ƒ
③ 결과 릴레이션 :
학번
s_no
이름
s_name
학과
dept
학년
year
9911001
9911003
9811015
:
정찬우
강재우
이길녀
컴퓨터공학과
컴퓨터공학과
컴퓨터공학과
2
2
3
전화
s_tel
023355519
0325491115
023386634
주소
s_address
서울…
인천…
서울…
지도교수
advisor
생년월일
s_birth
0001
0002
0003
19800505
19801119
19791130
15
데이터베이스
2. 2 순수 관계 연산
예제 6
등록(ENROLLMENT) 릴레이션에서 강좌번호(c_no) 속성 값이 ƒ0001„인 투플들을
검색하라.
① 관계 대수 1 : σc_no='0001ƒ(ENROLLMENT)
② 관계 대수 2 : ENROLLMENT where c_no='0001ƒ
③ 결과 릴레이션 :
강좌번호
c_no
학번
s_no
성적
grade
0001
0001
:
9911001
9912002
A
B
16
데이터베이스
2. 2. 2 프로젝트

프로젝트(PROJECT) 연산은 릴레이션에서 주어진 조건을 만족하는 속성들을 검색하
는 것으로, 기호는 그리스 문자의 파이(π)를 이용한다. 릴레이션에서 속성은 열
(column)을 가리키므로 프로젝트를 수직적 연산(vertical operation)이라고도 한다.
프로젝트 연산 표기법
① π속성리스트(릴레이션)
② 릴레이션[속성리스트]
프로젝트(PROJECT) 연산 개념
프로젝트 연산의
결과 릴레이션
릴레이션
프로젝션
17
데이터베이스
2. 2. 2 프로젝트
예제 7
학과(DEPARTMENT) 릴레이션에서 학과코드(dept_no), 학과명(dept_name),
위치(location) 속성 값을 검색하라.
① 관계 대수 1 : πdept_no, dept_name, location(DEPARTMENT)
② 관계 대수 2 : DEPARTMENT[dept_no, dept_name, location]
③ 결과 릴레이션 :
학과코드
dept_no
학과명
dept_name
위치
location
001
002
003
:
컴퓨터공학과
정보과학과
정보통신학과
T101
T201
T301
18
데이터베이스
2. 2. 2 프로젝트
예제 8
강좌(COURSE) 릴레이션에서 강좌번호(c_no)와 강좌이름(c_name) 속성 값을
검색하라.
① 관계 대수 1 : πc_no, c_name(COURSE)
② 관계 대수 2 : COURSE[c_no, c_name]
③ 결과 릴레이션 :
학과코드
dept_no
학과명
dept_name
위치
location
001
002
003
:
컴퓨터공학과
정보과학과
정보통신학과
T101
T201
T301
19
데이터베이스
2. 2. 3 조인

조인(JOIN) 연산은 두 개의 릴레이션 A와 B에서 공통된 속성을 연결하는 것이다. 이
와 같은 조인 연산은 하나의 릴레이션으로는 원하는 결과를 얻을 수 없을 경우, 두 개
이상의 릴레이션을 공통 속성으로 연결하여 원하는 결과를 포함한 릴레이션을 생성
할 때 이용한다.
조인(JOIN) 연산 개념
조인 속성
A
B
A
B
a
b
b
c
a
b
c
a1
a2
a3
a4
b1
b2
b3
b4
b1
b1
b2
b2
c1
c2
c3
c4
a1
a1
a2
a2
b1
b1
b2
b2
b1
c2
c3
c4
A와 B의 공통 속성 값 :
b1, b2
20
데이터베이스
2. 2. 3 조인
예제 9
강좌(COURSE) 릴레이션과 강의(LECTURE) 릴레이션을 조인하라.
① 관계 대수 : COURSE
LECTURE
② 결과 릴레이션 :
강좌번호
c_no
0001
0001
0002
0002
:
강좌이름
c_name
정보사회와 컴퓨터
정보사회와 컴퓨터
데이터베이스
데이터베이스
시수
times
학점
point
필수/선택
r/o
교수번호
p_no
요일
day_week
시간
time
강의실
room_no
3
3
3
3
3
3
3
3
R
R
R
R
0001
0002
0005
0005
mon
tue
wed
thu
1
5
1
1
T447
T448
T337
T337
21
데이터베이스
2. 2. 3 조인
강좌번호
c_no
0001
0001
0002
0002
:
강좌이름
c_name
정보사회와 컴퓨터
정보사회와 컴퓨터
데이터베이스
데이터베이스
교수번호
p_no
요일
day_week
0001
0002
0005
0005
mon
tue
wed
thu
22
데이터베이스
2. 2. 3 조인
강좌번호
c_no
0001
0001
:
강좌이름
c_name
정보사회와 컴퓨터
정보사회와 컴퓨터
교수번호
p_no
요일
day_week
0001
0002
mon
tue
23
데이터베이스
2. 2. 4 디비전

두 개의 릴레이션 A와 B에 대한 디비전(DIVISION) 연산인 A ÷ B의 결과는 다음과
같다. 나누어지는 릴레이션인 A는 릴레이션 B의 모든 내용을 포함한 것이 결과 릴레
이션이 된다
디비전(DIVISION) 연산 개념
A
B
A÷B
a
b
b
a
a1
b1
b1
a1
a2
b2
b2
a2
a3
b4
a5
a4
b4
a7
a5
b2
a6
b3
a7
b2
A에 꼭 포함되어야 할 B의 공통 속성 값 :
b1, b2
24
데이터베이스
2. 2. 4 디비전
예제 12
다음과 같은 예제 릴레이션에서, 교수(PROFESSOR) 릴레이션을
교수번호(PROF_NO) 릴레이션으로 디비전(DIVISION) 연산을 수행하라.
① 관계 대수 : PROFESSOR ÷ PROF_NO
② 결과 릴레이션 :
교수(PROFESSOR)
교수번호(PROF_NO)
PROFESSOR ÷ PROF_NO
교수번호
이름
p_no
p_name
교수번호
p_no
이름
p_name
0001
0003
0005
0007
0010
:
김수철
박동진
이수정
이재호
박주환
:
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
:
김수철
이기문
박동진
정창진
이수정
홍명희
이재호
주용석
나동섭
박주환
25
데이터베이스
2. 3 확장 관계 대수 연산

2.2절에서 설명한 관계 대수 연산을 확장한 연산들이 있다. 그 중 대표적인 것들은 조
인 연산에 관련된 것으로, 외부 조인(OUTER JOIN), 세미 조인(SEMI JOIN), 세타 조
인(THETA JOIN) 등으로 분류할 수 있다.
확장 관계 대수 연산 요약
26
데이터베이스
2. 3. 1 외부 조인

외부 조인(OUTER JOIN)은 두 개의 릴레이션을 공통 속성을 이용하여 연결할 경우,
공통되는 속성 값이 없어 연결이 이루어지지 않는 투플들 까지도 결과 릴레이션에 포
함시키는 것이다. 이 때, 공통 속성 값이 없는 부분은 null 값으로 채워진다.
예제 13
강좌(COURSE) 릴레이션과 강의(LECTURE) 릴레이션을 외부 조인하라
(<예제 7.1>의 내용을 외부 조인으로 수행).
① 관계 대수 : COURSE
LECTURE
② 결과 릴레이션 :
강좌번호
c_no
0001
0001
0002
0002
0003
0004
:
강좌이름
c_name
정보사회와 컴퓨터
정보사회와 컴퓨터
데이터베이스
데이터베이스
네트워크
C언어
시수
times
학점
point
필수/선택
r/o
교수번호
p_no
요일
day_week
시간
time
강의실
room_no
3
3
3
3
3
3
3
3
3
3
3
3
R
R
R
R
R
O
0001
0002
0005
0005
null
null
mon
tue
wed
thu
null
null
1
5
1
1
null
null
T447
T448
T337
T337
null
null
27
데이터베이스
2. 3. 2 세미 조인

세미 조인(SEMI JOIN)은 조인 대상 릴레이션 중 하나를 프로젝트(PROJECT) 연산
을 수행한 후 조인을 하는 것이다.
세미 조인 표기 방법
릴레이션 A와 B를 세미 조인하는 경우 A
B로 표기한다.
2. 3. 3 세타 조인

세타 조인(THETA JOIN)은 다양한 조인 조건을 세타 연산자(비교 연산자)를 이용하여
표현할 수 있는 것이다..
세타 조인 표기 방법
릴레이션 A의 속성 a와 릴레이션 B의 속성 b를 연산자 조건으로 세타 조인하는
경우
로 표기한다.
28
데이터베이스
3 . 관계 해석

비절차 언어인 관계 해석(relational calculus)은 데이터베이스를 이용하여 얻고자 하
는 결과가 무엇(What)인가를 기술하는 것으로, 어떻게(How)를 기술하는 관계 대수와
차이가 있다.
- 투플 관계 해석 (tuple relation calculus)
- 도메인 관계 해석 (domain relational calculus)
29