본문 바로가기
카테고리 없음

[DB] 간단한 쇼핑몰 db설계하기

by dev_m.w 2025. 7. 24.

 

 

 

💡회원과 상품테이블 관계 맺어보기 

회원        
  user_id  name  password email
  1 홍길동 1234 minwoo867412@naver.com
  2 전민우 asd asd@nave.com

 

 

상품            
  product_id name descripitn img stock(재고) price
  1 새우깡 맛있는 농심 새우깡 sadsadqa.naver 10 10000
  2 포카칩 바삭바삭 포카칩 …..sadsa 20 20000

 

 

💡어울리는 동사찾기 

회원은 상품을 주문한다.

상품은 회원에 의해 주문된다.

 

한명의 회원은 (하나의 or 여러개) 여러개 상품을 주문한다.

한개의 상품은 (하나의 or 여러개) 여러명의 회원에 의해서 주문된다.

 

회원 :상품  n:m 관계 

 

✅ N : M 관계로 중간 테이블 필요.  그이유는?

상품              
  product_id name descripitn img stock(재고) price user_id
  1 사과 국산 사과주스...... sadsadqa.naver 10 10000 1,2 (1정규형 위배)
  2 주스 맛있는 주스.... …..sadsa 20 20000  

 

만약 전민우, 홍길동이라는 사람이 새우깡을 주문했다고 치면 ,  상품이라는 테이블에 어떤 회원이 주문했는지 컬럼을 만들고 그

컬럼안에는 원자값이 한개가 들어오는게 아니라 여러개의 값이 들어옴 , 즉   M:N 관계를 직접 표현할 수 없기 때문에, 중간 테이블을 만들어야 한다.

 

 

 

 

  • “2024년 2월 1일  전민우 고객이 사과 2개, 주스 1병을 주소는 경기도 용인수 수지구, 결제는 카드로 주문함  이걸 테이블로 표현하려면?
주문                 
  order_id user_id product_id(fk) qantity(수량) price 주소  결제방식 주문날짜
  1 1 1 2 20000 경기도 용인시 수지구 카드 2024-02-01
  2 1 2 2 10000 경기도 용인시 수지구 카드 2024-02-01

 

 

이렇게 설계하면 문제점

 

1. 같은 주문인데 주소,결제방식,주문날짜가 중복됌.  -> (1번 회원의 주소가 바뀌면 답이없다 다 찾아서 고쳐함.) .

2. 주문 단위로 관리가 안됨

  • 주문을 취소하고 싶을 때 → 상품 여러 줄을 찾아서 삭제해야 함

3 통계 내기 어려움

  •  "하루에 몇 건의 주문이 있었나?"
    → order_item만 있으면 상품 수로 착각할 수 있음

 

주문 , 주문 상세로 테이블을 나눈다.

 

 

주문         
  order_id user_id 주문날짜 결제방식
  1 1 2024-02-01 카드
  2 1 2024-02-01 네이버페이
  4 1 2024-02-01 카카오페이
  5 1 2024-02-01 ,,,,,

 

 

주문 상세          
  order_detail_id order_id(fk) product_id(fk) qantity(수량) price
  1 1 1 2 2000
  2 1 2 2 1000

 

 

이렇게 설계하면 좋은점

 

1. 주문1건을 취소할떄 주문 상세 테이블에서 order_id = 1 이렇게 하면 한 주문이 다삭제됌. 

2.결제 방식이 바뀌더라도 주문 테이블  한 줄만 변경 하면됌.

3. 주문 통계 집계도 가능.