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