1. 쇼핑몰 데이터베이스에 필요한 사항들을 정리
2.위 내용을 요구사항과 엔티티로 구분한다.요구 사항
엔티티
3. ERD 만들기ERD 툴은 ERDcloud를 이용했다. 요구사항 분석을 참고하여 엔티티들을 테이블로 만들고
이렇게 만들경우 백엔드로 구현할때 조인이 많아져 쿼리문이 복잡해져서 구현이 힘들어지므로 그럼 위와 같이 ERD가 완성된다. 간단한 쇼핑몰 모델링으로 보는 ER 구조 파악 1. 구성 개념적으로는 회원 - 상품(M:M) 구조이지만 실제 개발에서는 구매 테이블을 넣고 회원 - 구매 - 상품 (1:M, M:1) 관계로 테이블이 생성된다 2. 점선과 실선 관계선 표기법의 종류중 Richard Barker 관계선 방식이다 Mandatory(필수/실선) 와 Optional(선택/점선) 관계로 확인할 수있으며 회원 - 구매 (1:M) 관계를 예시로 보자면 (1) 회원은 구매내역이 필수가 아니다 (Optional) (2) 구매내역에는 회원정보가 필수이다 (Mandatory) Information Engineering 방식은 아래의 그림처럼 표현 된다 3. 쿼리에서의 사용 필수 는 inner join 선택은 left join 관계로 표현하면 된다 회원의 구매내역은 구매내역을 left join 으로 구매내역 목록은 회원을 inner join 으로 표현하라는 관계도로 파악하면 된다 4. 양쪽이 선택(Optional)인 경우 (1) 이벤트만 생성해놓고 상품은 추가되지 않는 경우 (Optional) (2) 상품에 이벤트가 적용되지 않는 경우 (Optional) 5. 식별 비식별 관계 식별 관계는 각각의 관계 테이블의 FK를 PK로 지정하는 경우이고 비식별 관계는 FK로 지정해 조인을 하는 방식이다 식별관계에서는 FK의 변경에 따른 PK 업데이트가 번거로워질 수 있고, 비식별 관계에서는 기본적으로 데이터를 특정하기 위해선 join을 여러번 사용해야한다는 단점이있다 6. 정규화 처리 1:M 으로 한테이블 안에서 중복이 발생할 경우에는 테이블을 나눠야한다 ERD를 그려서 의존관계를 표현하면서 설계하기가 쉽지 않았다 쇼핑몰을 참고해서 이것저것 테이블을 만들다가 너무 복잡해져버렸다;; 그래서 일단 고객, 주문, 상세 위주로 간단하게 작성하고 필요한 부분은 구현하면서 채워 넣기로.... 첫번째로 고객 테이블은 고객들의 고유 코드번호, 비회원이 아닐경우 아이디, 비밀번호, 이름, 이메일주소 까지만 간단히 만들었고 두번째로 주문 테이블은 주문 아이디, 고객 고유 코드번호는 고객테이블을 참조하는 외래키로 설정 하였고, 주문 날짜, 총 가격, 주문 상태를 만들었다. 세번째로 상품 테이블은 상품 아이디, 상품 이름, 상품 이미지, 상품 상태, 상품가격 등 상품정보를 담는 테이블을 만들었다. 그리고 주문 상세 테이블을 만들어 각 주문 아이디에 해당하는 상품과 상품 갯수와 상품가격을 표시하는 테이블 따로 설계하였다. |