인프런 커뮤니티 질문&답변

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Business Layer 테스트 (3)

안녕하세요 재고 테이블에 대해서 질문 있습니다.!

해결된 질문

작성

·

524

2

안녕하세요 멘토님 강의 잘듣고 있습니다!

제가 테이블을 언제 만들어야 하고 합쳐야 되는지에 대해서 잘 모르겠습니다.

혹시 검색 키워드와 상품테이블에서 재고를 관리하지 않고 따로 테이블을 만든 이유가 있을까요 ?

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, qheogus55 님!

설계에 관한 것은 공식이 있는 것은 아니고 실무 경험을 쌓으면서 만들어가고, 또 경험이 쌓이면서 관점이 바뀌기도 하는 것이라 어떻게 하는 것이 정답이다라고 말하기는 어려운데요.
상품 테이블과 재고 테이블을 분리한 이유는 다음과 같습니다.

  • 상품 테이블이 가져야 하는 정보와 재고 정보는 각기 다른 관심사를 가집니다.

    • 상품 테이블은 상품 그 자체에 대한 수많은 정보(이름, 가격, 부가정보 등)를 가질 수 있습니다.

    • 재고라는 개념은 '어떤 것'이 '몇 개' 남아있는지(유효한지)를 관리하는 정보입니다. 즉, 어떤 것인지는 관심이 없습니다.

  • 만약 상품 테이블에서 재고 정보를 관리한다면, 상품 정보를 수정할 때에도 해당 테이블에, 재고 정보를 관리할 때에도 해당 테이블에 CRUD 작업을 수행해야 합니다.

    • 구현이 불가능한 것은 아니지만, 요구사항이나 운영 상황이 복잡해질수록 이에 따른 많은 불편함들이 생길 수 있습니다.

  • 상품이라는 도메인의 생애주기와 재고라는 도메인의 생애주기는 서로 다른 사이클을 가집니다.

    • 상품은 관리자가 처음 등록하고, 더이상 판매하지 않을 때까지 유지되며, 삭제되기 전까지는 자주 수정될 일이 없습니다.

    • 재고는 상품이 판매되기 시작하는 순간부터 존재하며, 상품 정보와 다르게 사용자 요청에 따라 실시간으로 변경됩니다.

즉, 도메인의 생애주기라는 관점에서 상품과 재고는 그 데이터에 접근하는 시점, 주체, 방식이 서로 다르기 때문에, 관리의 용이성을 위해 별개의 테이블에 관리하도록 설계했다고 이해해주시면 좋을 것 같습니다.

도움이 되셨기를 바랍니다.
감사합니다. 🙂

0

안녕하세요, 인프런 AI 인턴입니다.
qheogus55님, 테이블을 분리하여 설계하는 것은 여러 이유가 있을 수 있습니다.

  1. 정규화: 데이터 중복을 최소화하여 데이터의 일관성과 무결성을 유지하기 위해.
  2. 확장성: 시스템이 커질 때, 재고 관리와 같이 독립적으로 확장하고자 할 경우 테이블을 분리.
  3. 유지보수: 관련된 데이터가 많아질수록 한 테이블에 모든 정보를 담으면 복잡해져, 유지보수가 힘들 수 있습니다.
  4. 성능 최적화: 작업의 성격에 따라 테이블이 분리되어 있으면 쿼리 최적화와 부하 분산에 효과적.

검색 키워드로는 ‘데이터베이스 정규화’, ‘데이터베이스 설계’, ‘테이블 분리 기준’을 사용할 수 있습니다.

실제 강의 내용에 대한 구체적인 질문이라면, 수강 전 문의 게시판을 통해 지식공유자님께 직접 질문해보시는 것이 좋을 것 같습니다.
해당 기능이 활성화된 강의인지 확인해보시고, 원하는 답변을 얻으실 수 있기를 바랍니다.

참고로 이렇게 설계한 이유에 대해서는 강의 내에서 제공하는 자료를 확인하시면 도움이 될 수 있습니다. 강의 동영상을 클릭하신 후에는 상단 바 혹은 강의 목차 내에 있는 구름 아이콘을 통해 강의자료를 찾으실 수 있습니다.

강의자료 확인 방법 이미지
자세한 정보는 인프런 FAQ에서 확인하실 수 있습니다: 인프런 FAQ

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

질문하기