9. 관계 대수와 관계 해석
9. 관계 대수와 관계해석 (23. 11. 17)
관계 대수
- 관계 대수식(Relational Algebra Expression)은 연산자들의 모임을 사용해서 구성된 대수식
- 하나 또는 두 개의 릴레이션을 파라미터로 하나의 릴레이션 인스턴스를 반환
- 연산자들을 조합해서 복잡한 질의를 만들기 쉬움
- 릴레이션, 단항(Unary) 연산자와 이항(Binary) 연산자로 순환적으로 정의
- 셀렉션, 프로젝션, 합집합, 차집합, 카티션 프로덕트등의 기본 연산자의 조합으로 구성
- 관계 질의는 연산자의 적용 순서를 통해 원하는 답을 구하는 계산 절차를 한 단계씩 묘사한 것
- 대수식은 질의 수행을 위한 계획으로 생각할 수 있음
- 관계 시스템은 대수식을 질의 수행 계획으로 표현하는데 이용
셀렉션과프로텍션
- 관계에 있어 튜플을 선택할수 있는 연산자 시그마( δ )
- 필드들을 추출(Projection)할 수 있는 연산자 파이 ( π )
- 단일 관계에 있어 데이터 조작하는데 사용
파일럿번호 | 파일럿이름 | 등급 | 나이 |
---|---|---|---|
13 | 홍길동 | 1 | 44 |
32 | 이순신 | 10 | 44 |
4 | 안중근 | 7 | 32 |
아래의 관계 대수식은
δ등급>5(Pilot1)
아래와 같은 릴레이션을 산출
파일럿번호 | 파일럿이름 | 등급 | 나이 |
---|---|---|---|
32 | 이순신 | 10 | 47 |
44 | 안중근 | 7 | 32 |
집합 연산
- 합집합, 교집합, 차집합, 카티션 프로덕트와 같은 표준 집합 연산
합집합(Union, ∪)
인스턴스 R이나 인스턴스 S 모두에 속하는 투플들을 포함하는 릴레이션 인스턴스를 만듦
R과 S는 합병 가능해야 하며, 결과 스키마는 R의 스키마와 동일
교집합(Intersection, ∩)
R ∩ S는 양쪽에 함께 속하는 모든 투플로 구성된 릴레이션 인스턴스를 만듦
차집합(Set-different, – )
R – S는 R에는 속하고 S에는 속하지 않는 투플로 구성된 릴레이션 인스턴스를 만듦
카디션 프로덕트(Cartisian Product, X )
R X S는 R의 모든 필드와 S의 모든 필드를 순서대로 가지는 스키마의 릴레이션 인스턴스를 만듦
R X S는 r∈R, s∈S 쌍에 대하여 투플 <r, s>를 하나씩 가짐
이름 바꾸기
- 릴레이션에서 필드의 이름을 변경(Renaming)할 수 있는 연산자 로우( ρ )
- 관계 대수식 안에서 이름 충돌이 발생할 수 있음
- 관계 대수식 안에서 릴레이션 인스턴스의 이름을 주는 것이 편리함
- 긴 대수식을 작은 부분으로 나누어 결과 인스턴스에 이름을 줄 수 있도록 하는 것이 편리함
Join
- 둘 이상의 릴레이션으로 부터 정보를 조합하는 연산 (⋈)
- 유도된 연산으로, 카티션 프로덕트와 프로젝션 연산을 함께 실행하여 얻은 결과와 동일
종류 | 기호 | 기능 |
---|---|---|
동등 조인 | ⋈ | 두 릴레이션간의 값을 가진 집합 |
세타 조인 | ⋈θ | 두 릴레이션 간의 비교 조건에 만족하는 집합 |
자연 조인 | ⋈N | 동등 조인에서 중복 속성을 제거 |
세미 조인 | ⋉ and ⋊ | 자연 조인 후 기호의 열린쪽의 속성을 제거 |
외부 조인 Left | ⟕ | 자연 조인 후 왼쪽의 모든 값을 추출, 값이 없을 경우 한쪽의 값을 NULL로 채용 |
외부 조인 Right | ⟖ | 자연 조인 후 오른쪽의 모든 값을 추출, 값이 없을 경우 한 쪽의 값을 NULL로 채용 |
외부 조인 Full | ⟗ | 자연 조인 후 양쪽의 모든 값을 추출, 값이 없을 경우 한 쪽의 값을 NULL로 채용 |
Quiz
관계 대수 질의
아래와 같은 릴레이션 스키마가 있고,
파일럿(파일럿번호: 정수, 파일럿이름: 문자열, 등급: 정수, 나이: 실수) 비행기(비행기번호: 정수, 비행기이름: 문자열, 비행기종류: 문자열) 운항(파일럿번호: 정수, 비행기번호: 정수, 운항일자: 날짜)
각 릴레이션의 인스턴스가 아래와 같다고 할 때,
Pilot1
파일럿번호 파일럿이름 등급 나이 13 홍길동 1 44 32 이순신 10 44 44 안중근 7 32 AirCraft
비행기번호 비행기이름 비행기종류 101 에놀라게이 폭격기 102 톰캣 전투기 102 블랙버드 정찰기 Flight
파일럿번호 비행기번호 운항일자 13 101 2022-10-09 44 102 2022-11-23
비행기 101을 운항하는 파일럿의 이름을 구하세요.
π파일럿이름, Aircraft(δ비행기 번호 = 101)
문제 1을 응용하여 개명 연산을 사용하여 각 대수식을 작은 부분으로 분할한 다음 합쳐 연산하는 관계 대수식을 작성하세요.
ρ(101번비행기(σ비행기 번호 = 101) ∪ ρ(101번비행기이름(π파일럿이름)
전투기를 운항하는 파일럿의 이름을 구하세요.
δ비행기 종류(전투기), π파일럿이름
관계 해석
**T(투플 변수) p(T)(Formula - T를 묘시하는 식) }** 형식으로 투플 간의 관계를 해석 - 투플 변수
- 어느 릴레이션 스키마의 투플들을 값을 갖는 변수.
- 주어진 투플 변수에 대입되는 값들은 모두 동일한 개수와 타입의 필드들을 가짐
- Rel이 릴레이션 이름이고 R과 S를 투플 변수로, a를 R의 한 애트리뷰트로, b를 S의 한 애트리뷰트라고 하고, op를 집합 { <, >, =, ≤, ≥, ≠ }에 속하는 연산자라고 할 때, 원자식은
- R ∈ Rel
- R.a op S.b
- R.a op 상수 또는 상수 op R.a
- 식 (Formula)은 다음 중 하나로 순환적으로 정의
- 원자식
- ㄱp, p∧q, p∨q, 또는 p ⇒q
- ∃R(p(R)). 이때 R은 투플 변수
- ∀R(p(R)). 이때 R은 투플 변수