ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Surrogate key vs Natural Key (대체 키 vs 자연 키)
    CS 지식/데이터베이스 2022. 7. 29. 15:20
    반응형

    Surrogate key vs Natural Key

    Surrogate Key(대체 키)

    • 비즈니스 의미가 없는 시스템 생성 값 (system generated)
      • GUID, sequence, unique identifier...
      • 컬럼들 중 유일하게 식별 가능한 단일 후보키가 존재하지 않는 경우, 임의의 식별번호로 이루어진 후보키
    • 하나 이상의 컬럼으로 구성 (복합키)
    • 비즈니스 의미가 없이 순차적 정수가 고유 키 역할을 하는 예시.
    • 장점
      • 비즈니스 요구 사항에 따른 변경 사항이 없음
      • 모든 엔티티에서 동일한 키 전략을 유지하는 경우 코드가 줄어듦
        • 애플리케이션 코드가 모두 순차적인 정수로 구현된 경우, 기본 키를 참조할 때 재사용 가능
      • 대체 키는 고유성이 보장됨
      • 시퀀스가 사용되면 값이 계속 증가하여 인덱스 단편화가 줄어들기 때문에, 인덱스 유지 관리가 거의 필요하지 않음
    • 단점
      • 대체 키에 대한 열/인덱스에 추가 디스크 공간이 필요함
      • 데이터 삽입/업데이트
      • 데이터 Insert & Update, query 시 대체 키에 대한 열/인덱스에 추가 I/O가 요구됨
      • 데이터 자체에는 의미가 없으므로, 하위 테이블에 대한 더 많은 테이블 조인이 필요
      • 다른 고유 제약 조건이 없는 경우 테이블에 자연 키의 중복 값이 있을 수 있음
      • 대체 키 값은 검색 키로 사용할 수 없음

    Natural Key(자연 키)

    • 테이블에 이미 존재하는 열 or 열의 집합 (데이터 모델 내의 엔티티 속성)
      • 테이블을 이루는 컬럼들 가운데 의미를 담고 있는 후보키
    • 테이블의 레코드를 고유하게 식별하며, 비즈니스 의미가 담겨있음
    • SSN 컬럼을 보면 비즈니스 의미를 담으며 고유하게 식별 가능.
    • 장점
      • 컬럼, 기본키 인덱스가 이미 존재하므로 대체 키를 위한 열 / 인덱스에 추가 disk가 필요하지 않음
    • 단점
      • 비즈니스 요구 사항이 변경되면 키 변경/재작업 필요
      • 키에 여러 열이 필요한 경우 유지 관리가 더 어려움
      • 키 값이 일반적으로 더 크거나 여러 컬럼으로 구성되므로 성능 저하
        • 데이터 Insert & Update, query 시 더 많은 I/O가 요구됨
      • 키 값을 알 때까지 레코드를 입력할 수 없음

    Reference

    https://www.mssqltips.com/sqlservertip/5431/surrogate-key-vs-natural-key-differences-and-when-to-use-in-sql-server/

    반응형

    'CS 지식 > 데이터베이스' 카테고리의 다른 글

    MySQL Hint (옵티마이저 힌트 & 인데스 힌트)  (1) 2022.07.29
    NoSQL  (0) 2021.01.14
    트랜잭션(Transaction)  (0) 2021.01.14
    정규화  (0) 2021.01.14
    인덱스(Index)  (0) 2021.01.14

    댓글

Designed by Tistory.