본문 바로가기

프로젝트

[서점 프로젝트] ERD 설계

개인적으로 가장 어려웠던 시간인 것 같습니다.
프로젝트를 위한 데이터베이스를 생성하기 전에 개체들의 관계를 명확하게 하고 싶었습니다.


📋 회원

이메일, 아이디, 비밀번호를 속성으로 가지고 있습니다.
개발을 하면서 확장이 된다면 회원 별로 주소지를 넣는 것도 고민해보려고 합니다.

 

📋 카테고리

카테고리 이름을 속성으로 가지고 있습니다.

 

📋 도서

도서에 대한 정보(제목, 저자, 요약, 설명 등)을 속성으로 가지고 있습니다.
카테고리 입장에서 도서는 하나도 없을 수도, 여러 권일 수도 있습니다.
도서는 카테고리를 하나만 포함하도록 설계할 것이기 때문에 둘의 관계는 1:N으로 설계했습니다.

 

📋 후기

같은 도서에 대하여 후기는 한 번만 작성할 수 있습니다.
따라서, 회원과 도서의 FK 값을 PK 값으로 하여 각각 1:N 식별 관계로 설계했습니다.
추가로 내용과 별점을 속성으로 가지고 있습니다.

 

📋 장바구니

하나의 회원은 하나의 장바구니만 보유할 수 있습니다.
그래서 장바구니 역시 회원 테이블과 1:1 식별 관계로 만들었습니다.

 

📋 장바구니 항목

도서 입장에서 장바구니에 담기지 않을 수도, 여러 개의 장바구니에 담길 수 있습니다.
장바구니 또한 도서를 한 권도 담지 않을 수도, 여러 종류의 도서를 담을 수도 있습니다.
N:N 관계를 나타내기 위해서 장바구니 항목이라는 징검다리 테이블을 만들었습니다.
추가로 수량을 속성으로 만들었습니다.

 

📋 주문

회원은 주문을 하지 않을 수도 있고 여러 번 할 수 있습니다.
공동 구매 개념은 없기 때문에 하나의 주문은 하나의 회원에 대한 것입니다.
따라서 둘을 1:N 관계로 설계했습니다.
배송 주소와 통합 가격을 속성에 추가했습니다.

 

📋 주문 항목

장바구니와 마찬가지로 주문과 도서도 N:N 관계를 형성합니다.
따라서, 징검다리 테이블로 필요한 주문 항목을 만들고 수량 속성을 추가했습니다.

 

완성된 서점 ERD


생각했던 것보다 오래 걸린 작업이었는데,
만들어보니 개체들의 관계를 한 눈에 볼 수 있고, 데이터의 흐름을 파악하기 쉬운 느낌이 들었습니다.

이번 포스팅은 여기서 마치겠습니다.
피드백이 있다면 언제든지 댓글 남겨주세요! 감사합니다.