카테고리 없음

[DB] 데이터베이스 키의 개념과 종류

뇌장하드 2022. 3. 19. 16:29

Database keys

  • 키 (Key)

    • 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
  • 유일성과 최소성

    • 유일성 : 하나의 키 값으로 튜플을 유일하게 식별할 수 있는 성질
      • 예. 주민등록번호
    • 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
      • 예. 이름, 주민등록번호, 나이라는 키가 있을 때 이 세 개의 키는 각 튜플을 구분할 수 있다. 이름과 주민등록번호와 나이가 같은 사람이 있을리 없기 때문이다. 근데 굳이? 3개를 써야 구분이 되나? → 아니다. → 주민등록번호 만으로 식별이 가능하다 → 따라서, 이름과 나이를 제외하면 키는 최소성을 만족하게 된다.
  • 키의 종류

    • 기본키, 후보키, 대체키, 외래키, 슈퍼키
  • 기본키 (Primary Key = PK)

    • 유일무이한 값, 고유한 값
    • 따라서, Null 값이면 안된다.
    • 값이 변경될 가능성이 있는 것들은 기본키로 설정하면 안됨
    • 테이블에 기본키는 오직 한 개!
    • 예. 주민등록번호
  • 후보키 (Candidate Key)

    • 기본키가 될 수 있는 친구들
    • 근데 왜 후보키를 두는 걸까?
      • 카드 분실 사례 : 신용카드를 잃어버렸다 → 분실 신고를 한다 → 카드 번호 (기본키) → 고객은 자기 카드 번호를 외우고 다니지 않는다. → 따라서, 주민등록번호 (후보키)를 묻는다. → 후보키를 기반으로 카드 번호 조회가 가능해짐 → 그래서 후보키를 둔다.
  • 대체키 (Alternate Key)

    • 후보키가 두 개 이상일 때, 기본키를 제외한 나머지 후보키들을 일컫는 말
  • 외래키 (Foreign Key)

    • 참조키라고도 하는데, 두 개의 테이블을 연결해 관계를 맺게 해주는 역할을 하는 키다.
    • 고객 테이블과 주문 테이블이 있다고 하자. 각 고객별로 주문 정보를 조회할 수 있도록 비즈니스 로직을 만들어 보자. 이 때, 고객 테이블에는 주문 테이블의 기본키를 고객 테이블의 외래키로 두어 참조하여 조회가 가능하다.
  • 슈퍼키 (Super Key)

    • 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있다.

    • 아래의 표에서 슈퍼키는 [학번 + 이름, 학번 + 아이디, 이름 + 아이디, 학번 + 이름 + 아이디] 로 4개를 만들 수 있다.

    • 즉, 어떤 속성끼리 묶던 중복깞이 나오지 않고 서로 구별만 하면 된다.

      학번 이름 아이디
      1 Jacob supreme-ys
      2 Jason lovelyAlien
      3 Frank dhkstnaos
      4 Potter jhdl0157