공통 코드 , 계층 구조 질문
4
작성한 질문수 6
안녕하세요. 공통 코드와 계층 구조 관련해서 질문이 있어 질문 드립니다.
이전에 경험했던 프로젝트 보면 공통 코드와 계층 구조 테이블을 다 합친 일명 '만능 코드 테이블' 에 모두 넣고 사용하는 방식도 사용했는데
이번 공통 코드(자연키, 복합키) 강의와, 계층 구조의 강의를 들으며 시야가 또 달라지네요.
예를 들면 주문 상태 코드와, 상품 코드를 하나의 테이블의 대체키, 외래키를 적용해서 사용했었네요.
혹시 '만능 코드 테이블'의 경우는 추후 유지보수와 개발 편의 관점에서 개선해야하는 부분이 맞겠지요?
만약에 개선하게 된다면, 어떤 기준으로 나누면 될지. 설계적 관점에 대해 혜안을 듣고 싶습니다.
예를 들면, 공통 코드 테이블 2개와, 계층 테이블 이렇게 두고 계층의 가능성으로 보통 나누는지 궁금하고, 추가로 도메인 성격까지 고려해서 테이블을 또 쪼개는지 등이 궁금합니다.
그리고 CS 팀에서 고객 문의 사항에 문의 유형을 최초 상품, 주문, 배송 이런식으로 공통 코드에 넣어서 사용하고 있었는데, 갑자기 정책이 바뀌면서 주문 하위에 주문 오류, 주문 취소 등 하위 개념이 생기면 계층 테이블로 옮겨야 할 거 같은데 이런 경우는 애초에 기획당시에 개발자가 확장 가능성에 대해 고민을 하고 공통 테이블로 넣었으면 안되는 것인지에 대한 부분도 궁금하네요.
매번 질높은 강의로 도움주셔서 감사합니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 박용규님.
공통 코드와 계층 구조 테이블을 하나로 합쳐서 사용하는 ‘만능 코드 테이블’ 방식은 초기에는 개발과 관리가 간편하다는 장점이 있지만, 장기적으로 봤을 때는 유지보수와 확장성 측면에서 문제가 발생할 수 있습니다. 일반적으로 다음과 같은 측면을 고려해 개선할 수 있습니다:
도메인 분리: 서로 다른 도메인의 공통 코드를 하나의 테이블에 넣으면, 실제로 각 도메인이 필요로 하는 정보나 요구사항에 유연하게 대응하기 어려울 수 있습니다. 따라서, 도메인 성격에 맞게 테이블을 분리하여 설계하는 것이 좋습니다. 예를 들어, 주문과 관련된 코드는 주문 도메인 테이블에, 상품과 관련된 코드는 상품 도메인 테이블에 따로 관리합니다.
계층 구조 분리: 계층 구조가 필요한 정보는 따로 관리하는 것이 좋습니다. 계층 구조가 필요한 테이블은 일반적인 코드 테이블과 다르게 계층적 관계를 명확하게 정의하고 관리해야 하므로, 별도의 테이블로 분리하는 것이 유지보수와 확장성 측면에서 유리합니다.
유지보수 고려: ‘대체키’나 ‘외래키’ 등 관계 설정에서의 복잡성을 줄이고 명확한 구조를 가져가는 것이 좋습니다. 단순화된 구조일수록 버그를 줄이고 수정 및 확장이 쉬워집니다.
관련 내용을 조금 더 이해하고 싶으시다면, 비슷한 토픽을 다룬 다음의 링크를 참고해보세요:
위의 링크는 스프링 부트와 JPA, 데이터베이스 설계에 관련된 공통 코드 테이블의 운영과 개선 방법에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
공통코드 관련한 질문 드립니다.
0
56
1
다음 강의는 언제쯤 나올까요?
0
80
2
실제 FK제약조건을 설정하지 않는이유
0
75
2
히스토리 관련 질문
0
70
2
통계 데이터 수정 질문
1
78
2
공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?
0
150
2
DELETE -> SELECT 질문 드립니다.
0
62
1
상속 관계 모델링의 적용 기준 질문
0
84
1
TTL 캐싱에 대한 질문
0
97
1
공통 코드 사용시 컬럼 타입 설정
0
91
1
history_creted_at과 valid_from
1
74
2
함수 기반 인덱스 (Function-Based Index)
0
79
1
추후 강의 질문있습니다
0
136
2
실무 통계 질문(고민) 드립니다..!
0
101
2
Json 컬럼의 객체 맵핑
0
70
1
[Deprecated] 오타 제보
0
95
1
오타 제보
0
79
2
category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다
0
105
2
물리적으로 외래 키 제약 조건을 설정하지 않을 때
0
105
1
`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경
1
94
1
common_code_detail의 code 변경 가능성
1
120
1
[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보
0
94
1
이미 문자열 타입인 컬럼을 캐스팅하는 이유
0
111
2
계층 구조 모델링 기타 방법들
0
114
1





