Professional Documents
Culture Documents
07
07
07
관계 대수와 관계 해석
(Part 2)
문양세
강원대학교 IT
IT특성화대학
특성화대학 컴퓨터과학전공
관계 대수 및 관계 해석 강의 요약
관계 대수와 관계 해석
집합 이론과 관계 대수 연산
추가적인 관계 연산
관계 대수 질의의 예
투플 관계 해석
도메인 관계 해석
집합 이론과 관계 대수 연산
추가적인 관계 연산
관계 대수 질의의 예
도메인 관계 해석
관계 해석 (Relational Calculus)
• “어떻게
어떻게 검색할 것인가
것인가” 보다 “무엇을
무엇을 검색할 것인가
것인가” 만을 기술하는 선언적 표현법을 사
용하는 비절차적 질의어
• SQL을 포함한 많은 상업용 관계 언어들이 관계 해석에 기반을 두고 있음
관계 대수와의 차이점
• 관계 해석은 하나의 선언적(declarative)
(declarative) 해석식으로 검색 질의를 명시하며,
, 비절차적인
언어임
• 관계 대수에서는 연산들을 순차적으로 사용하므로 절차적인 성질을 가짐
관계적 완전성(relationally completeness)
• 어떤 관계 질의어 L이 있을 때, L
L이 관계 해석(또는 관계 대수)으로 표현 가능한 어떤 질의
도 표현할 수 있으면 L은 “관계적으로 완전(relationally complete)하다”라고 한다.
• 대부분의 관계 질의어들은 관계적으로 완전(해야)하며,
, 집단 함수(aggregate functions),
(aggregate functions),
그룹화(grouping), 순서화(ordering) 등의 연산들을 제공하므로 관계 해석보다 표현력이
강해진다.
투플 변수
• 릴레이션의 투플들을 범위(range)로 가지는 변수이다.
예제: 봉급이 $50,000를 넘는 모든 사원을 검색하라.
{{t | EMPLOYEE(t) and t.SALARY
() > 50000}}
여기서, EMPLOYEE(t)는 투플 변수 t가 릴레이션 EMPLOYEE의 투플들을 범위로 함을
나타낸다.
• 투플 t에 대하여 t.SALARY > 50000을 만족하는 투플 만이 검색된다.
프로젝션의 표현
• t의 일부 애트리뷰트 만을 검색하려면 다음과 같이 작성한다.
{t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY > 50000}
이는 다음 SQL
Q 질의와 동일한 의미를 가진다. ((표현력이
현력이 동일하다))
SELECT T.FNAME, T.LNAME
FROM EMPLOYEE T
WHERE T.SALARY > 50000;
투플 관계해석의 일반식 형태
{t1.A
A1, tt2.A
A2, ..., ttn.A
An | COND(t
| COND(t1, tt2, ..., ttn, ttn+1, ttn+2, ..., ttn+m)}
• t1, t2, ..., tn, tn+1, tn+2, ..., tn+m은 투플 변수
식(formula)
(fo ula)은 다음과 같은 원자(atom)
(ato )들로 이루어짐
• Ri(ti)는 ti의 범위가 Ri임을 명시 (예: EMPLOYEE(t))
• (ti.A
A op ttj.B), op
B) 는 비교 연산자 (=, <, ≤, ...) (
( < ≤ ) (예: tt1.FNAME = t
FNAME t1.SNAME)
SNAME)
• 예: EMPLOYEE(t) and t.SALARY > 50000
정량자(quantifiers)가 식에 사용될 수 있음
• 전체 정량자(universal quantifier) (∀) (for all
(universal quantifier) (∀) (for all이라 읽음)
• 존재 정량자(existential quantifier) (∃) (their exists라 읽음)
자유(free)
(f ) 투플 변수와 속박(bound)
(b d) 투플 변수
• (간단히 설명해서) 투플 변수 t가 (∃t)나 (∀t)절에 나타나면, t는 속박되는 것을 의미하며,
그렇지 않으면 자유롭다는 것을 의미한다.
• 정형적 정의는 교재 p. 186 참조 ( 강의에서는 생략)
예제:
F1: d.DNAME = ‘Research’
F2: (∃t)(d.DNUMBER = t.DNO)
• 변수 d는 F1과 F2 모두에서 자유롭다
F가 식이면, (∃t)(F)도 식이다.
질의 8:
8: 각 사원에 대하여, 그 사원의 이름과 성, 그리고 직속 상사의 이름과 성을 검
색하라.
Q8: {e FNAME e LNAME s FNAME s LNAME | EMPLOYEE(e) and
Q8: {e.FNAME, e.LNAME, s.FNAME, s.LNAME | EMPLOYEE(e) and
EMPLOYEE(s) and e.SUPERSSN = s.SSN}
Q3ʹ: {e.LNAME, e.FNAME | EMPLOYEE(e) and ((∃x) (∃w)
(PROJECT(x) and WORKS_ON(w) and x.DNUM = 5 and w.ESSN = e.SSN and
x.PNUMBER = w.PNO))}
AND/OR/NOT
• 관계 대수의 UNION은 관계 해석의 or
o 연결자에 대응함
그러나, 다음은 성립하지 않음
not(∀x) (P(x)) ⇒ (not∃x) (P(x))
다음 질의 3을 통해 규칙을 살펴보자
질의 3: 5번 부서에 의해 관리되는 모든 프로젝트들에 참여하는 사원들의
이름을 찾아라.
Q3: {e.LNAME, e.FNAME | EMPLOYEE(e) and
((∀x) (not (PROJECT(x)) or (not (x.DNUM = 5) or
((∃w) (WORKS_ON(w) and w.ESSN = e.SSN and x.PNUMBER = w.PNO)))))}
Q3의 기본 구성요소들
Q3: {e.LNAME, e.FNAME | EMPLOYEE(e) and F’}
F’ = (∀x) (not(PROJECT(x)) or F1)
F1 = (not(x.DNUM = 5) or F2)
F2 = (∃w) (WORKS ON(w) and w ESSN = e.SSN and x.PNUMBER
F2 = (∃w) (WORKS_ON(w) and w.ESSN = e SSN and x PNUMBER = w.PNO)
= w PNO)
Q3에서 사용한 규칙 설명
1 Q3의 결과로 구해지는 사원 e는 5
1. 5 번 부서에서 관리하는 모든 프로젝트에 근무해야 한다.
이러한 투플을 찾기 위하여 관심 없는 모든 투플들을 전체 정량자로부터 제외시켜야 한다.
2. F’에서, not(PROJECT(x))
( J ( ))는 관심있는 릴레이션 “PROJECT”
J 에 없는 모든
든 투플들에 대해 x
를 참으로 만든다.
3. F1에서, not(x.DNUM = 5)는 관심없는 PROJECT 투플들, 즉 “DNUM이 5가 아닌 투플들”
에 대해 x를 참으로 만든다.
4. F2는 나머지에 대해 만족되어야 할 조건, 즉 “5번 부서에 의해 관리되는 모든 PROJECT 투
플들”을 명시한다.
추가적인 예제들
• 질의 6:
6: 부양가족이 없는 사원들의 이름을 찾아라.
Q6: {e.FNAME, e.LNAME | EMPLOYEE(e) and (not(∃d) (DEPENDENT(d) and e.SSN = d.ESSN))}
불안전식은 무한
한(infinite)
( f ) 개 투플들을
플들을 생성할 수 있고
있 , 투플들의
플들의 타입이
서로 다를 수 있음
불안전한 식의 예제: {t | not(EMPLOYEE(t))}
• 가능한 모든 투플들 중에서 EMPLOYEE가 아닌 모든 투플들을 생성함
• 따라서 위의 식은 불안전한 식이 됨
집합 이론과 관계 대수 연산
추가적인 관계 연산
관계 대수 질의의 예
투플 관계 해석
도메인 관계 해석
도메인
메인 변수는
변 한 애트리뷰트의
애 리 의 도메인을
메인을 범위로
범위 가짐
• 투플 관계 해석에서는? 투플의 도메인을 범위로 가졌음
예제:
• 질의 0:
0: 이름이 ‘John B. Smith’
John B Smith’인 사원의 생일과 주소를 검색하라.
Q0: {uv | (∃q) (∃r) (∃s) (EMPLOYEE(qrstuvwxyz)
q J )}
and q = ‘John’ and r = ‘B’ and s = ‘Smith’)}
BDATE를 위한 변수 u, ADDRESS를 위한 v
Q1: {qsv | (∃z) (EMPLOYEE(qrstuvwxyz) and (∃l) (∃m)
(DEPARTMENT(lmno) and l = ‘Research’ and m = z))}
(m = z)는 조인 조건
(l = ‘Research’)는 선택 조건
Q2: {iksuv | (∃j) (PROJECT(hijk) and (∃t)
(EMPLOYEE(qrstuvwxyz) and (∃m) (∃n)
(DEPARTMENT(lmno) and k = m and n = t and j = ‘Stafford’)))}
Q6: {qs | (∃t) (EMPLOYEE(qrstuvwxyz) and
(not (∃l) (DEPENDENT(lmno) and t = l)))}
Q7: {sq | (∃t) (EMPLOYEE(qrstuvwxyz) and ((∃j)
(
(DEPARTMENT(hijk) and
( j )
((∃l) (DEPENDENT(lmno) and t = j and l = t)))))}
기본 관계대수 연산
• 선택(SELECT),
(SELECT) 프로젝트(PROJECT),
(PROJECT) 합집합(UNION),
(UNION) 차집합(SET DIFFERNECE),
(SET DIFFERNECE)
카티션 프로덕트(Cartesion product)
추가적인 관계연산
• 집계함수, 그루핑 연산, 외부조인 연산
관계 대수 질의의 예
투플‐관계 해석
• 투플 변수와 정량자 (존재 정량자와 전체 정량자)
• 안전식
도메인 관계 해석