릴레이션 조작을 위한 연산의 종류
- 관계 대수(Relational Algebra): 절차 언어(Procedural language)
- 릴레이션 = Set of tuples (릴레이션에 대한 연산의 결과는 릴레이션)
- 연산자의 종류
- 일반 집합 연산자(Set operator): 합집합(union, ∪), 교집합(intersect, ∩), 차집합(difference, -), 카티션 프로덕트(cartesian product, ×)
- 순수 관계 연산자(Relational operator): 실렉트(select, 소문자 시그마), 프로젝트(project, 대문자 파이), 조인(join), 디비전(division, ÷)
※ ∨(or), ∧(and)
(수식과 예는 강의 자료 참고)
실렉트(σ) 연산: 수평적 부분집합(Horizontal subset)
프로젝트(Π) 연산: 수직적 부분집합(Vertical Subset)
조인(Join, ⋈):
- 세타 조인(theta join): 비교연산자(=, >, < 등)를 이용하여 표현된 조인
- 동일 조인(Equi-join): 비교연산자가 '='인 조인
- 자연 조인(Natural join): 양쪽 릴레이션에서 중복된 속성에 대해 동일 조인을 수행하고, 조인 결과에서 중복된 속성을 한번만 나타낸 조인, 일반적으로 '조인'이라고 하면 '자연 조인'을 의미함
디비전(Division, ÷)
개명 연산(Rename, ρ): 강의 자료 참고
기본 연산과 복합 연산
- 기본 연산(Primitive operation): 합집합, 차집합, 카티션 프로덕트, 실렉트, 프로젝트
- 복합 연산(Composite operation): 조인, 교집합, 디비전
- 복합 연산은 기본 연산으로 표현 가능(강의 자료 참고)
세미 조인: 왼편 릴레이션의 투플들 중에서 오른편 릴레이션과의 자연조인에 참여하는 투플들만 추려내는 것
- 자연 조인과 세미 조인의 비교(강의 자료 참고)
외부 조인(⋈+): 조인 과정에서 대응되는 투플이 없는 투플들도 조인 결과에 포함시키는 조인
- 외부 조인으로 추가되는 투플들의 속성 값은 null을 가짐
외부 합집합(Outer-Union, U+): 완전하게 합병가능하지 않은 두 릴레이션을 합집합으로 만드는 것
- 합집합은 합병 가능한 두 릴레이션에 적용
집계 연산
- 집계 함수: SUM, AVG, MAX, MIN, COUNT
- 그루핑 함수: GROUP
관계 대수를 이용한 질의문 표현 예: (강의 자료 참고)
- 관계 해석(Relational Calculus): 비절차 언어(Non-procedural language)
- 투플 관계 해석(Tuple relation calculus)라고도 함
- 투플 단위의 연산을 나타내는 관계해석식으로 질의문을 표현
- 기능적으로는 관계 대수와 동등
- 비절차적 특성 ↔ 관계대수는 절차적
관계 해석식으로 나타낸 질의문의 예
- 과목 'C413'에서 성적이 'A'인 학생의 학번을 모두 검색하여라
- { e.sno|ENROL(e) ∧ e.cno = 'C413' ∧ e.grade = 'A' }
- '컴퓨터'과 과목을 적어도 한 과목 등록한 학생의 이름을 모두 검색하여라
- { s.sname|STUDENT(s) ∧ (∃e)ENROL(e) ∧ s.sno = e.sno ∧ (∃c)COURSE(c) ∧ e.cno = c.cno ∧ c.dept = '컴퓨터' }
도메인 관계 해석(Domain Relation Calculus)
- 도메인 해석(Domain Calculus)이라고도 함
- 질의문을 도메인 해석식으로 나타냄
- 도메인 변수를 사용하여 해석식을 표현
- 관계 해석 → 투플 변수 사용
도메인 관계 해석식을 이용한 질의문 표현
- 과목 'C413'에서 성적이 'A'인 학생의 학번을 모두 검색하여라
- { xsno|(∃xcno)(∃xgrade)(ENROL(xsno,xcno,xgrade,xmidterm,xfinal) ∧ xdept='컴퓨터' ∧ xgrade='A') }
- '컴퓨터'과 과목을 적어도 한 과목 등록한 학생의 이름을 모두 검색하여라
- { xsname|(∃xsname)(STUDENT(xsno,xsname,xyear,xdept) ∧ (∃xcno)(∃xxdept)(COURSE(xcno,xcname,xcredit,xxdept,xprname) ∧ (∃xxsno)(∃xxcno)(ENROL(xxsno,xxcno,xgrade,xmidterm,xfinal)∧xxdept='컴퓨터' ∧ xcno=xxcno∧xsno=xxsno))) }
'데이터베이스 Database' 카테고리의 다른 글
Chapter 6 SQL - 저장프로시저 Stored Procedure (0) | 2020.10.26 |
---|---|
Chapter 6 SQL - View (0) | 2020.10.21 |
Chapter 4 관계 데이터베이스 (0) | 2020.09.18 |
Chapter 3 데이터베이스 시스템의 구성 (0) | 2020.09.17 |
Chapter 2 데이터베이스 관리 시스템 (0) | 2020.09.10 |