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


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 데이터형 및 크기에 관한 참고자료 링크를 남긴다.
'두드리는 개발자 홍차 > Database' 카테고리의 다른 글
TIL #022 AWS S3 버킷 생성 - 삽질의 시작 (1) | 2019.12.05 |
---|---|
TIL #020 이미지 서버 생성기1 (2) | 2019.12.02 |
TIL #004 MongoDB (0) | 2019.11.06 |
TIL#001 Mongodb atlas 환경설정/gitignore/env (0) | 2019.11.03 |
댓글