안녕하세요 재고 테이블에 대해서 질문 있습니다.!
안녕하세요 멘토님 강의 잘듣고 있습니다!
제가 테이블을 언제 만들어야 하고 합쳐야 되는지에 대해서 잘 모르겠습니다.
혹시 검색 키워드와 상품테이블에서 재고를 관리하지 않고 따로 테이블을 만든 이유가 있을까요 ?
답변 2
1
안녕하세요, qheogus55 님!
설계에 관한 것은 공식이 있는 것은 아니고 실무 경험을 쌓으면서 만들어가고, 또 경험이 쌓이면서 관점이 바뀌기도 하는 것이라 어떻게 하는 것이 정답이다라고 말하기는 어려운데요.
상품 테이블과 재고 테이블을 분리한 이유는 다음과 같습니다.
상품 테이블이 가져야 하는 정보와 재고 정보는 각기 다른 관심사를 가집니다.
상품 테이블은 상품 그 자체에 대한 수많은 정보(이름, 가격, 부가정보 등)를 가질 수 있습니다.
재고라는 개념은 '어떤 것'이 '몇 개' 남아있는지(유효한지)를 관리하는 정보입니다. 즉, 어떤 것인지는 관심이 없습니다.
만약 상품 테이블에서 재고 정보를 관리한다면, 상품 정보를 수정할 때에도 해당 테이블에, 재고 정보를 관리할 때에도 해당 테이블에 CRUD 작업을 수행해야 합니다.
구현이 불가능한 것은 아니지만, 요구사항이나 운영 상황이 복잡해질수록 이에 따른 많은 불편함들이 생길 수 있습니다.
상품이라는 도메인의 생애주기와 재고라는 도메인의 생애주기는 서로 다른 사이클을 가집니다.
상품은 관리자가 처음 등록하고, 더이상 판매하지 않을 때까지 유지되며, 삭제되기 전까지는 자주 수정될 일이 없습니다.
재고는 상품이 판매되기 시작하는 순간부터 존재하며, 상품 정보와 다르게 사용자 요청에 따라 실시간으로 변경됩니다.
즉, 도메인의 생애주기라는 관점에서 상품과 재고는 그 데이터에 접근하는 시점, 주체, 방식이 서로 다르기 때문에, 관리의 용이성을 위해 별개의 테이블에 관리하도록 설계했다고 이해해주시면 좋을 것 같습니다.
도움이 되셨기를 바랍니다.
감사합니다. 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
qheogus55님, 테이블을 분리하여 설계하는 것은 여러 이유가 있을 수 있습니다.
- 정규화: 데이터 중복을 최소화하여 데이터의 일관성과 무결성을 유지하기 위해.
- 확장성: 시스템이 커질 때, 재고 관리와 같이 독립적으로 확장하고자 할 경우 테이블을 분리.
- 유지보수: 관련된 데이터가 많아질수록 한 테이블에 모든 정보를 담으면 복잡해져, 유지보수가 힘들 수 있습니다.
- 성능 최적화: 작업의 성격에 따라 테이블이 분리되어 있으면 쿼리 최적화와 부하 분산에 효과적.
검색 키워드로는 ‘데이터베이스 정규화’, ‘데이터베이스 설계’, ‘테이블 분리 기준’을 사용할 수 있습니다.
실제 강의 내용에 대한 구체적인 질문이라면, 수강 전 문의 게시판을 통해 지식공유자님께 직접 질문해보시는 것이 좋을 것 같습니다.
해당 기능이 활성화된 강의인지 확인해보시고, 원하는 답변을 얻으실 수 있기를 바랍니다.
참고로 이렇게 설계한 이유에 대해서는 강의 내에서 제공하는 자료를 확인하시면 도움이 될 수 있습니다. 강의 동영상을 클릭하신 후에는 상단 바 혹은 강의 목차 내에 있는 구름 아이콘을 통해 강의자료를 찾으실 수 있습니다.
강의자료 확인 방법 이미지
자세한 정보는 인프런 FAQ에서 확인하실 수 있습니다: 인프런 FAQ
private 상수 테스트 관련 질문
0
83
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
126
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
161
2
테스트 문서화 질문입니다
0
105
2
단위테스트 질문이 있습니다
0
96
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
103
2
ERD 가장자리에 있는 도메인 테스트 질문
0
89
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
135
2
OrderCreateRequest DTO에 대해서 궁금한점
0
102
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
156
2
계층 관련 질문이 있습니다.
0
139
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
124
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
134
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
228
2
Service+Repository 통합테스트 관련 질문입니다.
0
150
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
185
2
test 용 .yml
0
90
2
throws Exception
0
80
2
카페키오스크 클래스 문의 ,,
0
89
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
174
2
테스트 코드에서 필요한 생성자
0
138
1
tearDown 순서
0
116
2
@Builder 생성자 private
0
136
2
@DisplayName gradle / intellJ
0
93
2





