간단 지식/Database

05. 관계대수 - select, project, join

납작한돌맹이 2020. 1. 19. 22:50
반응형

DB에 데이터를 저장한 후 사용을 하려 할 때 다들 멈칫할 것이다. 내가 필요한 데이터는 이 정도뿐인데 DB에 저장된 데이터는 방대하기 때문이다. 그래서 생긴 것이 관계 데이터 연산을 위한 관계 데이터 언어인 '관계대수'라는 것이다. 관계 데이터 언어는 정형어로써 절차 언어인 관계대수와, 비절차 언어인 관계해석으로 구분된다. 우리가 조명할 관계대수는 일반 집합 연산자와 순수 관계 연산자로 구분되는데 말 그대로 일반 집합 연산자는 집합에, 순수 관계 연산자는 관계에 적용된다. 참고로 절차언어라는 의미는 how와 what을 명세하고, 비절차적 언어는 what만 명세한다.

 

일반 집합 연산자에는

합집합, 교집합, 차집합, 카티션 프로덕트(곱집합)

이 해당된다.

차집합을 제외한 연산자들은 결합법칙, 교환법칙이 성립한다.

곱집합을 제외한 피연산자들의 차수는 동일해야하고, 대응되는 attribute 쌍끼리는 도메인이 동일해야 한다.

즉, 두 relation의 attribute 쌍이 같아야 한다는 의미이다.

순수 관계 연산자에는

select, project, join, division

이 해당된다.

상세 내용은 이미지로 대체하겠다. tistory에는 이 연산자들에 해당하는 특수기호들을 제공하지 않는다ㅜㅜ

각각의 개념들을 정리해두었는데 가장 좋은 습득방법은 역시 문제를 푸는 것 외에는 없는것 같다. 아래에 예제 문제를 몇가지 적어두겠다. 정답이 궁금한 사람은 언제든지 댓글로 물어보면 알려주겠다.

 

문제를 풀 때 이전 글에 예시로 올라온 relation database를 보고 풀면 된다.

1) 모든 학생의 '이름'과 '학과'를 검색하라

2) 과목번호가 3인 과목에 등록한 학생의 '이름'과 '성적'을 검색하라 

3) 학점이 2인 '과목'을 검색하라

4) 모든 과목을 수강한 학생의 '학번'과 '이름'을 검색하라

5) 학번이 '600', 이름이 '도도', 학년이 '3', 학과가 '컴퓨터공학과'인 학생을 학생 relation에 삽입해라

6) 과목명이 '공학수학'인 과목을 삭제하라

 

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형