Surrogate Key

실제 비즈니스 데이터와 무관하게 데이터베이스 시스템이 독자적으로 생성하고 할당하는 고유 식별자

  • 주로 정수형
  • 테이블의 각 행(레코드)을 고유하게 식별하는 데 사용
  • 값이 변하지 않고 NULL을 허용하지 않음
  • ex)
    • 기존의 자연키(Natural Key)가 복잡하거나 변경될 가능성이 있을 때
    • 데이터베이스 성능 향상
    • 관계 단순화
    • 시스템 변경에 대한 유연성 확보

수강 엔티티의 주식별자를 인조식별자로 대체 >> 부적절함

‘수강번호’와 같은 인조식별자(Surrogate Key)를 도입하면 주식별자의 유일성을 관리하기는 쉬워지나, ‘학번’을 조건으로 하는 검색 성능에는 아무런 도움이 되지 않는다. 오히려 기존의 복합 PK가 사라지므로 ‘학번’ 검색을 위해 별도의 비전역 인덱스(Non-clustered Index)를 추가로 생성해야 하며, 이는 저장 공간 낭비와 DML 성능 저하를 초래한다.

개설과정의 주식별자를 인조식별자로 대체하여 조인 성능 향상 >> 본질적인 해결책이 아님.

이유: 개설과정의 PK를 개설번호로 바꾸면 수강 엔티티의 FK 속성들이 단순해져서 조인 시 비교 연산이 줄어드는 효과는 있다. 그러나 이 방법은 수강 엔티티 내에서 ‘학번’으로 데이터를 필터링하는 인덱스 스캔 효율과는 무관하다. 문제의 핵심은 조인 효율보다 ‘학번’ 검색 시의 I/O 최소화에 있다.