현재 프로젝트 코칭 기간인데 다들 데이터 모델링하는 부분을 어려워 해서 강사님께서 쇼핑몰에 들어갈 데이터들을 데이터 모델링 하는 것을 예제로 강의 해주셨다.
1. 쇼핑몰 데이터베이스에 필요한 사항들을 정리
- 회원이 상품을 구매한다
- 회원이 상품을 카트에 담을 수 있다
- 회원정보 : 회원아이디, 비밀번호, 성명, 주소, 연락처
- 상품 : 상품아이디, 상품명, 이미지, 가격
- 회원이 요구하는 배송지에 배송을 한다
- 회원을 0 또는 1곳 이상의 배송지를 등록할 수 있다
- 배송지 : 배송지 아이디, 회원 아이디, 우편번호, 연락처, 주소, 기본여부
- 회원이 구매할때 카트에 상품을 담는다
- 카트 : 회원아이디, 상품아이디, 수량, 금액, 날짜
- 회원은 구매시 신용카드로 구매한다
- 신용카드 : 신용카드 아이디, 회원 아이디, 카드사, 카드번호, 유효기간
- 회원은 0 혹은 1장이상의 신용카드를 등록한다
- 주문 : 회원 아이디, 주문 일자, 상품명, 수량, 금액, 배송지 아이디, 카드아이디
2.위 내용을 요구사항과 엔티티로 구분한다.
요구 사항
- 회원이 상품을 구매한다
- 회원이 상품을 카트에 담을 수 있다
- 회원은 구매시 신용카드로 구매한다
- 회원은 0 혹은 1장이상의 신용카드를 등록한다
- 회원이 요구하는 배송지에 배송을 한다
- 회원을 0 또는 1곳 이상의 배송지를 등록할 수 있다
엔티티
- 회원정보 : 회원아이디, 비밀번호, 성명, 주소, 연락처
- 상품 : 상품아이디, 상품명, 이미지, 가격
- 배송지 : 배송지 아이디, 회원 아이디, 우편번호, 연락처, 주소, 기본여부
- 카트 : 회원아이디, 상품아이디, 수량, 금액, 날짜
- 신용카드 : 신용카드 아이디, 회원 아이디, 카드사, 카드번호, 유효기간
- 주문 : 회원 아이디, 주문 일자, 상품명, 수량, 금액, 배송지 아이디, 카드아이디
3. ERD 만들기
ERD 툴은 ERDcloud를 이용했다.
요구사항 분석을 참고하여 엔티티들을 테이블로 만들고 1:1
, 1:n
, n:m
으로 관계를 생성해준다.
관계를 생성할 때 한쪽 테이블의 외래키가 다른쪽 테이블의 기본키가 되는경우 식별관계, 일반 칼럼이 되는경우 비 식별관계로 설정한다.
장바구니
- 상품
의 경우 n:m의 관계이기 때문에 장바구니_상품
이라는 관계테이블을 생성하였는데
이렇게 만들경우 백엔드로 구현할때 조인이 많아져 쿼리문이 복잡해져서 구현이 힘들어지므로 장바구니_상품
테이블에 장바구니의 칼럼들을 추가해주고(역정규화) 장바구니 테이블을 삭제 해준다
그럼 위와 같이 ERD가 완성된다.