코딩일기/자격증

[정보처리기사] 관계대수와 관계해석 | 디비전 연산(÷) 예제와 문제 풀이 | 정보처리기사 실기 기출문제

jhy_2023 2024. 11. 12. 09:02
728x90
반응형

1. 관계대수의 개념

관계대수는 데이터베이스에서 원하는 데이터를 찾기 위한 절차적 언어입니다. 데이터를 어떻게 가져올지 절차적으로 정의하는 연산자 집합으로, 사용자가 데이터베이스에서 원하는 데이터를 절차적인 방식으로 질의합니다.
관계대수는 기본적으로 순수 관계 연산자일반 집합 연산자로 나눌 수 있습니다.

📌 관계대수의 특징

  • 절차적 언어: 관계대수는 연산 순서에 따라 데이터를 가져오는 방법을 정의하기 때문에 절차적입니다.
  • 과정 중심: 원하는 데이터를 얻기 위해 어떤 과정을 거쳐야 하는지 명확히 지정합니다.
반응형

📌 순수 관계 연산자

RDB(관계형 데이터베이스)에서만 사용하도록 특별히 정의된 연산자입니다. 주로 SELECT(σ), PROJECT(π), JOIN(⨝), DIVISION(÷) 등이 있으며, 관계형 데이터베이스의 테이블(릴레이션) 간 데이터 조회와 조작을 위해 고안되었습니다.

연산 기호 설명 
SELECT σ - 조건을 만족하는 튜플(열)을 선택하는 연산입니다. 수평적 연산으로, 특정 조건을 만족하는 데이터 행을 가져옵니다.
- 릴레이션에서 조건을 만족하는 수평적 부분 집합(튜플)을 구하기 위한 연산을 말한다.
PROJECT π - 선택된 속성(행, 컬럼)에 대한 값들로 구성된 새로운 관계를 반환하는 연산입니다. 수직적 연산으로 특정 열만 선택합니다.
- 프로젝트 연산은 릴레이션에서 수직적 부분 집합(속성의 값)을 구하는 연산으로 원하는 속성만 추출하기 위한 연산이다.
JOIN ▷◁ - 두 관계를 결합하여 관련된 정보를 하나의 관계로 연결하는 연산입니다. 조인된 테이블의 공통 속성을 기준으로 데이터를 연결할 수 있습니다.
- 두 테이블로부터 조건에 맞는 관련된 튜플들을 하나의 튜플로 결합하여 하나의 테이블로 만드는 연산을 말한다.
DIVISION ÷ - 한 관계의 튜플이 다른 관계의 모든 튜플과 관계를 가질 때 해당 튜플을 선택합니다. 예를 들어, A와 B라는 두 테이블에 대해 A DIVISION B는 B의 조건을 만족하는 튜플을 A에서 추출하는 연산입니다.
- A,B 두 테이블에 대해 A DIVISION B는 B 테이블의 조건을 만족하는 튜플들을 테이블 A 에서 추출하는 연산이다.

 


📌 일반 집합 연산자

수학의 집합 이론에서 유래한 연산자입니다. 합집합(∪), 교집합(∩), 차집합(-), 교차곱(×)와 같은 연산자로, 데이터 집합의 요소를 포함하거나 제외하여 새로운 결과 집합을 생성할 때 사용됩니다.

연산 기호 설명 
합집합
(UNION)
두 릴레이션(테이블)에서 모든 튜플을 합쳐서 반환하는 연산으로, 중복되는 튜플은 제거합니다.
교집합
(INTERSECTION)
두 관계의 공통 튜플만을 반환합니다.
차집합
(DIFFERENCE)
- 한 관계에 있는 튜플 중 다른 관계에는 없는 튜플을 반환합니다.
교차곱 (카티션 프로덕트)
(CARTESIAN PRODUCT)
× 두 관계의 모든 가능한 튜플 조합을 반환합니다.
728x90

2. 관계해석의 개념

관계해석은 데이터베이스에서 원하는 결과가 어떤 조건을 만족해야 하는지를 비절차적으로 기술합니다. 여기서 "무엇"을 원하는지 기술하는 것이며, 데이터를 가져오는 "방법"은 데이터베이스 시스템이 결정하게 됩니다. 관계해석은 절차를 설명하는 대신 결과의 조건만 지정하므로 비절차적 특성을 가집니다.

관계해석에는 **튜플 관계해석(TRC)**과 도메인 관계해석(DRC) 두 가지 유형이 있습니다.

📌 관계해석의 특징

  • 비절차적 언어: 관계해석은 데이터를 가져오는 과정이 아닌 조건을 기술하여 원하는 데이터를 정의합니다.
  • 조건 중심: 데이터가 충족해야 할 조건을 명시할 뿐, 그 조건을 만족하는 데이터를 어떻게 가져올지는 데이터베이스 엔진이 알아서 수행합니다.

2020냔 3회 정보처리기사 실기 기출문제

문제

다음에서 설명하는 관계 대수 연산의 기호를 쓰시오.

  • 릴레이션 A, B가 있을 때 릴레이션 B 조건에 맞는 것들만 릴레이션 A에서 튜플을 꺼내 프로젝션하는 관계 대수 기호
  • 릴레이션 A에서 릴레이션 B의 모든 조건을 만족하는 튜플을 제외한 후 프로젝션하는 연산자이다.

정답

÷

해설

이 문제에서의 핵심은  릴레이션 A에서 릴레이션 B 조건에 맞는 튜플을 꺼내 프로젝션하는 관계 대수 연산입니다.
이 연산은 두 릴레이션 간의 조건을 기반으로 원하는 데이터를 추출하는 데 사용됩니다.
이 연산에 사용되는 관계 대수는 ÷ (Division, 디비전 연산)입니다.


1. 디비전(÷) 연산 기본 개념

디비전 연산은 두 릴레이션 간의 특정 조건에 맞는 공통된 요소만을 추출할 때 사용됩니다. 특히, 릴레이션 A와 B가 있을 때, 릴레이션 A의 튜플 중 릴레이션 B의 모든 값과 일치하는 항목들만 추출하는 용도로 쓰입니다.

  • 릴레이션 A: 전체 데이터를 포함하는 릴레이션
  • 릴레이션 B: 조건을 지정하는 기준 릴레이션 (부분 속성을 가진 릴레이션)

이때, 디비전 연산은 A ÷ B 형식으로 사용되어, A의 속성 중 B에 해당하는 조건을 충족하는 튜플만 추출합니다.


2. 디비전(÷) 연산 예시

1. 학생의 수강 정보가 들어 있는 수강 테이블과 필수 과목 정보가 담긴 필수과목 테이블이 있다고 가정합니다.
수강 테이블 (A)는 학생들이 어떤 과목을 수강했는지를 기록한 릴레이션입니다.
필수과목 테이블 (B)는 필수로 들어야 하는 과목 목록을 기록한 릴레이션입니다.
필수 과목인 수학과 영어를 모두 수강한 학생들을 찾으려면 수강 테이블 A에서 필수과목 테이블 B에 있는 모든 조건을 만족하는 학생ID를 추출해야 합니다.

2. 디비전 연산 적용:

  • 디비전 연산 A÷B릴레이션 A의 튜플 중에서 릴레이션 B의 조건을 모두 만족하는 튜플을 추출합니다
  • A ÷ B = 필수 과목을 모두 수강한 학생ID를 찾아냅니다.

3. 결과:

  • 필수과목 수학과 영어를 모두 수강한 학생ID는 1과 2입니다.
    • 학생ID 1: 수학, 영어 → 필수 과목 모두 수강
    • 학생ID 2: 수학, 영어 → 필수 과목 모두 수강
    • 학생ID 3: 수학만 수강 → 필수 과목 중 일부만 수강 (제외)
    • 학생ID 4: 영어만 수강 → 필수 과목 중 일부만 수강 (제외)
  • 필수 과목을 모두 수강한 학생의 ID만 추출하면, 최종 결과는 다음과 같습니다


디비전 연산 ÷ 특정 조건을 모두 만족하는 데이터를 찾을 때 매우 유용하며, 데이터베이스에서 조건에 따라 필터링된 정보를 추출하는 데 사용됩니다. 이 연산은 관계 대수에서 특정 조건을 만족하는 튜플을 프로젝션하기 위한 연산으로 자주 활용됩니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형