inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

정리

pk 현대적인 설계관련해서 궁금한게있습니다~

104

backendman

작성한 질문수 27

1

안녕하세요. 영한님

 

현대적인 설계는 대리키를 PK 로 두라고 하셨습니다.

그 이유는 성능적인 측면으로 봤을때 자연키를 PK 로 두면 중간삽입이 자주 발생하여 페이지 단편화가 발생한다고 하셨습니다.

 

그리고 대리키로 AUTO-INCREMENT 를 주로 사용하시던데 일자-순번을 대리키로 사용해도 되나요? 등록된 일자와 그 일자의 순서에 따른 순번으로 PK 를 따는것도 괜찮은 방법인지 궁금합니다.

sql mysql dbms/rdbms 소프트웨어-설계 SQLD

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. backendman님.

질문해주신 내용에 대해 설명드리겠습니다. 현대적인 데이터베이스 설계에서는 대리키(surrogate key)를 PK로 두는 것이 일반적으로 권장됩니다. 그 이유는 대리키가 비즈니스 로직과 독립적이고, 시스템 내부에서 쉽게 관리할 수 있기 때문입니다. 흔히 사용하는 대리키는 AUTO-INCREMENT와 같은 방법입니다.

그럼, ‘일자-순번’을 대리키로 사용해도 될까요? 이 방식도 가능한 대리키로 사용될 수 있지만, 몇 가지 고려사항이 있습니다:

  1. 변경 가능성: 일자가 비즈니스 로직에 따라 변경 가능하다면, 데이터 무결성 유지가 어렵습니다. PK는 변하지 않는 값이어야 합니다.

  2. 순번 관리: 각 날짜에 대한 고유의 순번을 관리해야 하므로, 관리 복잡도가 약간 높아질 수 있습니다. 성능 저하의 가능성도 있습니다.

  3. 일관성: 다른 시스템과의 통합에서 일자-순번 방식은 혼선을 줄 가능성이 있습니다.

같은 질문 혹은 유사한 주제로 다뤄진 게시글을 참고하시면 더 많은 정보를 확인하실 수 있습니다:

이 게시글들은 대리키 및 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

106

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