관계 해석: Difference between revisions

From IT Wiki
(관계해석 문서로 넘겨주기)
 
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
#넘겨주기 [[관계해석]]
[[분류:데이터베이스]][[분류:정보처리기사]]
;Relational Calclus
;'어떻게 검색할 것인가?' 보다 '무엇을 검색할 것인가' 만을 기술하는 [[선언적 표현법]]을 사용하는 비절차적 질의어
* 수학의 프레디킷 해석(predicate calculus)에 기반을 두고 있다.
* E. F. Codd가 데이터베이스에 적용할 수 있도록 설계하여 제안하였다.
* 릴레이션을 정의하는 방법을 제공한다.
* 어떤 데이터가 도출되어야 하는 가만 정의하므로 출력 순서(ORDER BY)의 개념이 없다.
* 현대 SQL이 기본적으로 튜플 관계 해석 + [[관계 대수]]를 기반으로 만들어졌다고 볼 수 있다.
 
== 종류 ==
=== 튜플 관계 해석 ===
'''Tuple Relational Calculus'''
 
튜플을 기준으로 데이터를 조회한다.
* 셀렉트 연산
** { t | EMPLOYEE(t) and t.SALARY>5000 }
* 프로젝트 연산
** { t.FNAME, t.LNAME | EMPLOYEE(t) }
* 셀렉트 + 프로젝트
** { t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY > 50000 }
* 조인 + 셀렉트 + 프로젝트
** { e.FNAME, e.LNAME | EMPLOYEE(e) and DEPARTMENT(d) and (d.DNAME = 'Research' and d.DNUMBER = e.DNO) }
 
=== 도메인 관계 해석 ===
; 속성을 기준으로 데이터 조회
* { SALARY, ADDRESS | (EMPLOYEE(FNAME,MNAME,LNAME,SALARY,ADDRESS) and FNAME='John" and MNAME='B' and LNAME='Smith') }
 
== 관계 해석 기호 ==
* ∃: 존재한다(There exist)
* ∈: t가 r에 속함( t ∈ r )
* ∀: 모든 것에 대하여(for all)
* ∪: 합집합
 
== 존재 한정자와 보편 한정자 ==
 
=== 자유 변수와 종속 변수 ===
 
* '''자유 변수 (Free Variable)''':
** 어떤 식이나 공식 안에서 특정 변수에 대해 그 값이 제한되지 않으면, 그 변수는 '''자유'''이다.
** 자유 변수는 그 식 안에서 '아직 값을 부여받지 않은 변수'이다.
** 예를 들어, P(x)라는 식이 있을 때, 여기서 x는 자유 변수이다.
*** 아직 x의 값이 고정되지 않았기 때문에 P(x)의 참/거짓 여부는 x가 어떤 값을 가지는지에 따라 달라진다.
* '''종속 변수 (Bound Variable)''':
** 종속 변수는 어떤 한정자에 의해 '''묶여진 변수'''이다.
*** 이 변수는 한정자가 변수의 값을 정해주는 역할을 한다.
** 예를 들어, (∀x)(P(x))에서 x는 보편 한정자 ∀에 의해 묶여 있다.
*** 이 식은 "모든 x에 대해 P(x)가 참이다"라는 의미를 가지고 있으므로, x는 P(x)가 참인 범위에 묶여 있다.
 
=== 존재 한정자 ===
 
* Exist의 E를 좌우 대칭으로 쓴 ∃를 기호로 한다.
* "존재 해야 함"이라는 조건을 나타낸다.
* 예를 들어 ∃x(Student(x) ∧ Enrolled(x, Math)) 는 수학 과목을 수강하는 학생 x가 존재한다는 의미이다.
 
'''예시'''
 
* {t.Fname, t.Lname, t.Address | EMPLOYEE(t) AND '''(∃d)'''(DEPARTMENT(d) AND d.Dname=‘Research’ AND d.Dnumber=t.Dno)}
** 여기서 자유 변수는 t이다. d는 종속 변수로, '''d가 존재한다는 조건 하'''에서 t를 찾아야 한다.
** 따라서 t는 좌변에 위치하고, '''d는 우변에 있으며 존재 한정자'''를 가져야 한다.
* {p.Pnumber, p.Dnum, m.Lname, m.Bdate, m.Address | PROJECT(p) AND EMPLOYEE(m) AND p.Plocation=‘Stafford’ AND ('''(∃d)'''(DEPARTMENT(d) AND p.Dnum=d.Dnumber AND d.Mgr_ssn=m.Ssn))}
** 여기서 자유 변수는 p와 m이다. d는 종속 변수로, '''d가 존재한다는 조건 하'''에서 p와 m을 찾아야 한다.
** 따라서 p와 m은 좌변에 위치하고, '''d는 우변에 있으며 존재 한정자'''를 가져야 한다.
* {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))}
** 여기서 자유 변수는 e이다. x와 w는 종속 변수로, '''x와 w가 존재한다는 조건 하'''에서 e를 찾아야 한다.
** 따라서 e는 좌변에 위치하고, '''x와 w는 우변에 있으며 존재 한정자'''를 가져야 한다.
'''공식 (드모르간 법칙이 적용된다.)'''
 
* (∀x) (P(x)) ≡ NOT (∃x) (NOT (P(x)))
* (∃x) (P(x)) ≡ NOT (∀x) (NOT (P(x)))
* (∀x) (P(x) AND Q(x)) ≡ NOT (∃x) (NOT (P(x)) OR NOT (Q(x)))
* (∀x) (P(x) OR Q(x)) ≡ NOT (∃x) (NOT (P(x)) AND NOT (Q(x)))
* (∃x) (P(x)) OR Q(x)) ≡ NOT (∀x) (NOT (P(x)) AND NOT (Q(x)))
* (∃x) (P(x) AND Q(x)) ≡ NOT (∀x) (NOT (P(x)) OR NOT (Q(x)))
 
=== 보편 한정자 ===
 
* All의 A를 상하 대칭으로 쓴 ∀를 기호로 한다.
* "만족하는 모든 값"이라는 범위를 나타낸다.
* 예를 들어 ∀x(Student(x) → Enrolled(x, Math))는 수학 과목을 수강하는 모든 학생 x를 가리키는 말이다.
 
== 관계 대수와 관계 해석 비교 ==
기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력 면에서 동일하다.{{틀:관계대수와 관계해석}}
 
== 같이 보기 ==
* [[관계 대수]]

Latest revision as of 10:17, 17 October 2024

Relational Calclus
'어떻게 검색할 것인가?' 보다 '무엇을 검색할 것인가' 만을 기술하는 선언적 표현법을 사용하는 비절차적 질의어
  • 수학의 프레디킷 해석(predicate calculus)에 기반을 두고 있다.
  • E. F. Codd가 데이터베이스에 적용할 수 있도록 설계하여 제안하였다.
  • 릴레이션을 정의하는 방법을 제공한다.
  • 어떤 데이터가 도출되어야 하는 가만 정의하므로 출력 순서(ORDER BY)의 개념이 없다.
  • 현대 SQL이 기본적으로 튜플 관계 해석 + 관계 대수를 기반으로 만들어졌다고 볼 수 있다.

종류[edit | edit source]

튜플 관계 해석[edit | edit source]

Tuple Relational Calculus

튜플을 기준으로 데이터를 조회한다.

  • 셀렉트 연산
    • { t | EMPLOYEE(t) and t.SALARY>5000 }
  • 프로젝트 연산
    • { t.FNAME, t.LNAME | EMPLOYEE(t) }
  • 셀렉트 + 프로젝트
    • { t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY > 50000 }
  • 조인 + 셀렉트 + 프로젝트
    • { e.FNAME, e.LNAME | EMPLOYEE(e) and DEPARTMENT(d) and (d.DNAME = 'Research' and d.DNUMBER = e.DNO) }

도메인 관계 해석[edit | edit source]

속성을 기준으로 데이터 조회
  • { SALARY, ADDRESS | (EMPLOYEE(FNAME,MNAME,LNAME,SALARY,ADDRESS) and FNAME='John" and MNAME='B' and LNAME='Smith') }

관계 해석 기호[edit | edit source]

  • ∃: 존재한다(There exist)
  • ∈: t가 r에 속함( t ∈ r )
  • ∀: 모든 것에 대하여(for all)
  • ∪: 합집합

존재 한정자와 보편 한정자[edit | edit source]

자유 변수와 종속 변수[edit | edit source]

  • 자유 변수 (Free Variable):
    • 어떤 식이나 공식 안에서 특정 변수에 대해 그 값이 제한되지 않으면, 그 변수는 자유이다.
    • 자유 변수는 그 식 안에서 '아직 값을 부여받지 않은 변수'이다.
    • 예를 들어, P(x)라는 식이 있을 때, 여기서 x는 자유 변수이다.
      • 아직 x의 값이 고정되지 않았기 때문에 P(x)의 참/거짓 여부는 x가 어떤 값을 가지는지에 따라 달라진다.
  • 종속 변수 (Bound Variable):
    • 종속 변수는 어떤 한정자에 의해 묶여진 변수이다.
      • 이 변수는 한정자가 변수의 값을 정해주는 역할을 한다.
    • 예를 들어, (∀x)(P(x))에서 x는 보편 한정자 ∀에 의해 묶여 있다.
      • 이 식은 "모든 x에 대해 P(x)가 참이다"라는 의미를 가지고 있으므로, x는 P(x)가 참인 범위에 묶여 있다.

존재 한정자[edit | edit source]

  • Exist의 E를 좌우 대칭으로 쓴 ∃를 기호로 한다.
  • "존재 해야 함"이라는 조건을 나타낸다.
  • 예를 들어 ∃x(Student(x) ∧ Enrolled(x, Math)) 는 수학 과목을 수강하는 학생 x가 존재한다는 의미이다.

예시

  • {t.Fname, t.Lname, t.Address | EMPLOYEE(t) AND (∃d)(DEPARTMENT(d) AND d.Dname=‘Research’ AND d.Dnumber=t.Dno)}
    • 여기서 자유 변수는 t이다. d는 종속 변수로, d가 존재한다는 조건 하에서 t를 찾아야 한다.
    • 따라서 t는 좌변에 위치하고, d는 우변에 있으며 존재 한정자를 가져야 한다.
  • {p.Pnumber, p.Dnum, m.Lname, m.Bdate, m.Address | PROJECT(p) AND EMPLOYEE(m) AND p.Plocation=‘Stafford’ AND ((∃d)(DEPARTMENT(d) AND p.Dnum=d.Dnumber AND d.Mgr_ssn=m.Ssn))}
    • 여기서 자유 변수는 p와 m이다. d는 종속 변수로, d가 존재한다는 조건 하에서 p와 m을 찾아야 한다.
    • 따라서 p와 m은 좌변에 위치하고, d는 우변에 있으며 존재 한정자를 가져야 한다.
  • {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))}
    • 여기서 자유 변수는 e이다. x와 w는 종속 변수로, x와 w가 존재한다는 조건 하에서 e를 찾아야 한다.
    • 따라서 e는 좌변에 위치하고, x와 w는 우변에 있으며 존재 한정자를 가져야 한다.

공식 (드모르간 법칙이 적용된다.)

  • (∀x) (P(x)) ≡ NOT (∃x) (NOT (P(x)))
  • (∃x) (P(x)) ≡ NOT (∀x) (NOT (P(x)))
  • (∀x) (P(x) AND Q(x)) ≡ NOT (∃x) (NOT (P(x)) OR NOT (Q(x)))
  • (∀x) (P(x) OR Q(x)) ≡ NOT (∃x) (NOT (P(x)) AND NOT (Q(x)))
  • (∃x) (P(x)) OR Q(x)) ≡ NOT (∀x) (NOT (P(x)) AND NOT (Q(x)))
  • (∃x) (P(x) AND Q(x)) ≡ NOT (∀x) (NOT (P(x)) OR NOT (Q(x)))

보편 한정자[edit | edit source]

  • All의 A를 상하 대칭으로 쓴 ∀를 기호로 한다.
  • "만족하는 모든 값"이라는 범위를 나타낸다.
  • 예를 들어 ∀x(Student(x) → Enrolled(x, Math))는 수학 과목을 수강하는 모든 학생 x를 가리키는 말이다.

관계 대수와 관계 해석 비교[edit | edit source]

기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력 면에서 동일하다.

구분 관계 대수 관계 해석
예시 δLev=4(EMP) EMP(t) and t.Lev>3 }
목적 어떻게(How) 무엇을(What)
기반 집합과 관계연산 프레디킷 논리
접근법 절차적 비절차적
관점 규범적 기술적
표현력 동일

같이 보기[edit | edit source]