본문 바로가기
두드리는 개발자 홍차/Database

TIL #014 MySQL 데이터 모델링

by 홍차23 2019. 11. 22.

1. ER 모델링

ER모델이란, 현실세계의 모든 사물을 개체(Entity)와 개체 간의 관계(Relationship)로 표현한 것이다. 요구사항에 따른 핵심 개체와 관계를 정의하고, 그에 대한 다이어그램을 작성하는 것을 개념적 데이터 모델링이라고 한다. 이러한 개념적 모델링을 통해 논리적 설계(스키마 작성), 물리적 설계(데이터베이스 구현)로 나아갈 수 있다.

 

 

쇼핑몰의 ER Modeling

 

 

 

 

 

2. 데이터베이스 설계

 

1. 로그인을 했을 때 상품을 구매할 수 있다.

2. 상품 정보가 있어야 한다.

3. 상품 결제 정보가 있어야 한다. 

4. 상품 태그가 카테고리 역할을 하며, 태그에 따라 상품을 검색할 수 있다.

5. 상품 후기를 댓글로 남길 수 있다.

 

  • User와 Checkout 은 1:N 의 관계이다. 한 명의 구매자는 여러 주문을 가질 수 있다.
  • Products와 Checkout은 N:M 의 관계이다. 한 상품에 여러 개의 결제주문서가 있을 수 있다. 또한 하나의 결제주문서에 여러 개의 상품이 있을 수 있다. 다만,  many to many 는 직접 관계를 연결하지 못하므로 Checkout_has_Products 테이블을 생성한다. (다대다 테이블의 경우, 쿼리 결과 중복된 데이터가 나올 수 있기 때문이다. 따라서 테이블 사이를 연결해주는 연결 테이블을 만들어서 일대다의 관계로 단순화한다.)
  • 카테고라이징 및 검색에 쓰이는 Tag 와 Products 역시 마찬가지로 N:M 의 관계이다. 
  • Products 와 ProductsMemo(상품후기)는 1:N 의 관계이다. 한 개의 상품에 여러 개의 댓글 후기가 작성될 수 있다.

 

이상으로 ER Modeling 과 Database 설계과정을 살펴보았다.

 

3. Schema Data Type

Checkout Data Type 비고
id Bigint.Unsigned  
imp_uid String  
merchant_id String  
paid_amount Integer  
apply_num String  
buyer_email String  
buyer_name String  
buyer_tel String  
buyer_addr String  
buyer_postcode String  
status String  
song_jang String  

 

추가로 위의 스키마에 쓰여있는 MySQL 데이터형 및 크기에 관한 참고자료 링크를 남긴다.

https://blog.lael.be/post/115

 

 

 

 

 

댓글