Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

관계 대수 기본 연산자 총정리 – 선택(σ), 추출(π), 교차곱, 합집합, 차집합, 이름 변경

관계 대수(Relational Algebra)는 절차적 질의 언어(procedural query language)로, 하나 이상의 릴레이션(관계)에 대해 연산을 수행한 결과를 단일 테이블/릴레이션 형태로 반환하는 데 사용됩니다. 이 글에서는 관계 대수의 기본 연산자들을 예제와 함께 자세히 살펴보겠습니다.

설명을 위해 다음 세 개의 릴레이션(테이블)을 사용합니다.

테이블 1: course (과목)

Course_idName
1Computer science
2Information Technology
3mechanical

테이블 2: students (학생)

Roll No.Nameaddressage
1RamDelhi18
2Rajuhyderabad20
4FaizDelhi22
5Salmanhyderabad20

테이블 3: Hostel (기숙사)

St. No.Nameaddressage
1RamDelhi18
2Akashhyderabad20
3nehaJhansi21

이제 이 릴레이션들에 대해 각종 연산을 수행하여 새로운 릴레이션을 만드는 방법을 하나씩 알아보겠습니다.

  • 선택 연산(Selection, σ) − 선택 연산자는 그리스 문자 σ(시그마)로 표현하며, 주어진 조건을 만족하는 튜플만 릴레이션에서 골라내는 데 사용됩니다. 즉, 조건에 해당하는 튜플만 결과에 포함됩니다.

문법

σ(조건)(릴레이션_이름)

예제

course_id가 1인 학생 선택
σ(course_id = 1)(student)

결과

Roll No.Nameaddressage
4FaizDelhi22
  • 추출 연산(Projection, π) − 추출 연산자는 π(파이)로 표현하며, 특정 릴레이션에서 원하는 열(컬럼)만 선택할 때 사용됩니다. 지정한 컬럼만 결과에 나타나며, 나머지 컬럼은 제외됩니다.

문법

π(column1, column2, …, columnn)(릴레이션_이름)

예제

기숙사에 있는 모든 학생의 번호와 이름 선택
π(st.no., name)(hostel)

결과

St. No.Name
1Ram
2Akash
3neha

추출 연산의 결과 행은 항상 중복이 제거됩니다. 예를 들어 같은 이름을 가진 학생이 둘 이상 있다면 중복된 행은 하나만 남습니다.

  • 교차곱(Cross Product, X) − 교차곱은 X 기호로 표현하며, 두 릴레이션을 결합(join)한 결과를 구할 때 사용됩니다. 교차곱에서는 첫 번째 릴레이션의 각 튜플이 두 번째 릴레이션의 모든 튜플과 짝을 이룹니다. 따라서 결과 릴레이션의 크기는 n×m이 되며, 여기서 n은 첫 번째 릴레이션의 튜플 수, m은 두 번째 릴레이션의 튜플 수입니다.

문법

relation1 X relation2

예제

course 테이블과 hostel 테이블의 교차곱을 구해 보겠습니다.

student X course

St. No.NameaddressageCourse_idName
1RamDelhi181Computer science
1RamDelhi182Information Technology
1RamDelhi183mechanical
2Akashhyderabad201Computer science
2Akashhyderabad202Information Technology
2Akashhyderabad203mechanical
3nehaJhansi211Computer science
3nehaJhansi212Information Technology
3nehaJhansi213mechanical
  • 합집합(Union, U) − 두 릴레이션 relation1과 relation2의 합집합은 relation1 또는 relation2에 속하는 모든 튜플을 포함하며, 양쪽 릴레이션에 모두 존재하는 튜플은 한 번만 나타납니다.

    또한 합집합을 구하려면 두 릴레이션이 동일한 도메인(속성 구조)을 가져야 하며, 이를 합병 호환(union compatible)이라고 합니다.

문법

relation1 U relation2

예제

student와 hostel의 합집합을 구해 보겠습니다.

student U hostel

Roll No.Nameaddressage
1RamDelhi18
2Rajuhyderabad20
4FaizDelhi22
5Salmanhyderabad20
2Akashhyderabad20
3nehaJhansi21
  • 차집합(Minus, -) 연산자 − 차집합은 - 기호로 표현합니다. relation1 - relation2의 결과는 relation1에는 있지만 relation2에는 없는 튜플들로 구성된 릴레이션입니다. 차집합 연산 역시 두 릴레이션이 합병 호환되어야 합니다.

문법

relation1 - relation2

예제

student - hostel 연산을 수행해 보겠습니다.

student - hostel

Roll No.Nameaddressage
2Rajuhyderabad20
4FaizDelhi22
5Salmanhyderabad20
  • 이름 변경(Rename, ρ) − 이름 변경 연산은 ρ(로)로 표현하며, 주어진 릴레이션을 새로운 이름으로 바꿀 때 사용됩니다. 복잡한 질의에서 중간 결과 릴레이션에 의미 있는 이름을 부여할 때 유용합니다.

문법

ρ(new_name, old_name)

마무리

지금까지 관계 대수의 여섯 가지 기본 연산자인 선택(σ), 추출(π), 교차곱(X), 합집합(U), 차집합(-), 이름 변경(ρ)을 살펴보았습니다. 이 연산들은 SQL의 WHERE, SELECT, JOIN, UNION, MINUS(EXCEPT), AS 등의 기능과 밀접하게 연관되어 있으며, 관계형 데이터베이스 질의 처리의 이론적 기반이 됩니다. 각 연산자의 동작 원리를 확실히 이해해 두면 실제 SQL 작성 능력 향상에도 큰 도움이 됩니다.