Surrogate Key(대체키)를 PK(기본키)로 설정해야 하는 이유

생각하는 마리오네트·2024년 4월 28일
0

DW/BI

목록 보기
2/5

What is Surrogate Key?

Surrogate Key란 대체키 라고 부릅니다.
PK, FK, UK도 아닌 Surrogate Key 는 말그대로 PK를 대체하는 키를 뜻합니다.

예를 하나 들어보겠습니다.

고객DB가 있을 경우 주민등록번호, 이메일이 을 복합PK로 잡혀있다고 했을경우 Unique 하고 Not Null한 상태가 될 수 있습니다.

하지만, 이렇게 복합키를 한경우 다른 Fact Table 혹은 Dimension Table 에서도 JOIN을 위해서는 두개의 컬럼을 모두 넣어주어야 합니다.

이렇게 되면 복잡해집니다. 그때 PK를 기준으로 상승하는 번호로 0부터 대체키를 만들어줍니다. 그렇게되면 해당컬럼 하나를 JOIN키로 사용할 수 있게됩니다.

이것이 대체키, Surrogate Key라고 부릅니다.

Why Surrogate Key?

왜 PK를 Surrogate Key로 사용해야 될까요??

1. 비즈니스에 절대로 변하지 않는것은 없다.

실제로 이커머스 도메인에서 일을 하면서 3~4개의 컬럼을 통해서 unique not null한 경우의 수를 찾아내어 PK를 만든 경험이 있었습니다. 절대로 해당 컬럼들의 구성은 문제 없을거라고 확신했고, 사용되고 있었습니다.

어느날 특정 광고 매체에서의 코드 규칙이 변경이 되어 기존에 잡아둔 PK방식은 중복을 유발할 가능성이 아주 작지만 있게 되었습니다.

PK가 변경된다는 것은 레코드의 물리적인 저장 위치가 바뀌어야 함을 의미하기 때문에 이것은 문제가 되기에 충분했습니다.

2. 성능을 향상시킨다.

고객DB내에 있는 이메일을 PK로 할경우 혹은, 주민등록번호와 이메일을 복합PK로 사용할 경우 이메일과 같은 자연키를 PK로 사용하는경우는 대부분 문자열입니다. 따라서 숫자를 통해서 대체키를 만드는것은 성능을 향상시키는데 도움이 됩니다. 또한 복합 PK를 사용하는 경우 글 처음에 말한것 처럼 JOIN을 위한 테이블에서 역시 해당 컬럼들을 모두 사용해주어야 하는 복잡한 DB구성을 만들게 됩니다.

이러한 점에서 Surrogate Key(대체키)를 PK로 하는것은 성능에 좋은 영향을 줍니다.

3. 데이터의 무결성을 보장한다.

자연키를 PK로 할경우 개발자가 직접 유효성 검사와 무결성검사를 해야한다.
만약에 Surrogate Key(대체키)를 사용하게 된다면 키를 생성하고 관리하는것을 DB에게 맞기는 것입니다.

매번 담당자가 무결성을 관리하는 것 보다는 DB에게 역할을 주는것이 무결성을 보장하는데 효과적입니다.

4. 보안에 효과적이다.

민감한 개인정보를 PK로 사용할 경우 유출 위험등의 부수적인 문제가 따르기 때문에 대체키를 사용하는것이 보안에 효과적입니다.

profile
문제를해결하는도구로서의"데이터"

0개의 댓글