Key

안석우(문과대학 철학)·2023년 12월 3일
0

Super key(슈퍼키)

  • 행을 유일하게 구분할 수 있는 속성의 집합(속상 하나여도 되고 여러 개여도 됨)

    이 테이블에서 주민번호도 슈퍼키이고 이름도 슈퍼키이다. 이름과 나이를 합친 것도 슈퍼키다.

Candidate key(후보키)

  • 행을 유일하게 구분할 수 있는 최소한의 속성의 집합(유일성과 최소성을 둘 다 만족해야함)
  • 위의 테이블에서 학번,주민번호,이름,나이는 각각 모두 후보키다. 그러나 이름과 나이를 합친 것은 유일성은 만족하지만 최소성을 만족하지 않기 때문에 후보키가 아니다.

Primary key(기본키)

  • 후보키 중 하나를 선택한 것으로 최소성과 유일성을 둘 다 만족
  • 테이블에서 기본키는 오직 1개만 지정할 수 있다.
  • 기본키값은 Null값이 올 수 없고, 중복되어서도 안 된다.

Alternate Key(대체키)

  • 후보키 중 기본키를 지정하고 남은 키를 의미한다.
  • 즉, 기본키로 지정되지 않은 후보키이다.

Foreign Key(외래키)

  • 우선 참조되는 테이블(A,여러개의 테이블일 수 있다)참조하는 테이블(B)가 있다.
  • 참조되는 테이블들의 기본키를 참조해서 테이블들 간의 의존관계를 만든다.
  • 참조되는 테이블 컬럼과 참조하는 테이블의 컬럼의 도메인이 같아야한다
    (도메인은 각 속성들이 가질 수 있는 값들의 집합이다.)
  • 참조되는 값이 변경되면 참조하는 값도 변경되어야 한다.(아래에서 박지성의 고객번호가 10으로 변경되면 이를 참조하고있는 외래키의 값들도 10으로 바뀌어야한다.)
  • Null값과 중복이 허용된다.(여기 예시 좀 질문하기)
  • 자기 테이블의 기본키를 참조하는 외래키도 가능하다.

기본키는 수정이 가능한가?

  • Yes. 값을 수정할 수도 있고, 기본키 자체를 바꿀 수 있다.(학번이었다가 주민번호로 변경). 기본키를 바꾸면 데이터를 물리적으로 재배열해야한다.

Mysql은 기본키를 설정하지 않아도 테이블이 만들어진다. 어떻게 된 일인가?

  • 명시적인 PK가 없으면 Inno DB는 그 값을 생성한다.

어떤 칼럼의 정의에 UNIQUE 키워드가 붙었을 때, 이 칼럼을 활용한 쿼리의 성능은 그렇지 않은 것과 비교해서 어떻게 다를까?

0개의 댓글