관계 데이터 연산의 개념
관계 데이터 모델에서 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로 데이터 언어의 역할을 한다.
- 연산은 관계 대수와 관계 해석으로 나뉘는데 관계 대수는 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 것이고, 관계 해석은 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 것이다.
- 관계 대수와 관계 해석은 기능과 표현력은 동등하기 때문에 관계 대수로 기술된 요구를 관계 해석으로 변환할 수 있고, 그 반대로 변환할 수 있다.
- 데이터에 대한 처리 요구를 질의라고 한다.
- 관계 대수와 관계 해석은 실제로 사용되지는 않는 개념적 언어이지만 새로운 데이터 언어를 검증하는데 쓰인다.
- 관계 대수와 관계 해석으로 기술할 수 있는 모든 질의를 새로운 데이터 언어로 기술할 수 있으면 관계적으로 완전하다고 하며 검증되었다고 판단한다.
관계 대수
관계 대수의 개념과 연산자
- 관계 대수는 원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어이다.
- 관계 대수에서는 연산자와 피연산자가 모두 릴레이션이며 이러한 특성을 패쇄 특성이라 한다.
- 관계 대수의 대표적인 8개 연산자는 특성에 따라 일반 집합 연산자와 순수 관계 연산자로 나뉜다.
- 일반 집합 연산자는 릴레이션이 투플의 집합이라는 개념을 이용한다.
- 순수 관계 연산자는 릴레이션의 구조와 특성을 이용한다.
일반 집합 연산자
- 일반 집합 연산자의 제약 조건
- 일반 집합 연산자는 연산을 위해 피연산자가 2개 필요하다.
- 합집합, 교집합, 차집합은 피연산자인 2개의 릴레이션이 합병 가능 해야 한다.
- 합병 가능 조건
- 두 릴레이션의 차수가 같다 -> 두 릴레이션의 속성 개수가 같다.
- 2개의 릴레이션이 서로 대응되는 속성의 도메인이 같다. 단, 도메인이 같으면 속성의 이름은 달라도 된다.
- 카티션 프로덕트는 합병 가능 여부와 상관없이 연산이 가능하다.
- 합집합
- 합집합 연산의 결과는 중복 투플이 존재할수 없다.
- 합집합 연산의 결과는 R과 S의 차수와 같다.
- 합집합 연산의 결과의 카디널리티는 R과 S의 투플의 개수를 더한 것과 같거나 작다.
- 합집합 연산은 합집합 연산을 바꾸어 해도 결과가 같다는 교환 특징과 어떤 합집합 연산을 먼저 수행해도 결과가 같다는 결합 특징이 있다.
- 교집합
- 교집합 연산의 결과는 R과 S의 차수와 같다.
- 교집합 연산의 카디널리티는 R과 S의 카디널리티 보다 같거나 적다.
- 교집합 연산은 교환 특징과 결합 특징이 있다.
- 차집합
- 차집합 연산의 결과는 R과 S의 차수와 같다.
- 차집합 연산의 카디널리티는 R이나 S의 카디널리티 보다 같거나 적다.
- 차집합 연산은 교환 특징, 결합 특징이 없다.
- 카티션 프로덕트
- 카티션 프로덕트 연산의 결과는 릴레이션이름.속성이름 형식으로 표기된다. 만약 R의 속성과 S의 속성의 이름이 다르다면 릴레이션이름은 생략해도 된다.
- 카티션 프로덕트 연산의 결과는 R과 S의 차수를 더한것과 같다.
- 카디션 프로덕트의 카디널리티는 R과 S의 카디널리티를 곱한것과 같다.
- 카디션 프로덕트 연산은 교환 특징과 결합 특징이 있다.
순수 관계 연산자
- 셀렉트
- 셀렉트 연산은 하나의 릴레이션에서 주어진 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성한다.
- 셀렉트 연산의 결과는 수평적 부분집합을 생성한 것과 같다.
- 셀렉트 연산의 조건식은 비교 연산자와 논리 연산자를 사용하여 구성할 수 있다.
- 셀렉트 연산의 표현식
![]() |
![]() |
- 비교 연산은 도메인이 일치해야 한다.
- 셀렉트 연산은 교환 특징이 있다.
- 프로젝트
- 프로젝트 연산은 릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성한다.
- 프로젝트 연산의 결과는 수직적 부분집합을 생성한 것과 같다.
- 프로젝트 연산의 표현
![]() |
![]() |
- 프로젝트 연산은 중복되는 투플이 없다.
- 조인
- 조인 연산은 릴레이션 하나로 원하는 데이터를 얻을 수 없어 관계가 있는 여러 릴레이션을 함께 사용해야 할 때 사용한다.
- 조인 연산은 두 릴레이션이 공통으로 가지고 있는 속성을 조합하여 결과 릴레이션을 구성한다.
- 조인 연산의 결과는 두 릴레이션에 카티션 프로덕트 연산을 수행하고 조인 속성의 값이 같은 조건을 만족하는 투플을 반환하는 셀렉트 연산의 결과와 같다.
- 세타 조인
- 세타 조인은 주어진 조건을 만족하는 모든 투플을 연결한 새로운 투플로 결과 릴레이션을 구성한다.
- 세타 조인은 비교 연산자를 이용하여 다양한 조인 조건을 표현할 수 있다.
- 동등 조인
- 동등 조인은 세타 조인에서 연산자가 '=' 인 조인이다.
- 동등 조인은 두 릴레이션이 공통으로 가지고 있는 조인 속성이 두 번 나타난다.
- 자연 조인
- 자연 조인은 동등 조인의 결과 릴레이션에서 중복된 속성을 제거하여 조인 속성이 한 번만 나타나는 조인을 말한다.
- 조인 속성이 여러 개의 속성으로 구성되어 있는 경우에는 릴레이션 R과 S에서 속성 값의 쌍이 같은 투플만 조인 연산에 참여한다.
- 디비전
- 릴레이션 R과 S의 디비전 연산은 S의 모든 투플과 관련 있는 R의 투플로 결과 릴레이션을 구성한다.
- R이 S의 모든 속성과 도메인이 같은 속성을 포함하고 있어야 연산이 가능하다.
관계 대수를 이용한 질의 표현
확장된 관계 대수 연산자
- 세미 조인
- R과 S의 세미 조인 연산 결과는 S의 조인 속성으로만 구성한 릴레이션을 R에 자연 조인하는 것이다.
- 세미 조인은 릴레이션에서 자연 조인 연산에 참여할 수 있는 투플만 선택하여 결과 릴레이션을 구성한다.
- 세미 조인을 이용하면 검색에 필요한 속성을 미리 제거하여 조인 연산의 비용을 줄인다는 장점이 있다.
- 조인은 교환 특성이 없다.
- 외부 조인
- 외부 조인 연산은 R과 S의 두 릴레이션에서 자연 조인 연산을 수행할 때 조인 속성 값이 같은 투플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 모든 투플을 결과 릴레이션에 포함시킨다.
- 외부 조인은 결과 릴레이션으로 가져오고 싶은 릴레이션이 무엇이냐에 따라 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인으로 세분화할 수 있으며 필요한 외부 조인 연산을 선택하면 된다.
- 왼쪽 외부 조인(Left Outer Join)
- 왼쪽 외부 조인은 왼쪽에 있는 첫 번째 릴레이션에 존재하는 모든 투플을 결과 릴레이션에 포함시키고 아래와 같이 기호로 표현한다.
- 오른쪽 외부 조인(Right Outer Join)
- 오른쪽 외부 조인은 오른쪽에 있는 두 번째 릴레이션에 존재하는 모든 투플을 결과 릴레이션에 포함시키고 아래와 같이 기호로 나타낸다.
- 완전 외부 조인(Full Outer Join)
- 완전 외부 조인은 연산에 참여하는 두 릴레이션에 있는 모든 투플을 결과 릴레이션에 포함시키고 아래와 같이 기호로 나타낸다.
관계 해석
- 관계 해석은 처리를 원하는 데이터가 무엇인지만 기술하는 비절차적 언어로, 관계 데이터 연산의 한 종류이다.
Q & A
본 도서의 내용을 정리한것이 아닌 학습 스터디를 위해 제가 작성한 질답입니다.
사실과 다른 내용이 있다면 지적 부탁드립니다 :)
Q1 : 관계 대수와 관계 해석에 공통점과 차이점을 설명하고, 질의란 무엇인지 설명해 주세요.
관계 대수와 관계 해석의 공통점은 둘 다 원하는 결과를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 관계 데이터 연산이라는 것과 데이터를 처리하는 기능은 동일하다는 것입니다. 반면에 차이점은 관계 대수는 원하는 데이터를 얻기 위한 과정을 순서대로 기술하는 절차 언어이고, 관계 해석은 원하는 데이터가 무엇인지만 기술하는 비절차적 언어라는 것입니다. 이러한 관계 데이터 연산에서 데이터에 대한 처리 요구를 질의라고 합니다.
Q2 : 카디널리티와 카티션 프로덕트의 차이점이 무엇인지 설명해 주세요.
카디널리티는 한 릴레이션의 크기를 의미하며 투플의 개수와 같습니다. 반면에 카티션 프로덕트는 두 릴레이션의 각 투플을 모두 연결한 새로운 투플을 반환하는 일반 집합 연산입니다.
Q3 : 자연 조인이 무엇인지 설명해 주세요.
자연 조인이란 조인 연산의 일종으로, 두 릴레이션에서 조인 속성이 같은 투플끼리 연결하여 새로운 투플을 반환하는 동등 조인에서 중복되는 조인 속성을 제거한 연산입니다.
출처 : 김연희, 데이터베이스 개론 3판, 한빛아카데미(2022)
'Database' 카테고리의 다른 글
[데이터베이스 개론] Chapter8 - 데이터베이스 설계 (1) | 2023.05.13 |
---|---|
[데이터베이스 개론] Chapter7 - 데이터베이스 언어 SQL (1) | 2023.05.12 |
[데이터베이스 개론] Chapter5 - 관계 데이터 모델 (0) | 2023.04.25 |
[데이터베이스 개론] Chapter4 - 데이터 모델링 (0) | 2023.04.20 |
[데이터베이스 개론] Chapter3 - 데이터베이스 시스템 (0) | 2023.04.17 |