반응형
관계 데이터 모델
관계 데이터 모델에서 지원하는 언어는 총 2가지가 있다.
- 관계 해석 - 원하는 데이터만 명시하고 질의를 "어떻게 수행할 것인가"는 명시하지 않는 선언적 언어
- 관계 대수 - "어떻게 질의를 수행할 것인가"를 명시하는 절차적 언어
관계 대수 (Relation Algebra)
- 릴레이션들을 다루는 연산들
- 기존의 릴레이션들로부터 새로운 릴레이션을 생성함.
- 연산자들을 사용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있음.
기본적인 연산자들의 집합으로 이루어짐. - 결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있음.
- 단일 혹은 두 개의 테이블들을 입력 받아 결과 테이블을 생성.
- 집합 연산을 토대로 만든 것이 관계 대수이며, 기본적으로는 집합 연산자에 속함.
- 특징
셀렉션 (Selection)
- 릴레이션 R에서 어떤 선택 조건을 만족하는 튜플들을 선택(원하는 데이터를 수평적으로 도출)
- 결과 릴레이션은 R과 동일한 애트리뷰트(속성)을 가짐
프로젝션 (Projection)
- 한 릴레이션의 속성들의 부분 집합을 구함(원하는 데이터를 수직적으로 도출)
- 중복 튜플 존재 X
합집합 (Union)
- 릴레이션1에 있거나, 릴레이션2에 있는 튜플들로 이루어진 릴레이션을 반환
- 결과 릴레이션에서 중복된 튜플들을 제거
교집합 (Intersection)
- 릴레이션1과 릴레이션2에 동시에 속하는 튜플들로 이루어진 릴레이션
차집합 (Relative Complement)
- 릴레이션R과 릴레이션S에 대해 R에는 속하지만 S에는 속하지 않은 튜플들로 이루어진 릴레이션
카티션 프로덕트 (카티션 곱 연산자(Cartesian Product))
- 카디널리티가 i인 릴레이션 R(A1, A2, ... An)과 카디널리티가 j인 릴레이션 S(B1, B2, ... Bn)의 카티션 곱 R X S는
차수가 n+m이고 카디널리티가 i*j이고, 속성이 (A1, A2, ... An, B1, B2, ... Bn)이다 - R과 S의 튜플들의 모든 가능한 조합인 릴레이션으로, 카티션 곱의 결과 릴레이션은 크기가 매우 클 수 있다.
- 유용하지 않음(보통 카티션 곱의 일부분만 원하기 때문)
디비전 (Division)
- 차수가 n+m인 릴레이션R 과 차수가 m인 릴레이션S 의 디비전 R / s는 차수가 n이 되고,
S에 속하는 모든 튜플 u에 대하여 tu가 R에 존재하는 튜플 t들의 집합
릴레이션R % 릴레이션S 로 표현
조인(Join)
- 두 개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자이다.
관계형 데이터베이스에서 두 개 이상의 릴레이션들의 관계를 다루는데 매우 중요한 연산자 - 세타 조인, 동등 조인, 자연 조인, 외부 조인 등이 있다.
오늘은 이렇게 데이터베이스의 관계대수에 대해 알아보았습니다.
이외에 전체적인 CS주제들은 https://github.com/HongEunho 와 https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.
반응형
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 정규화(Normalization)란 (0) | 2021.11.11 |
---|---|
데이터베이스 조인(Join) 정리 (0) | 2021.11.10 |
데이터베이스 키(key)의 개념 및 종류 (0) | 2021.11.09 |
데이터베이스(DB) 용어 및 기초개념 정리 (0) | 2021.11.09 |