자연 키를 PK로 써도 되는 예외 조건!
안녕하세요!
현대적인 설계에서는 대부분 자연 키가 아닌 대리 키를 기본 키로 사용하는 것이 권장된다고 하셨는데요.
그렇다면 혹시 자연 키를 기본 키로 사용해도 괜찮은 예외적인 상황이 있을까요?
예를 들어, 변경 가능성이 거의 없는 코드성 데이터나 표준화된 식별자(예: ISO 코드, 통화 코드 등) 같은 경우에도 무조건 대리 키를 추가하는 것이 좋은지, 아니면 자연 키를 PK로 두어도 실무적으로 문제가 없는 기준이 있는지 궁금합니다.
감사합니다 ☺︎
답변 2
0
안녕하세요. 중꺽마님
이 부분은 정답이 딱 없는데요.
고민이 된다면 이렇게 질문해보면 좋을 것 같아요.
"이 값은 앞으로 10년, 20년 뒤에도 절대 바뀔 일이 없다고 100% 확신할 수 있는가?"
ISO 국가 코드, 화폐등의 경우에 거의 변하지 않습니다. 하지만 이것들도 역사적으로 변경 전례가 있습니다.(국호 변경, 화폐개혁, 표준 갱신)
그럼에도 불구하고 실무적으로 보면 국가 코드나 통화 코드의 경우 거의 변하지 않기 때문에 보통 문제가 되지는 않습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
중꺾마님, 질문 주셔서 감사합니다.
자연 키를 기본 키(PK)로 사용할 때의 예외적인 상황에 대해 궁금해하시는군요. 일반적으로 데이터베이스 설계에서 대리 키를 사용하는 것이 권장되지만, 몇 가지 예외적인 경우에서는 자연 키를 PK로 사용해도 무방할 수 있습니다.
변경 가능성이 거의 없는 데이터: 자연 키로 사용하는 데이터가 일반적으로 잘 변경되지 않는 경우, 자연 키를 사용하는 것도 괜찮습니다. 예를 들어 언어의 ISO 코드, 국가 코드, 통화 코드 등은 표준화된 식별자로 변경될 가능성이 매우 낮습니다.
식별자가 간결하고 기억하기 쉬운 경우: 자연 키가 대체적으로 짧고, 간결하며 인간이 쉽게 이해할 수 있고 기억할 수 있다면, 대리 키를 추가하지 않고 자연 키를 사용할 수 있습니다.
비즈니스 로직에 직접 활용 가능한 경우: 자연 키가 비즈니스 로직 구현에 있어서 그대로 쓰이거나 필수적인 역할을 하고 있고, 그 식별자를 통해 비즈니스 기능의 일관성을 유지할 수 있는 경우입니다.
이러한 상황에서는 자연 키를 PK로 지정함으로써 데이터베이스의 직관성과 효율성을 유지할 수 있습니다. 그러나 이러한 경우에도 항상 변경 가능성 및 데이터의 일관성을 고려하여 설계하는 것이 중요합니다.
도움이 되셨기를 바랍니다. 추가 질문이 있으시면 언제든지 말씀해주세요! 😊
아주 작은 정오표 전달드립니다.
0
52
2
실제로 작은 기업에서 기획 롤
1
27
1
order_product 까마귀발
0
44
2
[DB설계] 탈퇴 유저의 구독 정보 유지 및 이메일 마스킹 관련 질문입니다.
0
53
1
자연키 vs 대리키 실무질문
0
28
1
1:N 관계에서 중간테이블 (연관엔티티)
0
57
2
일대일 fk 위치
0
43
1
제 3 정규형 vs BCNF 정규형 차이점?
0
105
3
BCNF 질문
0
78
2
연관 엔티티 네이밍 규칙
0
53
1
진짜 강의 듣는거 너무 고문
0
139
1
28강 sql 파일 어딨나여?
0
94
1
2NF의 엄밀한 정의
0
74
1
comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.
0
124
3
학습중인 수업자료를 받아볼 수 있을까요??
0
103
2
수업자료 pdf파일관련 건의 - 제목 링크위치 개선
0
88
2
서비스 운영 중 잘못된 테이블 설계 발견시 수정 시점에 대한 질문
1
107
2
실무적인 설계로 접근했을 때 제 2정규형 항상 만족?
0
82
1
슈퍼/서브 타입 joined 전략
0
74
2
created_at 관련 구현과 DB ENUM에 대해
0
75
1
M:N 관계의 연관 엔티티 설계 순서
0
81
2
데이터 역사성 훼손 문제
0
67
2
실무팁 - 등록자,수정자 컬럼 관리 관련 질문입니다.
0
84
1
구글이 이메일 변경을 허용하는 이유
0
126
1





