인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김상형님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 DB 설계 입문/실전

[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 쇼핑몰 (2)

주문 수량과 재고량은 숨은 중복일까요

해결된 질문

작성

·

92

0

만약 주문 수량에 따라 재고량에 바로 반영된다는 기획이라고 가정한다면, 주문수량을 수정 할 때 재고량도 수정해야 하는 숨은 중복 이라는 생각이 듭니다. 이 경우에도 테이블을 분리 하는 것이 맞는 걸까요?

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 상형님! 질문 잘 주셨습니다:D

 

말씀해주신 내용은 기획에 따라 달라질 수 있으나

대부분은 주문 수량과 재고량을 별도의 컬럼으로 구성하는 편입니다!

왜냐하면 주문 수량과는 별개로 재고가 추가 입고된다면 재고량만 고쳐야하는 경우가 있기 때문입니다.

그리고 주문에 대한 정보가 따로 존재한다면 주문 테이블로 분리를 해서 따로 관리를 하게 되겠네요:)

 

이 외로 궁금하신 점 또 생기시면 질문 남겨주세요~~

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김상형님께서 질문하신 “주문 수량과 재고량의 숨은 중복 여부”에 대한 고민은 데이터베이스 설계에서 흔히 발생하는 데이터 무결성과 효율성을 고려한 문제입니다.

주문 수량과 재고량이 서로 연관되어 데이터가 변경되는 경우라면, 두 값이 서로 어떻게 의존하는지 이해하는 것이 중요합니다. 데이터베이스 설계에서 데이터 중복을 피하기 위해 아래와 같은 전략을 고려할 수 있습니다:

  1. 비즈니스 로직 처리:

    • 주문 수량에 따라 재고량이 자동으로 업데이트된다면, 이를 데이터베이스 레벨에서 처리할 수 있는 트랜잭션이나 트리거를 사용할 수 있습니다. 트리거를 사용하면 주문 수량 변경 시 자동으로 재고량을 조정할 수 있으므로, 데이터의 무결성을 유지할 수 있습니다.
  2. 테이블 분리:

    • 만약 주문과 재고가 각기 독립적으로 의미를 가지고 있고, 둘 사이의 관계가 명확히 정의되었다면, 테이블을 분리하여 각기 다른 엔티티로 관리하는 것이 좋습니다. 예를 들어, 주문 내역을 저장하는 테이블과 재고 내역을 관리하는 테이블을 별도로 관리할 수 있습니다. 이 방법은 데이터의 유연성을 높이고, 무결성 여부를 비즈니스 로직에서 명확히 처리할 수 있다는 장점이 있습니다.

기존에 유사한 질문에 대한 논의가 이루어진 링크를 제공하여 도움이 될 수 있습니다:

각 링크에서는 데이터베이스 설계의 다양한 시나리오에서 중복을 어떻게 처리할 수 있는지, 효율적인 방법에 대해서 실질적인 팁을 제공합니다.

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