관계 대수와 관계 해석
관계 대수
-
관계 데이터베이스의 릴레이션을 처리하기 위한 연산의 집합
-
검색 요구(질의)를 기술하는 데에 사용
-
릴레이션에 대한 연산의 결과 -> 릴레이션
-
관계 데이터베이스를 위한 특별 연산
-
셀렉트
-
표기 형식 : σ(sigma) 사용
-
논리연산자 이용 (AND, OR, NOT등 사용가능)
-
교환법칙 성립 : σ<조건1>(σ<조건2>)(R)) = σ<조건2>(σ<조건1>(R))조건1>조건2>조건2>조건1>
-
결합법칙 성립 : σ<조건1>(σ<조건2>(...(σ<조건n>(R))...)) = σ<조건1>AND<조건2>...AND<조건n>(R)조건n>조건2>조건1>조건n>조건2>조건1>
-
연산자들의 조합 : 관계 대수 연산자들은 상호 중첩하여 사용 가능함
-
-
조인
-
표기형식 : 그리스 문자 ⋈를 사용
-
공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듬
-
연산자의 종류
-
세타 조인
-
두 릴레이션으로부터 관련있는 튜플을 결합하여 하나의 튜플을 생성함
-
두 리레이션 R(A1, A2, … An)과 S(B1, B2, … Bm)의 세타 조인한 결과로
얻어지는 차수는 릴레이션 R의 차수와 릴레이션 S의 차수를 합한 것 (n+m) -
속성은 (A1, A2, … An, B1, B2, … Bm)임
-
조인 조건을 만족하는 튜플들로 이루어진 릴레이션 세타는 { =, <> (다르다), <=, <, >=, > } 중의 하나임
-
-
동등 조인
-
세타 조인 중에서 비교 연산자가 =인 조인임
-
학생(R) ⋈ 학번=학번 성적(S) : 학번이 같은 학생과 성적의 세타 조인
-
학생과 성적 릴레이션에 대한 동등 조인
-
-
자연 조인
-
조인 속성들이 양쪽의 릴레이션에서 동일한 이름을 가져야 함
- 그렇지 않는 경우 조인 속성의 이름을 먼저 동일하게 변경해야 함
-
-
외부 조인
-
상대 릴레이션에서 대응되는 튜플을 갖지 못하는 튜플이나 조인 속성에 널 값이 들어 있는 튜플들을
다루기 위해서 조인 연산을 확장한 조인 -
서로 매치되지 않는 필드에 대해서는 NULL을 입력함
-
외부 조인의 종류
-
왼쪽 외부 조인 : R1의 모든 튜플들이 결과 릴레이션이 나타남
-
오른쪽 외부 조인 : R2의 모든 튜플들이 결과 릴레이션이 나타남
-
완전 외부 조인 : R1과 R2의 모든 튜플들이 결과 릴레이션이 나타남
-
-
-
세미 조인
-
-
-
-
프로젝트
-
표기 형식 : π(pi) 사용
-
주어진 릴레이션에서 속성 리스트에 제시된 속성만을 추출하는 연산자
-
π<속성 리스트="">(R)속성>
-
결과 릴레이션은 속성 리스트에 명시된 R의 속성들만 가짐
-
결과 릴레이션의 튜플 수는 원래 릴레이션의 튜플수보다 작거나 같음
- 릴레이션은 중복 튜플을 인정하지 않음 (중복 튜플 제거)
-
‘학생’ 릴레이션에서 이름과 전공 속성을 선택하기 위한 학생 릴레이션에 대한 프로젝트 연산을 하는 관계 대수 표현
- π 이름, 전공 (학생)
-
중복을 제거해야 함
- 관계형 모델은 중복된 레코드들을 허용하지 않음
-
-
디비전
-
X ⊃ Y인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때,
R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산 -
A / B를 하면 B의 속성을 모두 지운다음, 중복을 제거한 나머지 값을 보면 된다.
-
-
수학적 집합 연산
-
합집합
-
R ∪ S는 R 또는 S에 있거나 R과 S 모두에 속한 튜플들로 이루어진 릴레이션
-
R, S에 속하는 모든 튜플이 집합
-
R ∪ S = {t t ∈ R ∨ t ∈ S}
-
-
교집합
-
R ∩ S는 R과 S 모두에 속한 튜플들로 이루어진 릴레이션
-
R ∩ S = {t t ∈ R ∧ t ∈ S} - R, S 양쪽 모두에 속하는 모든 튜플의 집합
-
-
차집합
-
R - S는 R에는 속하지만 S에는 속하지 않는 튜플들로 이루어진 릴레이션
-
R - S = {t t ∈ R ∧ t ∉ S} - R에는 속하고, S에는 속하지 않는 모든 튜플의 집합
-
-
카티션 프로덕트
-
R x S는 차수가 n+m이고, 카디날리티가 i*j이고, 속성이 (A1, A2, … An, B1, B2, … Bm)이며,
R과 S의 튜플들의 모든 가능한 조합으로 이루어진 릴레이션 -
R x S = {r*s r ∈ R ∧ s ∈ S} - R과 S의 접속인 모든 튜플의 집합
-
-
외부 합집합
-
U+는 완전하게 합병 가능하지 않은 두 릴레이션을 합집합으로 만드는 것
-
합집합 호환성이 없는 두 릴레이션을 합집합(Union)하는데 사용됨
-
-
지정 연산자
-
복잡한 질의를 여러 개의 질의로 분리하거나 중간 결과에 이름을 부여
-
최종 질의를 결과에 이름을 부여
-
연산 기호로는 <-를 사용
-
-
관계 대수의 중요성
-
SQL의 이론적 기초
-
최적화되지 않은 SQL은 사용자가 의도한 결과값을 조회하지 못하거나 성능이 저하되는 문제를 발생시킴
관계 대수의 종류
-
단항 관계 연산
-
하나의 릴레이션에서 값을 가지고 올 수 있는 것
-
셀렉트 연산
-
프로젝트
-
-
이항 관계 연산
-
두개 이상의 릴레이션에서 값을 가지고 올 수 있는 것
-
조인과 디비전 연산
-
-
집합 이론
관계 해석
-
튜플 관계 해석(tuple relational calculus)과 도메인 관계 해석(domain relational calculus)
-
원하는 릴레이션을 튜플 해석식으로 정의하는 표기법
-
“어떻게 검색할 것인가” 보다 “무엇을 검색할 것인가”만을 기술하는 선언적 표현법을 사용하는 비절차적 질의어
-
관계 대수와의 차이점
-
관계 해석은 하나의 선언적 해석식으로 검색 질의를 명시하며, 비절차적인 언어임
-
관계 대수에서는 연산들을 순차적으로 사용하므로, 절차적인 성질을 가짐
-
두 언어의 표현력(Expressive Power)은 동등함
-
튜플 관계 해석
-
튜블 변수 (Tuple Variable)
-
지정된 릴레이션의 튜플을 하나씩 그 값으로 취할 수 있는 변수
- 범위 변수라고도 함
-
R(t)
-
튜플 해석시에서 범위식은 주문(a)
-
-
한정 속성
- 릴레이션 R에 대해 튜플 변수 t가 나타내는 튜플의 어떤 속성 A의 값을 표현
-
원자식
- 튜플 해석식의 가장 기본이 되는 식으로 범위식과 조건식과 같은 형태
-
정형식
-
∀로 표현하며 for all이라고 읽음
-
모든 가능한 튜플 t에 대해 정형식 F(t)가 참일 때 참이 된다는 뜻 (∀t)(F(t))
-
∃로 표현하며 there exists라고 읽음
-
F(t)를 참으로 만드는 어떤 튜플 t가 하나라도 존재만 한다면 참이 된다는 뜻 (∃t)(F(t))
-
도메인 관계 해석
-
원하는 릴레이션을 도메인 해석식으로 정의하는 표기법
-
등록(enrol) 릴레이션
{xSname | (∃xYear)(∃xDept)(STUDENT(xSno, xSname, xYear, xDept)∧xCno='C413'∧xGrade='A'}