Database 1 - Key & Join

sojukang·2022년 7월 24일
0
post-custom-banner

Key

그게 뭐야?

Relation에서 tuple을 구분할 수 있는 기준이 되는 attribute

Candidate Key(후보 키)

그게 뭐야?

  • Tuple을 유일하게 식별하기 위해 사용하는 attribute들의 부분 집합
  • PK로 사용할 수 있는 attribute

어떤 키가 후보키가 돼?

2가지 조건을 만족한다.

  • 유일성: key로 하나의 tuple을 유일하게 식별할 수 있다.
  • 최소성: tuple을 유일하게 식별할 수 있는 최소한의 속성으로만 구성된다.

특징은?

  • Null이 될 수 없다. Null은 어떤 것도 특정할 수 없다.
  • 동일한 값이 중복될 수 없다. Relation은 집합이며 집합의 원소(의 식별값)는 중복될 수 없다.

Primary Key(기본 키)

그게 뭐야?

  • 후보 키중 선택한 Main key

Altenatate Key(대체 키)

그게 뭐야?

  • 후보 키 중 PK를 제외한 나머지 키(보조 키)

Super Key(슈퍼 키)

그게 뭐야?

  • 유일성은 만족하지만 최소성은 만족하지 못하는 키
  • 하나의 attribute으로는 tuple을 특정하지 못하나 다수의 attribute으로 tuple을 특정하는 key로 기능할 때

Foreign Key(외래 키)

그게 뭐야?

  • 다른 Relation의 PK를 참조하는 attribute의 집합

왜 쓰는데?

  • 데이터를 각 Relation이 가져야 할 속성들을 만족하도록 여러 Relation에 나누어 저장하고, 이 Relation들에 관계를 부여하여 데이터를 나타내기 위해

Relation의 성질

  • 어떤 요소가 Relation에 포함돼 있는지 명확하게 판정할 수 있어야 한다(Null로는 어떤 것도 판정할 수 없다).
  • Relation의 요소는 중복일 수 없다.

Join

그게 뭐야?

  • 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
  • 테이블을 연결하기 위해 테이블이 공통으로 가지는 column이 필요하다.

왜 쓰는데?

  • RDB에 저장되는 데이터는 하나의 Relation으로 전부 저장되는 게 아니라 Relation이 지켜야 할 속성들을 만족하는 여러 개의 Relation으로 저장된다. 따라서 여러 Relation 사이의 데이터를 조합하여 하나의 총체적인 데이터를 구성할 필요가 생긴다. 이 때 필요한 게 Relation의 교집합에 대응하는 table의 Join이다.

Inner Join

  • Relation의 교집합에 해당하는 연산으로, 기준 테이블과 Join 하는 테이블의 중복된 column 값이 존재하는 tuple을 반환한다.

Outer Join

  • Join 과정에서 어느 한쪽에만 존재하는 column의 값을 다루기 위해 존재한다.

Left Outer Join

  • 기준 테이블과 Join 테이블의 중복된 column 값이 존재하는 기준 테이블의 tuple을 반환한다.

Right Outer Join

  • 기준 테이블과 Join 테이블의 중복된 column 값이 존재하는 Join 테이블의 tuple을 반환한다.

Full Outer Join

  • Relation의 합집합에 해당하는 연산으로, 기준 테이블과 Join 테이블의 중복되는 column 값이 존재하는 tuple을 반환하며, 두 테이블에 존재하는 모든 column 값을 반환한다.

Cross Join

  • 곱집합(Cartesian Product)에 해당하는 연산으로, 두 테이블의 모든 경우의 수(Combination)를 반환한다.

Self Join

  • 하나의 물리적인 테이블을 2개의 가상 테이블 처럼 다루어 Cross Join한다.
  • 테이블의 속성을 여러 조합으로 활용할 경우 사용한다.

참고

gyoogle.dev
[MYSQL] SELF JOIN 예제
SQL 첫걸음
관계형 데이터베이스 실전 입문

profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글