데이터베이스로부터 정보를 얻거나, 저장하는 데 사용하는 두 가지 방식의 '데이터 언어'가 있다.
- 절차적 언어 : Relational Algebra (관계 대수). 원하는 결과를 찾기 위해서 데이터의 처리 과정을 구체화해야 한다.
- 비절차적 언어 : Relational Calculus (관계 해석). 원하는 결과만 구체화하고, 어떻게 찾을지는 필요하지 않다.
원하는 데이터를 얻기 위해서 릴레이션에 필요한 쿼리(Query)를 수행할 때 사용한다.
데이터를 쉽고 빠르고 정확하게 얻기 위해 사용되며, 절차적 또는 비절차적 언어로 모든 쿼리를 기술할 수 있으면 데이터 언어를 관계적으로 완전(Relationally Complete)하다고 할 수 있다.
Relational Algebra, 관계 대수는 절차적 언어로서, 릴레이션에서 튜플을 얻거나 조작하기 위한 기본적인 연산들의 집합이다.
각 연산은 하나 이상의 릴레이션을 피연산자로 사용하여, 새로운 릴레이션을 반환한다. 또 여러 연산들이 chain 형태로 연결되어 더 복잡한 연산을 만들 수 있다.
출처: https://rebro.kr/146 [Rebro의 코딩 일기장:티스토리]
순수 관계 연산자
1. 셀렉트
2. 프로젝트
3. 조인
4. 디비전
셀렉트
말그대로 가지고 오는 것, 검색하는 것이다.
릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만든다
릴레이션의 행(가로)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 한다.
프로젝트
내가 필요한 속성만 취하는 것, 수직 연산자이다.
릴레이션의 열(세로)에 해당하는 애트리뷰트를 추출하므로 수직 연산이라고 한다.
셀렉트 (조건 연산, 수평연산) 먼저 수행 후
프로젝트 (수직 연산) 수행하여 name, tot 속성만 가져옴
조인
두개의 테이블을 공통 속성을 중심으로 하나로 연결시킨다
세타조인, 동등조인, 자연조인, 세미조인, 외부조인 등등 종류가 다양하다
관계 연산자가 사용되는 것이 세타조인이고, =이 있는 것이 동등조인이다
표기식 : 테이블 두개와 연산자, 테이블 속성 두개로 이루어진다
중복된 것이 나올 필요가 없음 → 중복된 필드를 제거해서 한개만 남겨놓는 조인이 네추럴 조인(자연 조인)이다.
조인하려는 테이블에 반드시 같은 속성명이 있어야 하고 도메인이 같아야 한다.
디비전
조건에 설정된 필드는 제외하고, 그 조건에 해당하는 행을 가져온다. (등급을 제외하고 가져온다)
- 1번 ⇒ 제품이름은 X 우동, 만두를 모두 가진 행을 찾겠다는 뜻
- 2번 ⇒ 제품이름, 제조업체는 X 만두 혹은 한양인 행을 찾겠다는 뜻
관계 대수와 관계 해석
SQL은 관계 대수에 대한 성격과 관계 해석에 대한 성격을 모두 가지고 있는 혼합 데이터 언어이다.
관계 대수와 관계 해석을 비교해보자면, 관계 대수는 그 과정과 순서가 중요했고 어떻게 유도하는가가 중요한 절차적인 것이 관계 대수인데 관계 해석은 단순히 결과값만 내보내는 비 절차적인 특징을 가지고 있다. 답만 보여주는 것이다.
데이터베이스를 처리한다는 면에서는 관계 대수와 관계 해석은 동등하다. 관계 대수로 표현한 것을 관계 해석으로 나타낼 수 있고 관계 해석으로 나타낸 것을 관계 대수로 나타낼 수 있다
'컴퓨터 일반 > 데이터베이스론' 카테고리의 다른 글
회복과 동시성제어 (0) | 2024.10.15 |
---|---|
정규화 (0) | 2024.10.15 |
데이터베이스론 정리 (2) | 2024.10.15 |