Processing math: 100%
본문 바로가기

Computer Science/데이터베이스(DB)

[DB] 2. Relational Algebra (관계 대수)

반응형

 

 

[목차]

 

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 : σpredicate(R)

 

Select operation은 릴레이션(R)에서 조건(predicate)을 만족하는 tuple들을 추출해주는 연산자이다. 

하나의 릴레이션에 대해 수행하는 단항 연산이며, 조건들은 다른 연산자(and, or, not 등)들을 이용하여 더 복잡하게 구성할 수도 있다. 

 

ex) σgrade=3(student)

 

ex) σgrade3major=Physics(student)

 

 

2. Projection Operation : πA1,A2,...,An(R)

 

Projection Operation은 릴레이션(R)에서 주어진 속성(Attribute)들만 포함하는 릴레이션을 반환한다. 하나의 릴레이션에 대해 수행하는 단항 연산이며, 중복되는 원소가 생기면 중복을 제거한다. 

 

ex) πName,Grade(student) 

 

ex) πGrade,Major(student)

 

 

3. Union Operation : (RS)

 

두 릴레이션의 합집합을 반환한다. R 또는 S 릴레이션에 들어있는 모든 튜플들을 포함한다. 

입력으로 들어오는 두 릴레이션은 속성(Attribute)의 개수가 같고, 대응되는 필드들이 동일한 도메인(domain)을 가지고 있어야 한다. (이 성질을 합병가능(Union-compatible)이라고 한다)

 

 

ex) (studentR)

 

 

4. Intersection Operation : (RS)

 

두 릴레이션의 교집합을 반환한다. R과 S에 동시에 들어있는 튜플들의 집합을 릴레이션으로 반환한다. 

마찬가지로 R과 S의 속성의 개수가 같고, 대응되는 필드들이 동일한 도메인을 가지고 있어야 한다. 

 

ex) (studentR)

 

 

5. Difference Operation :  (RS)

 

두 릴레이션의 차집합을 반환한다. R에 속해있으면서 S에 속해있지 않은 튜플들의 집합을 릴레이션으로 반환한다. 

마찬가지로 R과 S의 속성의 개수가 같고, 대응되는 필드들이 동일한 도메인을 가지고 있어야 한다. 

 

ex) (studentR)

 

 

6. Cartesian Product Operation : (R×S)

 

R과 S 두 릴레이션의 튜플들로 구성 가능한 모든 조합의 튜플을 생성한다. 결과로 나온 릴레이션의 속성의 개수는 R의 속성의 개수 + S의 속성의 개수가 되며, 기수(cardinality)는 R의 기수 * S의 기수가 된다. 

만약 R과 S에 공통된 속성이 있는 경우 둘 중 하나의 이름을 재정의해야 한다. 

 

Cartesian Product의 결과로 나오는 릴레이션은 크기가 매우 클 수 있는 반면, 실제로 사용자가 원하는 것은 일부인 경우가 많으므로 효율적인 연산자는 아니다. 

 

ex) (student×R)

 

 

7. Natural Join Operation (RS)

 

두 릴레이션 R과 S의 공통 속성에 대해서 해당 속성이 같은 튜플을 뽑는 연산이다. 

Cartesian Product 연산과 Selection 연산의 결합으로 생각할 수 있다. 

 

ex) (studentR)

공통 속성으로 (Grade, Major) = (4, Computer Science), (2, Physics)가 있으므로, 전체 Cartesian Product에서 해당 속성을 갖는 튜플만 뽑아오는 형태이다. 

 

 

PC로 보시는 것을 권장합니다. 

피드백은 언제나 환영입니다. 댓글로 달아주세요 ^-^

반응형