목록

2019년 2월 9일 토요일

[데이터베이스] 9. 관계형 데이터 모델 - 형식어(관계 해석, 관계 대수와 연산)






* 관계 해석과 관계 대수는 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어이다.
* 관계 대수나 관계 해석은 상용 DBMS에서 직접적으로 사용되지는 않지만, SQL을 비롯한 대부분의 상용 데이터베이스 언어의 원리를 제공한다.


1. 관계 해석(Relational Calculus)

  • 선언적, 비절차적 언어.
  • 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는다.





2. 관계 대수(Relational Algebra)

  • 절차적 언어.
  • 어떻게 질의를 수행할 것인가를 명시한다.
  • 상용 RDBMS들에서 널리 사용되는 SQL의 이론적인 기초.
  • 관계 대수는 SQL을 구현하고 최적화하기 위해 DBMS의 내부 언어로도 사용된다.
  • 관계형 데이터 모델의 제안자 E.F.Codd 박사가 릴레이션의 처리에 필요한 일련의 연산자들을 모아서 관계 대수라고 명명했다.
  • 관계 대수 연산은 한 개의 릴레이션에서 특정 조건에 맞는 튜플들을 추출해내거나 여러 릴레이션을 합해 새로운 릴레이션을 만드는 질의문을 작성하는데 사용된다.
  • 관계 대수는 크게 일반집합연산과 순수관계연산으로 나눌 수 있다.




3. 일반집합연산


3-1. 합집합(Union)
  • R1또는 R2에 속하는 튜플의 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={1, 2, 3}



3-2. 교집합(Intersection)
  • R1과 R2 모두에 속하는 튜플의 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={1, 2}



3-3. 차집합(Set Difference)
  • R1과 R2 모두에 속하는 튜플을 제외한 집합.
ex) R1={1, 2} R2{1, 2, 3} 일 때 T={3}



3-4. 카티션 프로덕트(Cartesian Product) = 교차곱
  • 연산하려는 각 릴레이션의 카디날리티(튜플의 개수)의 곱과 연산하려는 각 릴레이션의 차수(속성의 개수)의 합으로 이루어진 릴레이션.
  • 연산되는 튜플들로 조합이 가능한 모든 경우 수로 이루어진 릴레이션.
  • 카티션 곱의 결과는 릴레이션의 크기가 매우 클 수 있다.
ex) R1의 카디날리티가 4이며 차수가 3, R2의 카디날리티가 3이며 차수가 1인 경우 R1 X R2 = 속성 4, 행 12개로 이루어진 릴레이션





4. 순수관계연산


4-1. Selection(Restriction)
  • 릴레이션에서 셀렉션 조건(Selection Condition, Predicate)을 만족하는 튜플들의 부분 집합을 구하여 새로운 릴레이션을 만드는 연산.
  • 하나의 입력 릴레이션에 적용되므로 단항 연산자.
  • 셀렉션의 결과 릴레이션의 차수는 입력 릴레이션의 차수와 같다.
  • 결과 릴레이션의 카디날리티는 항상 원래 릴레이션의 카디날리티보다 작거나 같다.
  • 릴레이션 레코드(행)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 한다.
  • σ  = 시그마



4-2. Projection
  • 주어진 릴레이션에서 속성 리스트에 제시된 속성(Attribute)만을 추출하는 연산.
  • 릴레이션의 열에 해당하는 속성만을 추출하는 것이므로 수직 연산이라고도 한다.



4-3. Join
  • 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산.
  • 관계 데이터베이스에서 두 개 이상의 릴레이션드르이 관계를 다루는데 중요한 연산자.
  • 조인의 방법으로는 세타 조인(Theta Join), 동등 조인(Equi Join), 자연 조인(Natural Join), 외부 조인(Outer Join), 세미 조인(Semi Join) 등이 있다.



4-4. Division
  • 릴레이션에서 조건에 맞는 속성을 선택하여 제거한 후 새로운 튜플을 구성하는 연산.






댓글 없음:

댓글 쓰기