쇼핑몰의 물건을 등록할 경우, 어떤 데이터 정보들이 필요할까. 당장 Front에 보이는 정보들도 하나하나 세어본다면 상당히 많은 항목들을 차지한다. 검색했을 경우 나오는 태그들도 별개로 입력이 될 수 있고, 비슷한 제품을 홍보하기 위한 코드들이 존재하는 경우도 많다.
네이버쇼핑에 물건을 한번보자
보이는 정보들을 나열해보자면 아래와 같다.
- 이미지
- 카테고리
- 상품이름
- 상품배송종류
- 할인율
- 가격
- 할인정보
- 포인트정보
- 최대구매개수
- 배송정보
- 개수
- 배송정보
해당 정보들이 어떤 테이블을 가지고 어떤 관계를 가지는지는 알 수 없지만, 얼핏 보더라도 단순히 한두가지의 테이블이 아니라는 것은 알 수 있다. DB를 설계한다면 매핑관계도 신경써야하며, 최소한의 데이터를 쓰기위해 중복될 수 있는 정보들은 최대한 추려나가야 한다.
테이블이 너무 늘어나도 여러개의 조인으로 인해 오류, 메모리낭비가 심해질 수 있고 무엇보다 복잡해진다. 특성상 매핑관계가 정해지고 PK, FK 설정 관계조인이 완성된 후에는 수정하기가 까다롭기 때문에 설계를 시작했을 때 부터 확실히 잡고가는것이 좋다.
개인적으로 이미 완성된 테이블에 신규 컬럼을 추가하기 힘들어서, 추가해야하는 정보를 다른 테이블에 조인해서 사용했던 적이 있다.
사용하려고 하는 Front 페이지를 일단 보자
DB 로직은 신경쓰지 않고, 내가 물건을 볼때 필요한 정보들이 무엇이었는지로만 생각하고 작성한 페이지. 필수적인 정보들을 나열하고, 초안을 작성한 후에 더 필요한 부분을 추가한 후에 ERD 설계에 들어가서 더 구체적인 관계설정을 해보려고 한다. 현재로써 필요한 정보들은 표로 작성해본 후에, 요구정의서를 생각해보자
DB 필요한 정보
경험상 이쯤이면 되지 않을까...? 라고 생각했을 경우에는 보통 많이 부족했다. 이쯤이면 과할거같은데? 정도가 되었을때 필요한 정보들이 충분히 들어있었다.
다음 포스트에서 정확한 요구사항들을 정의한 것과 실제 erd 설계를 하면서 세부적인 부분을 추가하자
'SpringBoot > 프로젝트 게시판 만들기' 카테고리의 다른 글
[DB설계] 요구사항 정의하기 (1) | 2023.11.17 |
---|---|
React props에서 정보 받기 (부모-아들) (1) | 2023.11.06 |
커스텀 Login + OAuth2 (구글, 네이버, 카카오) API 구현 [5] - OAuth2 로그인 구현 (0) | 2023.10.10 |
커스텀 Login + OAuth2 (구글, 네이버, 카카오) API 구현 [-] 트러블 슈팅 (0) | 2023.10.06 |
커스텀 Login + OAuth2 (구글, 네이버, 카카오) API 구현 [4] - OAuth2 로그인 구현 (0) | 2023.09.26 |