본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
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를 가리키는 말이다.

관계 대수와 관계 해석 비교

편집 원본 편집

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

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