스파르타 내일배움캠프에서 진행하는 심화 프로젝트 일지를 작성합니다.
다음은 심화 프로젝트의 Starting Assignment를 정리한 노션의 링크이다.
https://skitter-leotard-f46.notion.site/5bb98d3381be413bb4ccea516835ca27
고객-판매자 매칭 서비스가 주어진 주제였고 구체적인 매칭 주제는 자율 결정으로 우리 팀은 심부름 서비스를 주제로 했다.
사용자는 고객, 헬퍼, 관리자로 나뉘고 고객이 도움을 원하는 글을 게시하면 헬퍼는 그 글에 도움 신청글을 남긴다. 고객은 헬퍼들이 남긴 신청글을 여러 기준(글 내용, 도움 횟수 등)을 통해 도움을 받을 헬퍼를 선택한다. 그리고, 헬퍼가 되기 위해서는 회원가입 후 관리자에게 헬퍼 신청글을 남기고 관리자의 승인을 받아야한다.
이번 심화 프로젝트는 기간이 짧아서 많은 기능을 구현할 수 없어 너무 아쉽다. 주제가 너무 마음에 들어서 채팅, 경고, 위치 기반 등의 기능도 추가해서 최종 프로젝트에서 마무리하고 싶다는 생각도 든다.
프로젝트 기획 단계에서 ERD와 프로젝트 기능 순서도(?)를 작성하면서 데이터 모델링에 대한 자료를 접하게 됐다. 어디선가 많이 들어봤지만 정확히 알고 있지 않은 개념이라 이번 기회에 정리해보려 한다.
개념적 모델링
개념적 모델링은 개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정이다.
쉽게 말해 Entity를 추출하고 Entity간의 관계를 정의해 표현하는 것이다.
ER Diagram은 개체를 사각형, 객체의 속성을 원, 개체 사이의 관계를 마름모로 표현하고 연결선을 통해 관계를 표현하는 것이다.
예를 들어, 유저와 게시글을 ER Diagram으로 표현하면 아래와 같다.
이건 귀찮아서 손으로 그렸는데 draw.io 같은 사이트에서 깔끔하게 만들 수 있다.
논리적 모델링
논리적 모델링은 ER 다이어그램을 사용해 관계 스키마 모델을 만드는 과정이다.
개념적 모델링에서 만든 ER 다이어그램을 사용하려는 DBMS에 맞게 Mapping해 실제 데이터베이스로 구현하기 위한 관계 스키마 모델을 만드는 것이다.
스키마 모델 표현 방법은 테이블 형태와 리스트 형태가 있는데 아래는 리스트형으로 표현했다.
사실 게시에 대한 중계테이블은 필요 없지만 대충 이런 느낌이다라는 걸 위해 일부러 추가했다.
물리적 모델링
물리적 모델링은 관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정이다.
작성된 논리적 모델을 실제로 DB에 저장하기 위한 물리적 구조로 정의하고 구현하는 것이다.
아래는 이번 프로젝트에 사용할 물리적 모델링을 통해 작성한 물리적 모델링 ERD이다.
이 ERD에 각 컬럼의 최대 길이도 같이 표기해주어야 한다! (예시 varchar(40)) 나중에 추가해줘야지,,