2-3. Relational Algebra
관계 대수는 관계형 데이터 모델의 일부이며, 지금까지 정의한 관계, 제약 사항에 대한 연산을 제공한다.
관계 대수는 위의 6개의 기본적인 연산이 있다.
입력으로 하나 또는 두 개의 관계를 가지며, 결과물로 새로운 관계를 생성한다.
상용 데이터베이스는 시스템 관계 대수를 직접적으로 사용자에게 지원하지 않는다. 상용 데이터베이스 시스템은 그 대신 SQL 언어를 사용자에게 지원한다.
✅선택(select) 연산
선택 연산의 기호는 σ(sigma)이며 그 옆에오는 p는 선택 조건을 의미한다 .
각 항은 and, or, not으로 연결이 가능하다.
그림을 예시로 알아보자면 A와 B의 조건이 같고, D는 4보다 커야 한다는 것이다.
그럼 σA=B^D>4의 결과는 두 가지 터플이 나오게 되는 것이다.
✅투영(project) 연산
투영 연산은 투영 후에 중복된 터플은 제거되어, 결과 관계에는 동일한 터플이 두 번 이상 나타나지 않는다.
투영 연산의 기호는 Π(pi)이며, 보고자 하는 속성을 아래 첨자로 표시한다.
ΠA,B의 결과를 보면, 중복되는 두 번째 터플은 제외된 것을 확인할 수 있다.
✅합집합(union) 연산
관계 대수의 집합 연산 관점은 관계를 터플을 원소로 가지는 집합으로 본다.
위 그림은 r과 s의 합집합을 표현한 것이다.
예시에서도 알 수 있듯이, 합집합 연산은 일반적인 합집합 정의와 동일하다.
✅차집합(set difference) 연산
차집합 연산에서 주의해야 할 점은, r-s와 s-r의 연산 결과는 다르다는 것이다.
✅카티시안곱(Cartesian product) 연산
카티시안곱의 결과물은 입력 관계에 속하는 터플의 모든 가능한 조합을 결과 관계로 산출한다.
두 개의 입력 테이블에 동일 속성이 존재하면, 재명명(rename) 연산을 이용해 동일한 속성 이름이 없도록 해야 한다.
왜냐하면 입력 테이블에 동일 속성 이름이 존재하면 natural join 연산이 되기 때문이다.
✅재명명(rename) 연산
재명명은 단순히 테이블 이름이나 속성 이름은 변경하는 연산이며, 수학 기호는 ρ(rho)이다.
입력 관계가 E이면, 이를 아래 첨자에 표시된 바와 같이 재명명하여 결과 관계를 도출한다.
아래 첨자로 표현되는 명시부에서 X는 관계명, A1, .., An은 속성명을 나타낸다.
2-4. Additional Relational Algebra
✅할당 연산
할당 연산자는 복잡한 질의문을 작성할 때 중간 결과 표현을 임시로 저장할 수 있으므로 유용하게 사용할 수 있다.
✅교집합 연산
위처럼 교집합 연산자는 2회 차집합 연산 적용으로 표현이 가능하므로 확장 관계 연산자에 속한다.
✅자연 조인(Natural Join)
자연 조인은 입력 테이블에 대하여, 첫째 카타시안곱을 수행하고, 둘째 조인 조건을 이용하여 선택 연산을 수행하고, 셋째 조인 조건에 언급된 속성을 이용하여 투영연산을 수행한다.
예시를 살펴보자.
테이블 R과 S속성에서 같은 이름의 소성이 조인 속성이 된다.
위의 예시에서는 B속성과, D속성이 조인 속성인 것이다.
즉, 결과에서는 관계에 한 번만 나오게 된다.
터플 개수의 경우, 두 테이블 모두 5개씩 있기 때문에 원래 25개가 나와야 하지만 선택 연산에 의해서 5개 터플만 선택되었다.
자연 조인 시에 조인 조건을 명시하지 않으면, 두 개 테이블에서 동일 이름을 가지는 속성 간에 자연 조인을 수행한다.
이러한 자연 조인은 데이터베이스 시스템에서 질의어 최적화 과정에서 사용된다.
✅나눔 연산(Division Operation)
나눔 연산의 결과 관계는 공통 속성이 제거된 속성을 가지며, 결과 관계에 속하는 터플은 S관계의 공통 속성에 속하는 모든 터플을 가지는 R관계 터플이다.
예시를 통해 파악하자.
위에서 말했다시피, 속성은 공통 속성이 제거된 속성이라고 했기 때문에 B속성이 공통이이서 A속성만 남게 된다.
터플은 s1의 터플인 1과 2를 모두 다 가지고 있는 α와 β가 되는 것이다.
만약에 위 그림처럼 두 개의 속성을 가진 테이블로 나눔 연산을 할 경우 <a, 1>과 <b, 1>을 모두 가진 터플을 가지게 된다.
추가로, 나눔 연산이 기본 연산이 아닌 이유는 나눔 연산은 카티시안곱, 투영, 차집합을 사용하여 표현이 가능하기 때문이다!
'3-2 학기 > Database' 카테고리의 다른 글
[데이터베이스] Ch6 RDB functionalities (0) | 2024.11.27 |
---|---|
[데이터베이스] Ch5 SQL II (0) | 2024.10.15 |
[데이터베이스] Ch3 SQL I (1) | 2024.10.12 |
[데이터베이스] Ch2 Relational Data Model (1) (1) | 2024.10.08 |
[데이터베이스] Ch0 Getting Started Database (0) | 2024.10.08 |