[목차]
1. Data Manipulation Languages (DMLs)
2. Relational Algebra
1. Data Manipulation Languages (DMLs)
데이터베이스로부터 정보를 얻거나, 저장하는 데 사용하는 두 가지 방식의 '데이터 언어'가 있다.
- 절차적 언어 : Relational Algebra (관계 대수). 원하는 결과를 찾기 위해서 데이터의 처리 과정을 구체화해야 한다.
- 비절차적 언어 : Relational Calculus (관계 해석). 원하는 결과만 구체화하고, 어떻게 찾을지는 필요하지 않다.
원하는 데이터를 얻기 위해서 릴레이션에 필요한 쿼리(Query)를 수행할 때 사용한다.
데이터를 쉽고 빠르고 정확하게 얻기 위해 사용되며, 절차적 또는 비절차적 언어로 모든 쿼리를 기술할 수 있으면 데이터 언어를 관계적으로 완전(Relationally Complete)하다고 할 수 있다.
2. Relational Algebra
Relational Algebra, 관계 대수는 절차적 언어로서, 릴레이션에서 튜플을 얻거나 조작하기 위한 기본적인 연산들의 집합이다.
각 연산은 하나 이상의 릴레이션을 피연산자로 사용하여, 새로운 릴레이션을 반환한다. 또 여러 연산들이 chain 형태로 연결되어 더 복잡한 연산을 만들 수 있다.
이전 게시글과 유사하게 다음과 같은 릴레이션이 주어져 있다고 하자.
1. Select Operation : $\sigma _{predicate}(R)$
Select operation은 릴레이션($R$)에서 조건($predicate$)을 만족하는 tuple들을 추출해주는 연산자이다.
하나의 릴레이션에 대해 수행하는 단항 연산이며, 조건들은 다른 연산자(and, or, not 등)들을 이용하여 더 복잡하게 구성할 수도 있다.
ex) $\sigma _{grade\; =\;3}(student)$
ex) $\sigma_{grade \leq 3 \;\wedge\; major \,=\, Physics}(student)$
2. Projection Operation : $\pi_{A1, A2, ..., An}(R)$
Projection Operation은 릴레이션($R$)에서 주어진 속성(Attribute)들만 포함하는 릴레이션을 반환한다. 하나의 릴레이션에 대해 수행하는 단항 연산이며, 중복되는 원소가 생기면 중복을 제거한다.
ex) $\pi_{Name, Grade}(student)$
ex) $\pi_{Grade, Major}(student)$
3. Union Operation : $(R \cup S)$
두 릴레이션의 합집합을 반환한다. R 또는 S 릴레이션에 들어있는 모든 튜플들을 포함한다.
입력으로 들어오는 두 릴레이션은 속성(Attribute)의 개수가 같고, 대응되는 필드들이 동일한 도메인(domain)을 가지고 있어야 한다. (이 성질을 합병가능(Union-compatible)이라고 한다)
ex) $(student \cup R)$
4. Intersection Operation : $ (R \cap S)$
두 릴레이션의 교집합을 반환한다. R과 S에 동시에 들어있는 튜플들의 집합을 릴레이션으로 반환한다.
마찬가지로 R과 S의 속성의 개수가 같고, 대응되는 필드들이 동일한 도메인을 가지고 있어야 한다.
ex) $ (student \cap R)$
5. Difference Operation : $(R - S)$
두 릴레이션의 차집합을 반환한다. R에 속해있으면서 S에 속해있지 않은 튜플들의 집합을 릴레이션으로 반환한다.
마찬가지로 R과 S의 속성의 개수가 같고, 대응되는 필드들이 동일한 도메인을 가지고 있어야 한다.
ex) $(student - R)$
6. Cartesian Product Operation : $(R \times S)$
R과 S 두 릴레이션의 튜플들로 구성 가능한 모든 조합의 튜플을 생성한다. 결과로 나온 릴레이션의 속성의 개수는 R의 속성의 개수 + S의 속성의 개수가 되며, 기수(cardinality)는 R의 기수 * S의 기수가 된다.
만약 R과 S에 공통된 속성이 있는 경우 둘 중 하나의 이름을 재정의해야 한다.
Cartesian Product의 결과로 나오는 릴레이션은 크기가 매우 클 수 있는 반면, 실제로 사용자가 원하는 것은 일부인 경우가 많으므로 효율적인 연산자는 아니다.
ex) $(student \times R)$
7. Natural Join Operation $(R \bowtie S)$
두 릴레이션 R과 S의 공통 속성에 대해서 해당 속성이 같은 튜플을 뽑는 연산이다.
Cartesian Product 연산과 Selection 연산의 결합으로 생각할 수 있다.
ex) $(student \bowtie R)$
공통 속성으로 (Grade, Major) = (4, Computer Science), (2, Physics)가 있으므로, 전체 Cartesian Product에서 해당 속성을 갖는 튜플만 뽑아오는 형태이다.
PC로 보시는 것을 권장합니다.
피드백은 언제나 환영입니다. 댓글로 달아주세요 ^-^
'Computer Science > 데이터베이스(DB)' 카테고리의 다른 글
[DB/SQL] 6. 집계 함수(Aggregate Function), GROUP BY, HAVING (0) | 2021.07.06 |
---|---|
[DB/SQL] 5. DML(Data Manipulation Language) - UPDATE, DELETE (0) | 2021.06.16 |
[DB/SQL] 4. DML(Data Manipulate Language) - INSERT, SELECT (1) | 2021.06.11 |
[DB/SQL] 3. SQL 특징 & DDL(Data Definition Language) (0) | 2021.06.09 |
[DB] 1. Relational Model (관계형 모델) (6) | 2021.05.27 |