inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

공통 코드를 더 범용성있게 - 그룹화 설계

공통 코드 사용시 컬럼 타입 설정

83

JB_

작성한 질문수 12

0

안녕하세요.

공통 코드를 가져와 사용하는 테이블 스키마를 정의할 때 궁금한 점이 있습니다.

영상 11분 05초를 보면 주문 테이블결제 테이블을 정의합니다.

이때 , order_status, payment_method, payment_status와 같은 컬럼을 varchar로 정의하셨습니다.

type-safe하게 정의한다면, 해당 컬럼들을 enum으로 정의하거나 공통 코드 상세 테이블과 relation을 설정해서 외래키를 사용할 거 같은데,

이와 같은 방식은 유지보수를 더 어렵게 만드는 구조인걸까요?

type-safe하게 만들고 싶다면 애플리케이션 레벨(서버측 코드)에서 정의해주는게 좋은 방법인걸까요?

----------------------

참고로 저는 nodejs 기반의 백엔드 개발자이며,
김영한님의 강의는 네트워크+DB만 수강하고 있습니다.
(java+springboot+jpa 등의 지식과 경험은 전무합니다.)

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

답변 1

0

인프런 AI 인턴

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

DB 설계 시, 공통 코드(예: order_status, payment_method 등)를 다루는 방법에 대한 고민은 많은 개발자들이 직면하는 문제입니다. 일반적으로 이 컬럼들을 VARCHAR로 정의하는 이유는 다양한 형태의 코드 값을 유연하게 다룰 수 있어서인데요, 이렇게 하면 데이터베이스 수준에서의 성능이나 확장성을 확보할 수 있다는 장점이 있습니다.

하지만 이는 타입 안전성이 떨어진다는 단점이 있습니다. 이런 경우, 애플리케이션 코드에서 enum을 사용하여 타입 안전성을 확보할 수 있습니다. 즉, DB는 유연한 구조를 채택하고, 코드에서 논리적 안전성을 유지하는 것입니다. 이 접근 방식은 코드를 읽고 이해하기 쉽게 만들어 주며, 변경에도 보다 쉽게 대응할 수 있습니다.

아래 링크를 통해 관련 논의를 더 깊이 살펴볼 수 있습니다:
- 공통 코드 테이블을 운영할 경우 엔티티 설계를 어떻게 하는 게 좋을까요?
- common_code_detail의 code 변경 가능성

또한, 실무에서는 Code 테이블 설계를 어떻게 하면 실용적인지에 대한 다양한 의견을 나누고 있으니 참고하시기 바랍니다:
- 코드테이블 조인방법이 궁금합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

실제 FK제약조건을 설정하지 않는이유

0

30

2

히스토리 관련 질문

0

57

2

통계 데이터 수정 질문

1

63

2

공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?

0

133

2

DELETE -> SELECT 질문 드립니다.

0

48

1

상속 관계 모델링의 적용 기준 질문

0

75

1

TTL 캐싱에 대한 질문

0

78

1

history_creted_at과 valid_from

1

65

2

함수 기반 인덱스 (Function-Based Index)

0

68

1

추후 강의 질문있습니다

0

124

2

실무 통계 질문(고민) 드립니다..!

0

91

2

Json 컬럼의 객체 맵핑

0

64

1

[Deprecated] 오타 제보

0

86

1

오타 제보

0

73

2

category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다

0

96

2

물리적으로 외래 키 제약 조건을 설정하지 않을 때

0

97

1

`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경

1

84

1

common_code_detail의 code 변경 가능성

1

112

1

[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보

0

87

1

이미 문자열 타입인 컬럼을 캐스팅하는 이유

0

106

2

계층 구조 모델링 기타 방법들

0

106

1

섹션 9의 퀴즈가 영어로 출력되요.

0

106

2

섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼

0

77

1

섹션2 공통 코드) 애플리케이션 ENUM을 API에 그대로 노출한다면?

0

126

1