데이터베이스

[DB] (MySQL) 관계대수 연산자

com_0 2022. 4. 17. 02:28
  • 단항 연산자 : 연산자<조건> 릴레이션
    • 셀렉션 : 원하는 투플을 선택
    • 프로젝션 : 릴레이션의 속성 선택
    • 개명 : 릴레이션이나 속성의 이름을 변경
  • 이항 연산자 : 릴레이션1 연산자<조건> 릴레이션2
    • 디비전 : 부모 릴레이션에 포함된 투플의 값을 모두 갖고 있는 투플을 분자 릴레이션에서 추출
    • 합집합, 교집합, 차집합
    • 카티전 프로덕트(X) : 두 릴레이션에 속한 모든 투플의 집합 조합
    • 조인
      • 세타조인 : 두 릴레이션 사이에 비교조건에 만족하는 집합
      • 동등조인 : 두 릴레이션 간의 같은 값을 가진 집합
      • 자연조인 : 동등조인에서 중복 속성을 제거
      • 더 있지만.. 많이 이용되는 연산자만.....

 

 

공부하면서 가장 헷갈렸던 카티전 프로덕트와 조인만 더 상세하게 보고 넘어가기

 

카티전 프로덕트

: 카티전 프로덕트는 수평적 연산이다! 곱하기 연산 기호를 사용한다. 첫번째 릴레이션의 차수(열의 수)가 4, 카디날리티(행의 수)가 3이고 두번째 릴레이션의 차수(열의 수)가 5, 카디날리티(행의 수)가 4라면 --> 차수는 4+5=9개, 카디날리티는 3*4=12개가 된다!

직접 이해할 때에는 수학에서 함수의 개수를 세는 것과 같다고 생각했다. 첫번째 릴레이션의 첫번째 행에서 두번째 릴레이션의 모든 행에 매칭시키는 형식..!

 

 

 

조인

: 조인은 두 릴레이션의 공통 속성(열의 이름)을 기준으로 투플을 수평으로 결합하는 연산이다.

즉, 카티전 프로덕트 연산을 한 후에 셀렉션을 하는 형태라고 생각하면 편하다

  • 세타조인 : 등호, 부등호를 사용해 조건을 씀
  • 동등조인 : 세타조인 중에서 등호를 사용해 조건을 쓰면 동등조인
  • 자연조인 : 동등조인을 사용하면, 첫번째 릴레이션과 두번째 릴레이션에서 공통된 속성이 두번 나타나는데, 이것을 제거하고 표현할 수 있음

 

질의예시1) 고객과 고객의 주문사항을 모두 보이시오. -> 동등조인 이용!

--> 고객 *조인*<고객.고객번호=주문.주문번호> 주문

 

c에서 자꾸 ==으로 쓰니까 하나만 쓰면 문법오류나야 할 것 같아...

 

질의예시2) 고객과 고객의 주문사항을 모두 보여주되, 같은 속성은 한 번만 표시하시오. -> 자연조인이용!

--> 고객 *조인*N<고객.고객번호=주문.주문번호> 주문