해결된 질문
작성
·
524
답변 2
1
안녕하세요, qheogus55 님!
설계에 관한 것은 공식이 있는 것은 아니고 실무 경험을 쌓으면서 만들어가고, 또 경험이 쌓이면서 관점이 바뀌기도 하는 것이라 어떻게 하는 것이 정답이다라고 말하기는 어려운데요.
상품 테이블과 재고 테이블을 분리한 이유는 다음과 같습니다.
상품 테이블이 가져야 하는 정보와 재고 정보는 각기 다른 관심사를 가집니다.
상품 테이블은 상품 그 자체에 대한 수많은 정보(이름, 가격, 부가정보 등)를 가질 수 있습니다.
재고라는 개념은 '어떤 것'이 '몇 개' 남아있는지(유효한지)를 관리하는 정보입니다. 즉, 어떤 것인지는 관심이 없습니다.
만약 상품 테이블에서 재고 정보를 관리한다면, 상품 정보를 수정할 때에도 해당 테이블에, 재고 정보를 관리할 때에도 해당 테이블에 CRUD 작업을 수행해야 합니다.
구현이 불가능한 것은 아니지만, 요구사항이나 운영 상황이 복잡해질수록 이에 따른 많은 불편함들이 생길 수 있습니다.
상품이라는 도메인의 생애주기와 재고라는 도메인의 생애주기는 서로 다른 사이클을 가집니다.
상품은 관리자가 처음 등록하고, 더이상 판매하지 않을 때까지 유지되며, 삭제되기 전까지는 자주 수정될 일이 없습니다.
재고는 상품이 판매되기 시작하는 순간부터 존재하며, 상품 정보와 다르게 사용자 요청에 따라 실시간으로 변경됩니다.
즉, 도메인의 생애주기라는 관점에서 상품과 재고는 그 데이터에 접근하는 시점, 주체, 방식이 서로 다르기 때문에, 관리의 용이성을 위해 별개의 테이블에 관리하도록 설계했다고 이해해주시면 좋을 것 같습니다.
도움이 되셨기를 바랍니다.
감사합니다. 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
qheogus55님, 테이블을 분리하여 설계하는 것은 여러 이유가 있을 수 있습니다.
검색 키워드로는 ‘데이터베이스 정규화’, ‘데이터베이스 설계’, ‘테이블 분리 기준’을 사용할 수 있습니다.
실제 강의 내용에 대한 구체적인 질문이라면, 수강 전 문의 게시판을 통해 지식공유자님께 직접 질문해보시는 것이 좋을 것 같습니다.
해당 기능이 활성화된 강의인지 확인해보시고, 원하는 답변을 얻으실 수 있기를 바랍니다.
참고로 이렇게 설계한 이유에 대해서는 강의 내에서 제공하는 자료를 확인하시면 도움이 될 수 있습니다. 강의 동영상을 클릭하신 후에는 상단 바 혹은 강의 목차 내에 있는 구름 아이콘을 통해 강의자료를 찾으실 수 있습니다.
강의자료 확인 방법 이미지
자세한 정보는 인프런 FAQ에서 확인하실 수 있습니다: 인프런 FAQ