5. 관계대수와 관계해석 ( Relational Operations: 관계연산)- 9장

Slides:



Advertisements
Similar presentations
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Advertisements

Chapter 02. 데이터 모델링.
4. 관계 데이터베이스 (Relational Database)
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
관계 해석(Relational Calculus)
11. 데이타 종속성과 정규화.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
6장 그룹 함수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS 시제품은.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어 어느것을 기본으로 만들것인가
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
관계 대수.
5장. 관계대수와 관계 해석 관계 대수 릴레이션들을 다루는 연산들의 집합 검색 요구(질의)를 기술하는 데에 사용
08. 데이터 모델링.
관계 데이터 구조.
1. 관계 데이터 언어 관계 대수 1) 관계대수 정의 ① 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 인 방법 ② 주어진 관계로 부터 원하는 관계를 얻기 위해 연산자와 연산 규칙을 제공하는 언어 ③ 릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가.
Chapter 07. 기본 함수 익히기.
01 데이타베이스 개론 데이타베이스의 등장 배경 데이타베이스의 발전 과정 데이타베이스의 정의 데이타베이스의 특징
11장. 1차원 배열.
5. 관계대수와 관계해석 관계자료 연산(operation)
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
제 4 장 관계 데이터 연산 1. 개요 2. 관계 대수 3. 관계 해석.
1.4 중첩된 한정기호 (Nested Quantifiers) 이산수학 (Discrete Mathematics)
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
JA A V W. 03.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
27장. 모듈화 프로그래밍.
Visual Basic .NET MDI 만들기.
4. 관계 데이터베이스 (Relational Database)- 7, 8장
CHAP 5. 레이아웃.
ER-관계 사상에 의한 관계 데이터베이스 설계
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
4. 관계 데이터 모델.
Chapter 03. 관계 데이터베이스 설계.
05. Relational DBMS 명지대학교 ICT 융합대학 김정호.
Database Management System
7장. 릴레이션 정규화 릴레이션 정규화 부주의한 데이터베이스 설계는 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함 어떻게 좋은 데이터베이스 설계를 할 것인가? 데이터베이스에 어떤 릴레이션들을 생성할 것인가? 각 릴레이션에.
06. SQL 명지대학교 ICT 융합대학 김정호.
CHAP 21. 전화, SMS, 주소록.
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
7주차: Functions and Arrays
제 8 장 ER-관계 사상에 의한 관계 데이타베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
데이터베이스 (Database) 관계 대수와 관계 해석 (Part 1) 문양세 강원대학교 IT대학 컴퓨터과학전공.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Numerical Analysis Programming using NRs
이산수학(Discrete Mathematics)  술어와 한정기호 (Predicates and Quantifiers)
7장 테이블 조인하기.
제 4 장 Record.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
Chapter 2: Intro to Relational Model
9장. spss statistics 20의 데이터 변수계산
ER-관계 사상에 의한 관계 데이터베이스 설계
 6장. SQL 쿼리.
1. 데이타베이스의 개념.
관계 대수 Chapter 4, Part A The slides for this text are organized into chapters. This lecture covers relational algebra from Chapter 4. The relational calculus.
4장. 관계 대수와 SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
6 객체.
데이터베이스 설계 데이터의 분석 개체 관계.
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

5. 관계대수와 관계해석 ( Relational Operations: 관계연산)- 9장

 관계 데이터 연산 관계 데이터 언어(relational data language) 연산(operation)과 데이터 언어(data language) 연산(operation) : 시스템 입장 데이터 언어(data language) : 사용자 입장 관계 데이터 언어(relational data language) 정형어(formal language) ⅰ. 관계 대수(relational algebra) 절차 언어 : how, what 대상 ⅱ. 관계 해석(relational calculus) 비 절차 언어 : what ① 투플 관계 해석(tuple relational calculus) ② 도메인 관계 해석 (domain relational calculus) 관계 해석과 관계 대수는 표현과 기능 면에서 동등

 1. 관계 대수(Relational Algebra) 릴레이션을 처리하기 위한 연산의 집합 릴레이션 : ‘투플의 집합’의 관점 기본 연산 (1) 일반 집합 연산자 합집합(UNION, ∪ ) 교집합(INTERSECT, ∩ ) 차집합(DIFFERENCE, - ) 카티션 프로덕트(CARTESIAN PRODUCT, × ) (2) 순수 관계 연산자 실렉트(SELECT, ) 프로젝트(PROJECT, ) 조인(JOIN, ) 디비전(DIVISION, ÷ ) 폐쇄 성질 (closure property) 피연산자와 연산 결과가 모두 릴레이션 중첩(nested)된 수식의 표현이 가능  

▶ 일반 집합 연산자(1) p97 ⅰ. 합집합 (union,∪) ⅱ. 교집합 (intersect,∩) R∪S = { t | t∈R ∨ t∈S } |R∪S| ≤ |R| + |S| ⅱ. 교집합 (intersect,∩) R∩S = { t | t∈R ∧ t∈S } |R∩S| ≤ min{ |R|, |S| } ⅲ. 차집합 (difference,-) R­S = { t | t∈R ∧ t  S } |R­S| ≤ |R| ⅳ. 카티션 프로덕트 (Cartesian product,×) R×S = { r·s | r∈R ∧ s∈S } · : 접속(concatenation) |R×S| = |R|×|S| 차수(degree) = R의 차수 + S의 차수

▶ 일반 집합 연산자(2) Tip 합병가능(union-compatible)한 릴레이션 ∪, ∩, - 연산의 피연산자들은 1. 차수가 같아야 함 2. 대응 애트리뷰트 쌍 별로 도메인이 같아야 함 ∪, ∩, × 연산은 결합적(associative)임 R∪S∪T = (R∪S)∪T = R∪(S∪T) R ∩ S ∩ T = (R ∩ S) ∩ T = R ∩ (S ∩ T) R×S×T = (R×S)×T = R×(S×T) ∪, ∩, × 연산은 교환적(commutative)임 R∪S = S∪R R ∩ S = S ∩R R×S = S×R

▶ 순수 관계 연산자 p99 릴레이션 : R(X) = R(A1, ... , An) R의 투플 r : <a1, ... , an> R={r | r = <a1, ... , an> } ai : 투플 r에 대한 애트리뷰트 Ai의 값 ai = r.Ai = r[Ai] 일반적으로 <r.A1 , r.A2 ,…, r.An > = < r[A1], r[A2], …, r[An] > = r[A1, A2, … An] = r[X]

실렉트 (SELECT: :sigma)(1) p100 A, B가 릴레이션 R의 애트리뷰트일 때, Av(R) = { r | r∈R ∧ r.Aθv } AB(R) = { r | r∈R ∧ r.Aθr.B } 단, θ(theta) : 비교 연산자, { <, >, ≤, ≥, =, ≠ } v : 상수 실렉트()의 결과는 선택 조건을 만족하는 릴레이션의 수평적 부분집합 (horizontal subset) : 레코드 형의 데이터 조건식(predicate)

실렉트 (2) example 데이터 언어 형식의 표현 R WHERE 조건식 학과 = '컴정' (학생) 학번 = 300  과목번호='C312'(등록) 중간성적<기말성적 (등록) 데이터 언어 형식의 표현 R WHERE 조건식 조건2(조건1(R)) = 조건1(조건2(R)) = (조건1  조건2) (R) 선택도(selectivity) : 선택 조건에 의해 검색되는 투플의 비율

학생, 등록 릴레이션에 대한 실렉트 연산(예) σ학과='컴정'(학생) σ학번=300∧과목번호='C312'(등록) 이름 학년 학과 100 300 400 나수영 정기태 송병길 4 1 4 컴정 컴정 컴정 σ학번=300∧과목번호='C312'(등록) 학번 과목번호 성적 중간성적 기말성적 300 C312 A 90 95 σ중간성적<기말성적(등록) 학번 과목번호 성적 중간성적 기말성적 100 300 400 400 400 C413 C312 C312 C413 E412 A A A B C 90 90 90 80 65 95 95 95 85 75

프로젝트 (PROJECT: : pi) p101 릴레이션 R(X)에서 Y⊆X 이고 Y={B1,B2, … ,Bm} 이면, Y(R)={ <r.B1, ... , r.Bm> | r∈R } example 학생(학번,이름,학년,학과)에서 이름,학과(학생) 릴레이션의 수직적 부분집합(vertical subset) : 도메인 형의 데이터 결과에 투플이 중복되는 경우에는 제거 결과도 투플의 집합(릴레이션) – 폐쇄 속성 Y(X(R)) = Y(R)

학생, 과목 릴레이션에 대한 프로젝트 연산(예)  이름,학과(학생) 이름 학과 나수영 이찬수 정기태 송병길 박종화 컴정 전기 컴정 컴정 컴정  과목이름,담당교수(과목) 과목이름 담당교수 프로그래밍 자료구조 파일구조 데이터베이스 반도체 김성국 황수관 이규찬 이일로 홍봉진

조인 (JOIN: )(1) p102 (1) 세타 조인 (theta join) R(X), S(Y), A∈X, B∈Y 에 대하여 R AθB S = { r · s | r∈R ∧ s∈S ∧ ( r.Aθs.B) } A, B : 조인 애트리뷰트(join attribute) 결과 차수 = R의 차수 + S의 차수 결과 릴레이션의 애트리뷰트는 원 소속 릴레이션 이름을 애트리뷰트 앞에 한정어로 붙여 일관성을 유지 예) 학생 학번=학번 등록 -- 이 연산의 결과 릴레이션이 갖는 애트리뷰트는 학생.학번, 학생.이름, 학생.학년, 학생.학과, 등록.과목번호, 등록.성적, 등록.중간성적, 등록.기말성적으로 표현 -- 그러나 상이한 애트리뷰트는 보통 그 이름만 사용

(2) 동일 조인 (equijoin) 세타 조인에서 θ가 "="인 경우 릴레이션 학생과 등록의 동일 조인 예 세타 조인에서 θ가 "="인 경우 R A=BS = { r·s | r∈R ∧ s∈S ∧ ( r.A=s.B ) } 릴레이션 학생과 등록의 동일 조인 예 학생 학번=학번등록 학생.학번 이름 학년 학과 등록.학번 과목번호 성적 중간성적 기말성적 100 100 200 300 300 300 400 400 400 400 500 나수영 나수영 이찬수 정기태 정기태 정기태 송병길 송병길 송병길 송병길 박종화 4 4 3 1 1 1 4 4 4 4 2 컴정 컴정 전기 컴정 컴정 컴정 컴정 컴정 컴정 컴정 산공 C413 E412 C123 C312 C324 C413 C312 C324 C413 E412 C312 A A B A C A A A B C B 90 95 85 90 75 95 90 95 80 65 85 95 95 80 95 75 95 95 90 85 75 80

조인 (2) (3) 자연 조인 (natural join: N) R(X), S(Y)의 조인 애트리뷰트를 Z(=X∩Y)라 하면 R NS = {<r · s>[X∪Y] | r∈R∧s∈S∧r[Z]=s[Z] } = X∪Y(Z=Z(R×S)) = X∪Y(R Z=ZS) -- 즉 동일 조인의 결과에서 중복되는 애트리뷰트를 제거 -- 일반적으로 조인이라 하면 자연 조인을 의미

릴레이션 학생과 등록의 자연 조인(예) 학생 N등록 학번 이름 학년 학과 과목번호 성적 중간성적 기말성적 100 100 200 300 300 300 400 400 400 400 500 나수영 나수영 이찬수 정기태 정기태 정기태 송병길 송병길 송병길 송병길 박종화 4 4 3 1 1 1 4 4 4 4 2 컴정 컴정 전기 컴정 컴정 컴정 컴정 컴정 컴정 컴정 산공 C413 E412 C123 C312 C324 C413 C312 C324 C413 E412 C312 A A B A C A A A B C B 90 95 85 90 75 95 90 95 80 65 85 95 95 80 95 75 95 95 90 85 75 80

디비전 (DIVISION: ÷)(1) p104 릴레이션 R(X), S(Y) 에 대하여 Y X이고 D = X-Y라고 하면 R(X) = R(D,Y) R÷S={ t | t∈ D(R) ∧ t · s∈R for all s∈S } Tip : ((R ÷ S) × S) ⊆ R

디비전(2) example 학과목(SC) 과목1(C1) 과목2(C2) 과목3(C3) 학번 (Sno) 과목번호 (Cno) 100 C413 C413 C312 C312 100 E412 C413 C413 200 C123 E412 300 C312 300 C324 300 C413 SC ÷ C1 SC ÷ C2 SC ÷ C3 400 C312 400 C324 학번 (Sno) 학번 (Sno) 학번 (Sno) 400 C413 400 E412 100 300 400 500 C312 300 400 400

개명 연산 (RENAME: ρ: rho) p105 중간 처리 결과 릴레이션에 이름을 지정하거나 애트리뷰트 이름을 변경할 때 사용 ρS(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 지정 ρS(B1,B2, … ,Bm )(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 지정하고 애트리뷰트 이름은 각각 B1,B2, … ,Bm 으로 지정 ρ(B1,B2, … ,Bm )(R) 릴레이션 R의 애트리뷰트 이름을 각각 B1,B2, … ,Bm 으로 변경

▶ 기본 연산과 복합 연산 p100 기본 연산 (primitive operations) 다른 연산으로 대체할 수 없는 하나의 논리적 기능을 수행하는 연산 ∩ , ­ , ×,  ,  복합 연산 (composite operations) 몇 개의 기본 연산으로 대체할 수 있는 연산 교집합(∩), 조인( ), 디비전(÷) R∩S = R­ (R­S) = S ­ (S­R) = (R∪S) ­ ( (R­S) ∪ (S­R) ) R AθB S = AθB (R×S) R(Z,Y)÷S(Y)= R[Z] - ((R[Z]×S) - R)[Z] 연산력 보다는 표현력을 증대

▶ 관계 대수의 확장(1) p107 ⅰ. 세미 조인 (semijoin: ) R S: S와 자연 조인이 가능한 R의 투플의 집합 R(X), S(Y)의 조인 애트리뷰트를 Z(=X∩Y)라 하면 R S = R N(Z(S)) =  X(R NS) 특징 R S ≠ S R R NS = (R S) NS = (S R) NR  릴레이션 처리에 관련된 데이터의 양이 다름

 자연 조인과 세미 조인 R S X∩Y(S) A B C a1 a2 a3 a4 b1 b2 c1 c2 c3 B C D b1 N R S N N R S A B C D a1 a2 a4 b1 b2 c1 c3 d1 d2 d3 A B C a1 a2 a4 b1 b2 c1 c3 N (세미 조인) (자연 조인)

▶ 관계 대수의 확장(2) ⅱ. 외부 조인 (outerjoin, +) p109 한 릴레이션에 있는 투플이 조인할 상대 릴레이션에 대응되는 투플이 없을 경우, 상대를 널(null) 투플로 만들어 결과 릴레이션에 포함 누락 정보를 처리하기 위한 조인의 확장 두 조인 릴레이션의 투플들이 전부 결과 릴레이션에 포함됨

 자연 조인과 외부 조인 R S A B C a1 a2 a3 a4 b1 b2 c1 c2 c3 B C D b1 b2 b3 c1 + + N R S A B C D a1 a2 a3 a4   b1 b2 b3 c1 c2 c3 d1 d2 d3 R S N A B C D a1 a2 a4 b1 b2 c1 c3 d1 d2 d3 (외부조인) (자연조인)

▶ 관계 대수의 확장(3) ⅲ. 외부 합집합 (outer-union, ∪+) p109 합병 가능하지 않은(not union-compatible) 두 릴레이션의 모든 애트리뷰트를 포함하는 확장된 릴레이션으로 만듦 확장된 릴레이션에 해당하는 애트리뷰트 값이 없을 때는 널 값으로 채움

 외부 합집합 R S A B C a1 a2 a3 a4 b1 b2 c1 c2 c3 B C D b1 b2 c1 c2 d1 d2 ∪+ A B C D a1 a2 a3 a4   b1 b2 c1 c2 c3 d1d2 d3

▶ 관계 대수의 확장(4) ⅳ. 집계(aggregation) 연산 p110 AVG성적(등록) 등록 릴레이션의 성적 애트리뷰트 값들에 대해 평균값 계산 GROUP학년(학생) 학생 릴레이션의 투플들을 학년 값에 따라 그룹을 만듦 GROUP과목번호AVG성적(등록) 등록 릴레이션에서 과목별 그룹에 대한 평균성적 실행 순서는 GROUP, AVG 순서임 일반 형식 : GAFB(E) E : 관계 대수식 F : 집계 함수(SUM, AVG, MAX, MIN, COUNT) B : 집계 함수의 적용 대상 애트리뷰트 G : 그룹 함수 GROUP A : 그룹 함수가 적용할 애트리뷰트

▶ 관계 대수의 질의문 표현(1) p111 사용자의 질의문을 관계 대수식으로 표현 질의 : 모든 학생의 ‘이름’과 ‘학과’를 검색하라. 이름,학과 (학생) 질의 : ‘과목번호’가 C413인 과목에 등록한 학생의 ‘이름’과 ‘성적’은 무엇인가? 이름,성적(과목번호='C413' (학생 N등록)) 질의 : ‘파일구조' 과목을 가르치는 ‘담당교수’를 검색하라. 담당교수(과목이름=‘파일구조'(과목))

▶ 관계 대수의 질의문 표현(2) 질의 : 모든 과목에 수강한 학생의 ‘학번’과 ‘이름’을 검색하라 학번,이름((학번,과목번호(등록) ÷ 과목번호(과목)) N학생) 질의 : ‘학번’이 600, ‘이름’이 '김영호', ‘학년’이 4, ‘학과’가 ‘컴정’인 학생을 삽입하라. 학생∪{<600, '김영호', 4, ‘컴정’>} 질의 : '데이터베이스‘ 과목을 삭제하라. 과목 - (과목이름='데이터베이스'(과목))

 2. 관계 해석 (Relational Calculus) p112 predicate calculus에 기반 Predicate(서술어) : a function whose value is true or false 실행 결과가 반드시 참(true)이나 거짓(false)인 함수 관계 데이터 모델의 연산 표현 방법 비절차적(non-procedural) 원하는 정보가 무엇이라는 것만 선언 ① 투플 관계 해석(tuple relational calculus) ② 도메인 관계 해석(domain relational calculus)

▶ 2.1 투플 관계해석(tuple relational calculus)(1) p112 원하는 릴레이션을 투플 해석 식(tuple calculus expression)으로 정의하는 표기법 투플 해석식의 구성 요소 ⅰ. 투플 변수(tuple variable) 또는 범위 변수(range variable): t 범위식(range formula) : R(t) R : t의 범위 릴레이션(range relation) ⅱ. 한정 애트리뷰트(qualified attribute) : t.A 또는 t[A] 투플 변수 t가 나타내는 투플의 애트리뷰트 A의 값 – STUDENT(s) s.Sno

▶ 투플 관계 해석(2) 투플 해석식의 구성 요소(con’t) ⅲ. 원자식(atomic formula) 범위 식: R(t) t : 투플 변수 R : t의 범위 릴레이션 조건 식: t.A θ u.B A, B : 애트리뷰트 θ : 비교 연산자(=, ≠, <, ≤, >,≥) 조건 식: t.A θ c c: 상수 원자식의 실행 결과는 반드시 참(True) 또는 거짓(False)

▶ 투플 관계 해석(3) 투플 해석식의 구성 요소(con’t) ⅳ. 정형식(WFF, well-formed formula) = ‘weff’ 원자 식, 불리언 연산자(∧,∨, ¬ ), 정량자 (∀,∃)가 다음 규칙에 따라 결합된 식 ① 모든 원자 식은 WFF ② F가 WFF이면, (F)와 F도 WFF ③ F와 G가 WFF이면, F∧G와 F∨G도 WFF ④ 투플 변수 t가 자유변수로 사용된 F(t)가 WFF이면, ∀t(F(t))와 ∃t(F(t))도 WFF ⑤ 위의 규칙만을 적용해서 만들어진 식은 WFF 정형식의 예 s.Sno = 100 c.Cno ≠ e.Cno s.Sno = e.Sno ∧ e.Cno ≠ c.Cno (∃e)(e.Sno = s.Sno ∧ e.Cno = 'C413')

Tip 자유변수(free variable) 속박변수(bound variable) 정량자(quantifier)로 한정되지 않는 투플 변수 ∀ : “for all”, 전칭 정량자(Universal quantifier) ∃ : “there exists”, “for some”, 존재 정량자(Existential quantifier) – 속박변수(bound variable) 정량자(∀t ,∃t )로 한정된 투플 변수 프리닉스 정규형(prenex normal form) 정량자만 앞에 먼저 기술한 WFF 1) (∀t)(F(t))∧(∀t)(H(t)) = (∀t)(F(t)∧H(t)) 2) (∃t)(F(t))∨(∃t)(H(t)) = (∃t)(F(t)∨H(t))

투플 해석식(tuple calculus expression) 투플 해석식의 형식 { t1.A1, t2.A2, …, tn.An|F(t1, … tn, tn+1, …, tn+m) } ti : 투플 변수 F(t1,…, tn, tn+1,…, tn+m): ti가 연관된 정형식으로 조건을 명세 막대 (|) 왼편에 명세된 한정 애트리뷰트들은 목표 리스트 (target list)로서 막대(|) 오른편에 명세된 조건을 만족하는 투플로부터 추출 됨 example {s.Sname|STUDENT(s) } {s.Sname|STUDENT(s)∧s.Dept=‘컴정’ } {s.Sname, s.Dept|STUDENT(s)∧(∃e)(ENROL(e)∧ s.Sno=e.Sno∧e.Grade='A')} ** 목표 리스트에는 자유 변수만 나올 수 있음.

▶ 2.2 투플 해석식의 질의문 표현(1) 질의: 과목 C413에서 성적이 A인 학생의 학번을 모두 검색하라 {e.Sno|ENROL(e) ∧ e.Cno='C413'∧ e.Grade='A' } 질의: 과목 C413을 등록한 학생의 이름과 학과를 모두 검색하라 { s.Sname, s.Dept|STUDENT(s) ∧∃e(ENROL(e) ∧ s.Sno=e.Sno ∧ e.Cno='C413') }

▶ 투플 해석식의 질의문 표현(2) 질의: 모든 과목에 등록한 학생의 이름을 전부 검색하라. { s.Sname|STUDENT(s) ∧ (∀c)(∃e)(COURSE(c) ∧ENROL(e)∧ e.Sno=s.Sno ∧ e.Cno=c.Cno) } 질의: 과목 ‘C413’에 등록하지 않은 학생의 이름을 전부 검색하라. {s.Sname|STUDENT(s) ∧ (∃e)(ENROL(e) ∧ s.Sno=e.Sno ∧ e.Cno=‘C413’) }

▶ 2.3 도메인 관계 해석(domain relational calculus)(1) p117 원하는 릴레이션을 도메인 해석식 (domain calculus expression)으로 정의하는 표기법 도메인 해석식의 구성요소 ⅰ. 도메인 변수(domain variable) 지정된 애트리뷰트 도메인의 한 원소만을 취하는 변수 xSno, xSname, xDept, xYear, … 범위식 도메인 변수 선언 식 STUDENT(xSno, xSname, xDept, xYear)

▶ 도메인 관계 해석 (2) 도메인 해석식의 구성요소(con’t) ⅱ. 원자 식(atomic formula) ① 범위 식, R(x1,x2,…,xn) xi : 도메인 변수 R : xi의 범위 릴레이션 <x1,x2,…,xn>에 대응하는 값의 리스트는 릴레이션 R의 투플 ② 조건 식, x θ y x, y : 도메인 변수 θ: 비교 연산자(=, ≠, <, ≤, >,≥) ③ 조건 식, x θ c x : 도메인 변수 c : x가 정의된 도메인 값의 상수 원자 식의 실행 결과는 반드시 참(True) 또는 거짓(False)

▶ 도메인 관계 해석 (3) 도메인 해석식의 구성요소(con’t) iii. 정형식(WFF, Well-formed formula) 원자 식, 불리언 연산자(∧,∨,  ), 정량자(∀,∃)를 다음 규칙에 따라 결합하여 표현한 식 ① 모든 원자 식은 WFF ② F가 WFF이면, (F)와  F도 WFF ③ F와 G가 WFF이면, F∧G와 F∨G도 WFF ④ 도메인 변수 x가 자유변수로 사용된 F(x)가 WFF이면, (∀x)(F(x))와 (∃x)(F(x))도 WFF ⑤ 위의 규칙만을 적용해서 만들어진 식은 WFF

도메인 해석식 (domain calculus expression) p118 도메인 해석식의 형식 { x1,x2,…,xn|F(x1,…,xn,xn+1,…,xn+m) } xi: 도메인변수 F(x1,…,xn,xn+1,…,xn+m) : xi가 관련된 정형식 막대 (|) 왼편에 명세된 n 도메인 변수들은 목표 리스트로서 막대 (|) 오른편에 명세된 조건(정형식)을 만족하는 도메인 값으로 만들어지는 투플을 표현 example ① { xSname|STUDENT(xSno, xSname, xYear, xDept)} ② { xSname|(∃xDept) (STUDENT(xSno, xSname, xYear, xDept)∧ xDept='컴정’) } ③ { xSno, xDept|STUDENT(xSno, xSname, xYear, xDept)∧(∃xxSno)(∃xGrade) (ENROL(xxSno, xCno, xGrade, xMidterm, xFinal)∧ xSno=xxSno∧xGrade='A‘) }

▶ 2.4 도메인 해석식의 질의문 표현(1) 질의: 컴정학과 3,4 학년(Year)의 이름(Sname)을 검색하라. {xSname|(∃xYear)(∃xDept) (STUDENT(xSno, xSname, xYear, xDept)∧ xYear ≥ 3∧ xDept='컴정' ) } 질의: 과목번호(Cno) C413에서 성적(Grade)이 A인 학생의 학번(Sno)을 모두 검색하라 { xSno|(∃xCno)(∃xGrade) (ENROL(xSno, xCno, xGrade, xMidterm, xFinal) ∧ xCno= ‘C413’ ∧ xGrade=‘A’) }

▶ 도메인 해석식의 질의문 표현(2) 질의: 기말 성적(Final)이 90점 이상인 학생의 학번(Sno)과 이름(Sname)을 검색하라. {xSno,xSname|(STUDENT(xSno,xSname,xYear,xDept) ∧ (∃xFinal)(∃xxSno) (ENROL(xxSno, xCno, xGrade, xMidterm, xFinal)∧xSno=xxSno ∧ xFinal ≥ 90) } 질의: 과목번호(Cno) C324에 등록하지 않은 학생의 이름 (Sname) 을 검색하라. { xSname|(∃xSno) ((STUDENT(xSname, xSno, xYear, xDept) ∧ (∃xxSno) (∃xCno) (ENROL(xxSno, xCno, xGrade, xMidterm, xFinal) ∧ xSno=xxSno ∧ xCno='C324')) }

 3. 사례 : QBE QBE (Query By Example) IBM의 Zloof가 1975년에 개발 도메인 관계 해석 사용 그래픽 디스플레이 단말기 사용 이차원 구문(two-dimensional syntax) 언어 테이블 형태 : “skeleton" 예(example)를 질의문 명세에 사용 예제 원소(example element) : 도메인 변수 STUDENT Sno Sname Year Dept P._STX 3

▶ 데이터 검색(Print) (1) 단순 조건 검색 컴정학과 4학년 학생의 학번과 이름을 검색하라 중복되는 것은 자동으로 제거됨 'ALL'을 삽입하면 중복을 허용 STUDENT Sno Sname Year Dept P. 4 컴정 STUDENT Sno Sname Year Dept P.ALL 4 컴정

▶ 데이터 검색(2) 테이블 전체의 검색 학생 테이블을 전부 검색하라 간단한 방법 : 테이블 이름 밑에 P. 명세 STUDENT Sno Sname Year Dept P. STUDENT Sno Sname Year Dept P.

▶ 데이터 검색(3) 복수 조건 검색 'OR' 조건 : 두 개의 행이나 상이한 예제 원소를 사용 기말성적이 85점 이상이거나 과목번호 ‘C413’에 등록한 학생의 학번을 검색하라 'AND' 조건 : 하나의 행이나 같은 예제 원소를 사용 과목번호가 ‘C413’이고 기말성적이 85점 이상인 학생의 학번을 검색하라 ENROL Sno Cno Final Midterm 85 P. C413 ENROL Sno Cno Final Midterm P. C413 85

▶ 데이터 검색(4) 복수 조건 검색(con’t) 조건 상자(condition box)로 명세 ENROL Sno Cno Final Midterm P. _EC _EF CONDITIONS _EC=C413 AND _EF 85

▶ 데이터 검색(5) 복수 테이블에서 검색 기말성적이 85점 이상이거나 과목 ‘C413’을 등록한 학생의 이름을 검색하라. ENROL Sno Cno Final Midterm 85 _STX _STY C413 STUDENT Sno Sname Year Dept _STX _STY P.

▶ 데이터의 삽입(Insert) 단순 레코드의 삽입 투플 검색을 이용한 삽입 학번이 100이고 과목번호가 ‘C413’인 투플을 삽입하라. Note : 기본 키(Sno)가 null이어서는 안됨 투플 검색을 이용한 삽입 4학년 학생의 학번을 학생 테이블로부터 검색해서 SENIOR 테이블에 삽입하라. ENROL Sno Cno Grade Midterm I. 100 C413 Final STUDENT Sno Sname Year Dept _STX 4 SENIOR I.

▶ 데이터의 삭제(Delete) 한 테이블에서의 삭제 복수 테이블에서의 레코드 삭제 학번이 100인 학생을 학생 테이블에서 삭제하라. 복수 테이블에서의 레코드 삭제 기말성적이 60점 미만인 학생을 등록 테이블과 학생 테이블에서 삭제하라. STUDENT Sno Sname Year Dept D. 100 ENROL Sno Cno Grade Midterm Final _STX <60 D. STUDENT Sno Sname Year Dept D. _STX

▶ 데이터의 갱신(update) 필드 값의 단순 갱신(투플은 기본 키로 명세) 산술식을 이용한 갱신 학번이 300인 학생의 학년을 2로 변경하라. 산술식을 이용한 갱신 과목 ‘C413’에 등록한 학생의 기말 성적(Final)에 5점을 가산하라. STUDENT Sno Sname Year Dept 300 U.2 U. 2 ENROL Sno Cno Final Midterm U. _G+5 _G C413