[ Database ] Key키 란?

duck-ach·2022년 8월 23일
0

DATABASE

목록 보기
2/7

Key란?

하나의 테이블에서 각 로우(ROW)를 고유(UNIQUE)하게 식별(IDENTIFY)할 수 있는 칼럼(COLUMN)또는 칼럼 조합을 의미한다.

종류 :

  • 슈퍼키(Super Key)
  • 후보키(Candidate Key)
  • 기본키(Primary Key)
  • 대체키(Alternate Key)
  • 외래키(Foreign Key)

테이블을 생성할 때 기본키(PK)와 외래키(FK)는 명시적으로 선언해야 한다.

고객 테이블

슈퍼키(Super Key)

  • 테이블의 각 로우(Row)들을 식별할 수 있는 칼럼(Column) 또는 칼럼의 집합
  • 고객 테이블을 분석하여 슈퍼키가 될 수 있는 칼럼이나 칼럼의 집합을 선정한다.
    판단기준 : 모든 로우(Row)가 서로 다른 값을 가질 수 있는가? 유일성(Unique) (중복x)
  • 선정된 슈퍼키의 예시
    • 고객번호
    • 아이디
    • 휴대폰번호
    • 주민번호
    • 고객명+직업

후보키(Candidate Key)

  • 최소한의 칼럼(가장 적은 수의 칼럼)으로 구성된 슈퍼키(Super Key)만 선정한 것
  • 후보키는 유일성 + 최소성의 특징을 가진다.
  • 선정된 후보키의 예시
    • 고객번호
    • 아이디
    • 휴대폰번호
    • 주민번호

기본키(Primary Key)

  • 후보키((Candidate Key) 중에서 DBA가 선택한 키를 의미
  • 기본키(Primary Key, PK, 주키)는 유일성 + 최소성의 특징을 가짐
  • 기본키는 개체 무결성의 특징을 가짐
    • NOT NULL : 널(NULL) 값을 가질 수 없음
    • UNIQUE : 중복된 값을 가질 수 없음
  • 값이 변경되거나 의미가 변경될 수 있는 칼럼은 기본키로 부적절함
  • 선정된 기본키의 예시
    • 고객번호

기본키의 종류

  • 자연키(Natural Key) : 비즈니스 모델을 통해서 추출한 키, 즉 실제로 존재하는 데이터
  • 인공키(Artificial Key) : 실제로 존재하지 않는 데이터를 인위적으로 추가한 키, 주로 Auto Increment값을 사용한다.
    • Auto Increment : 자동 증가 값을 가지는 컬럼으로 값을 직접 대입할 수 없으며, 중간에 값을 삭제한다고 해서, 삭제된 값을 재사용하지 않고 레코드가 적재될 때마다 1씩 증가하게 된다.

고객 테이블의 기본키 선정 사유

  • 고객번호 :
    • 인공키
    • 고객이 추가될때마다 번호를 하나씩 증가시켜서 부여하므로 NOT NULL + UNIQUE 모두 만족
  • 아이디 :
    • 자연키
    • 일반적으로 고객마다 서로 다른 아이디를 필수로 사용하므로 NOT NULL + UNIQUE 모두 만족
    • 향후 이메일로 아이디를 대체하는 등 아이디의 의미가 변할 수 있으므로(아이디 없이 회원가입이 가능할 수 있으므로 기본키로 부적절함)
  • 휴대폰번호 :
    • 자연키
    • 휴대폰이 없는 고객이 존재할 수 있으므로 기본키로 부적절함
  • 주민번호 :
    • 자연키
    • 모든 고객이 서로 다른 값을 가지고 있으므로 NOT NULL + UNIQUE 모두 만족
    • 회원가입 할때 주민번호는 입력받는 필수 요소가 아니므로 기본키로 부적절하다.

대체키(Alternate Key)

  • 기본키(Primary Key)키를 제외한 나머지 후보키(Candidate Key)를 의미함

  • 보조키라고도 함

  • 선정된 대체키의 예시

    • 아이디
    • 휴대폰번호
    • 주민번호

외래키(Foreign Key)

  • 다른 테이블과 관계(Relationship)를 맺기 위해서 설정하는 키(Key)
  • 외래키(Foreign)는 다른 테이블의 기본키(PK) 또는 유일키(Unique)와 관계를 맺을 수 있다.
  • 외래키는 참조 무결성의 특징을 가진다.
    • 관계를 맺은 테이블의 키(기본키 또는 유일키)의 도메인(Domain)을 가져야 한다.
    • 관계를 맺은 테이블에 없는 데이터는 가질 수 없다.
  • 외래키는 중복과 NULL값이 가능하다.
  • 참조 관계에서 기본키를 가진 테이블을 부모 테이블, 외래키를 가진 테이블을 자식 테이블이라고 한다.

각 키의 관계

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글