데이터베이스 설계 | 5. 관계 대수 개념과 기본 연산자
2024년 5월 24일
1. 관계 대수 개념
- 쿼리는 관계 인스턴스에 적용되며 쿼리 결과도 관계 인스턴스
- 쿼리에 대한 입력 관계의 스키마가 고정되어 있다
- 주어진 쿼리 결과에 대한 스키마도 고정되어 있다
- 스키마는 쿼리 언어 구조의 정의에 의해 결정된다
2. 관계 대수 연산자
-
일반 집합 연산자
- 합집합(R∪S) : degree(A 또는 B의 차수), cardinality(|A∪B| =< |A| + |B|)
- 교집합(R∩S) : degree(A 또는 B의차수), cardinality(|A∩B| =< MIN(|A|, |B|)
- 차집합(R-S) : degree(A 또는 B의 차수), cardinality(|A-B| =< |A|)
- 카티션프로덕트(RXS) : 릴레이션 R의 각 투플과 릴레이션 S의 각 투플을 모두 연결하여 만든 새로운 투플을 반환, degree(A와 B의 차수 합), cardinality(|A×B| = |A| x |B|)
-
순수 관계 연산자
- Select (σ(조건)(R)) : 릴레이션 R에서 조건을 만족하는 투플들을 반환
- Project (π(속성 리스트)(R)) : 릴레이션 R에서 주어진 속성들의 값으로만 구성된 투플들을 반환
- Join (R⨝S) : 공통 속성을 이용해 릴레이션 R과 S의 투플들을 연결하여 만든 새로운 투플들을 반환
- Division (R/S) : 릴레이션 S의 모든 투플과 관련이 있는 릴레이션 R의 투플들을 반환
-
기본 연산자 : 다른 연산으로 대체할 수 없는 하나의 논리적 기능을 수행하는 연산
- Select (σ) : 관계에서 행의 하위 집합을 선택
- Project (π) : 관계에서 원하지 않는 열을 삭제
- Union (∪) : 관계 1 또는 관계 2에 있는 튜플
- Difference (-) : 관계 1에는 있지만 관계 2에는 없는 튜플
- 카티션 프로덕트(X) : 두 관계를 결합할 수 있다
-
복합 연산자 : 몇 개의 기본 연산으로 대체할 수 있는 연산
- Intersect (∩) : 관계 1과 관계 2의 튜플
- Join (⨝) : 둘 이상의 관계에서 정보 결합
- Division (/) : 모든 보트를 예약한 선원의 이름 찾기
-
Project (π)
- 프로젝트 목록에 없는 속성을 삭제
- 결과 스키마는 프로젝트 목록에 있는 필드를 정확히 포함하며 (유일한) 입력 관계에 있는 것과 동일한 이름을 갖는다
- 중복을 제거
- 참고 : 실제 시스템은 사용자가 명시적으로 요청하지 않는 한 일반적으로 중복 제거를 수행하지 않는다
-
Select (σ)
- 선택 조건을 충족하는 행을 선택
- 결과에 중복 없음
- 하나의 결과 릴레이션이 또 다른 연산에 입력될 수 있음
- 입력 관계의 스키마와 동일한 결과 스키마
- 교환적 특성 (ex.σage>30(σrating>8(S2)) = σrating>8(σage>30(S2)))
-
Traditional Set Operators
- 합병 가능
- 합집합, 교집합, 차집합
- 속성의 개수 (차수)가 같음
- 서로 대응되는 속성의 도메인이 같음
- 속성의 이름은 달라도 됨
- 중복된 결과는 제거
- 합병 가능
-
Join (⨝)

- R ⨝c S=σc(R XS) (카티션 프로덕트, SELECT로 구성 가능 ⇒ 복합 연산자)
- c는 Condition(조건)이고 Θ(<, >, =, <> 등) 비교 연산자가 들어갈 수 있음
- 동등 조인(Equijoin) : S1⨝ sid R1 (조건 조인의 특수한 경우 조건 C에는 등식만 포함된다, 중복되는 것도 보여줌)
- 자연 조인(Natural join) : S1⨝ R1 (동등 조인에서 공통된 속성을 제거)
- Semi Join (⋉) : 릴레이션의 S의 조인 속성으로만 구성(프로젝트)한 릴레이션을 릴레이션 R에 자연 조인하는 것
- Outer Join : 매칭이 안 된것들을 매칭시키고 싶을 때 사용
-
Expressing A/B Using Primitive Operators
- A/B의 경우 B의 일부 y값으로 ‘실격’되지 않은 모든 x값을 계산한다 ⇒ 만약 우리가 B에서 y값을 붙여서 A에 없는 xy 튜플을 얻는다면 x값은 자격이 없다 Disqualified x values : πX((πX(A) X B) A) Qualified x value = πx(A) Disqualified x value A/B = πx(A) disqualified x values = πx(A)- πx((πx(A) X B) A)
- Division은 프로젝트, 카티션 프로덕트,차집합 3개의 기본 연산자로 구성 가능(복합 연산자)
3. 정리

