inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

복합 키 설계

UPDATE, DELETE 시 대리키, 자연키 활용 여부가 궁금합니다.

94

sangmin

작성한 질문수 1

0

안녕하세요. 강사님의 강의를 2회독하며 궁금한 것들이 어느정도 정리가 되어 질문 드립니다.

제가 SI에 있어서 그런건지 혹은 프로젝트? 운이 없어서인지 차세대를 하더라도 돌이켜보면 경험했던 실무에서는 늘 자연키를 PK로 사용 했었습니다. 그러다보니 UPDATE, DELETE등 데이터를 핸들링 할 때에도 늘 PK(자연키)를 전부 들고다니며 사용 했었는데

대리키를 PK로 사용할 경우에는 PK도 항상 같이 다른 데이터 들과 함께 객체등에 담는지.. 혹은 데이터를 갱신 할 때에만 자연키들로 따로 pk를 조회 한 후 사용하는지 아니면 unique 조건이 걸린 자연키들로만 갱신을 하는지 궁금해서요 ㅜㅜ

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

답변 2

0

y2gcoder

안녕하세요. sangmin님, 공식 서포터즈 y2gcoder입니다.

무조건 대리키 만 들고 다닌다기 보다는 상황에 따라 다를 것 같습니다. 예를 들어 유저 엔티티에 대리키와 자연키(이메일, unique) 이 있다고 하면 이메일로도 조회한 후 업데이트 및 조회를 할 수 있어야 합니다.

더 답변이 필요하면 말씀해주십쇼!

감사합니다.

0

인프런 AI 인턴

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

대리 키와 자연 키의 활용에 대해서는 많은 분들이 고민하시는 부분입니다. 대리 키를 PK(Primary Key)로 설정하면, 비즈니스 로직과는 무관한 고유한 ID를 통해 데이터 행을 식별할 수 있다는 장점이 있습니다. 이런 방식은 데이터의 일관성과 무결성을 유지하는 데 효과적입니다.

  1. 대리키 사용 시에는 데이터를 조회하거나 수정할 때 대리 키(PK)를 기준으로 접근하는 것이 일반적입니다. 이 방법은 데이터의 변경에 따른 영향 범위를 최소화할 수 있습니다. 대리키는 주로 시스템 내부적으로 사용되며, 비즈니스 로직과 관계 없는 데이터베이스 식별을 목적으로 합니다.

  2. 자연키 사용 시에는 비즈니스 로직에 의미가 있는 키를 사용하여 데이터 행을 식별합니다. 이 경우, 조회 및 갱신 시에 자연키를 기준으로 데이터를 핸들링하게 됩니다. 하지만 자연키가 변경될 가능성이 있거나 여러 필드로 구성된 경우, 복잡성이 증가할 수 있습니다.

UPDATE, DELETE 등의 작업에서:
- 데이터를 갱신하거나 삭제할 때 대리키(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

140

1

28강 sql 파일 어딨나여?

0

94

1

2NF의 엄밀한 정의

0

74

1

comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.

0

124

3

학습중인 수업자료를 받아볼 수 있을까요??

0

103

2

수업자료 pdf파일관련 건의 - 제목 링크위치 개선

0

88

2

서비스 운영 중 잘못된 테이블 설계 발견시 수정 시점에 대한 질문

1

108

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