Project/Individual

[Toy Project] '늦기 전에' ERD 포스팅

빈코 2024. 10. 28. 20:03

개요

오늘은 저번 포스팅이었던 '늦기 전에' 프로젝트 기획 편에 이어서 ERD를 포스팅하려 해요. ERD는 시스템 내의 데이터 요소(엔티티)와 각각의 관계를 표현하는 다이어그램이라고 생각하시면 됩니다. 사실 초기 ERD는 추후에 개발을 진행하면서 여러 테이블과 칼럼들이 추가되거나 삭제될 수 있지만, 작업 이력이라고 생각하고 포스팅하게 되었어요. 좀 더 자세한 이야기는 하단에서 살펴볼게요😁

 

전체 ERD📙

 

첫 번째로, 전체 ERD를 가져왔어요. 프로젝트는 사용자들에게 직업의 정보를 알려주고 더 나아가 실무자들과 소통할 수 있는 공간을 마련하는 것이 목표이기 때문에, 사용자 테이블부터 직업 테이블까지 총 11개의 테이블로 구성이 되었어요. 추후에 실제로 소통하는 단계는 채팅 서비스까지 도입이 되어야 하는데 해당 기능은 DB로 구성하는 것이 아닌, WebRTC 기술을 활용해야 할 것 같은데 이 부분은 아직 구상 중이라 배제하고 만들었어요. 

 

토이 프로젝트 성공담들을 살펴보면, 대부분 초기에는 많은 기능들을 미리 설계하고 만들지 않고 기본적인 기능들을 구축한 다음에 덧붙여가는 식으로 만들었더라구요. 저도 하고 싶은 기능들은 많지만, 처음부터 욕심내지는 않으려고 합니다. (사실 기획 단계의 기능들만 해도 오랜 기간이 걸릴 것 같긴 해요..ㅎㅎ)

 

개별 테이블📘

1) 감사로그 테이블

 

감사로그 테이블은 쉽게 말해 모든 이력들을 저장하는 테이블이에요. 사용자가 게시글을 작성하거나, 관리자가 서버 세팅을 바꾸는 등 모든 일련의 작업들을 저장합니다. 해당 테이블의 용도는 사용자에게 보여주기 위함은 아니고, 특정 문제가 생겼을 때 이력을 확인하기 위해 설계된 테이블이에요. 

 

칼럼은 순번, 등록일자, 사용자 아이디, 사용자 이름, 작업내역 구분, 작업내용으로 구성되어 있는데 여기서 사용자 관련 값들은 하단의 사용자 테이블과 매칭되게 구성할 예정이고, 작업 내역 구분은 사이트 내 카테고리 별로 구분할 생각입니다. 게시판이면 'board', 설정 값이면 'setting' 들의 값들로 구분될 것 같아요. 작업 내용은 말 그대로 사용자나 관리자가 한 행위들의 내용들을 작성할 생각입니다😊

 

2) 게시판 테이블

 

게시판 테이블은 현재로서는 '전직,이직 성공 사례', '직업 정보 공유 게시판', '자유 게시글' 총 3가지의 게시판을 구성할 생각이에요. 각 카테고리별로 게시판 유형 값(board_type)이 달라질 예정이고, 여기서도 user_id와 authority_code는 사용자 테이블의 값과 매칭되게 구현할 생각이에요. 권한 칼럼이 들어간 이유는 본인이 작성한 글은 '작성자' 칼럼으로 판단하고 수정 및 삭제 가능하게 구현이 되겠지만, 관리자의 경우 모든 글들에 접근 권한이 있어야 하기 때문에 칼럼이 추가되었어요.

 

3) 대시보드 테이블

 

대시보드 테이블은 '매월 직업 인기도 현황', '떠오르는 직업' 등의 차트 값을 담을 테이블이에요. 아직은 해당 기능에 대해 자세하게 설계하지 않아서 dashboard_json 값에 모든 값이 들어갈 예정인데, 더 좋은 방법들이 생각나면 json 형태로 모든 값을 저장하지 않고 칼럼을 추가하여 데이터를 관리할 수도 있을 것 같아요.

 

4) 사용자 테이블

 

사용자 테이블은 '사용자 아이디' 부터 '삭제 여부'까지 총 12개의 칼럼으로 이루어져 있어요. 기본적인 정보를 제외하고 설명하면, 로그인 인증은 보안 상 칼럼을 추가하게 되었고, 비밀번호 입력 실패를 여러 번 하게 되면 해당 아이디를 잠그는 역할을 할 예정이에요. 또한, 사용자 정보는 중요한 정보이기 때문에 회원 탈퇴를 진행하여도 설정한 기간만큼은 데이터를 유지할 수 있게, 해당 로우를 삭제하는 것이 아닌 is_deleted 값을 Boolean 타입으로 Y는 삭제, N은 미삭제로 계획하였어요.

 

이 밖의, 소셜 로그인도 진행 할 예정인데 중요한 기능은 아니라고 생각해서 추후에 작업할 예정이에요😁

 

 

5) 사용자 권한 테이블

 

해당 프로젝트는 '정보 공유자', '정보 구매자' 등으로 권한이 나뉠 예정이에요. '정보 공유자'는 자신의 현재 직업에 대한 자세한 정보를 양식에 맞춰 작성하고, 추후에 구현될 '정보 구매자'와의 소통 서비스를 본인의 스타일대로 구현할 장소를 만들 계획이에요.

 

반대로 '정보 구매자'는 여러 카테고리의 직업들을 살펴보면서 각 직업들에 대한 정보를 얻고, 관심이 있는 직업에 실무자와 소통해 볼 수 있는 공간을 마련할거구요! 이러한 시스템이 이루어지기 위해서는 각 사용자마다 권한이 필요해서 해당 칼럼이 추가되었고, 권한 상세는 해당 공유자가 어디까지의 서비스를 하는지, 해당 구매자가 어디까지의 서비스를 구매하였는지에 대한 정보가 들어갈 예정이에요.

 

6) 설정 테이블

 

설정 테이블은 관리서버(웹사이트)의 모든 설정 값들이 들어 갈 예정이에요. 각 설정 값은 setting_type 별로 구분되고, 상세한 내용들은 setting_json 칼럼에 json 형식으로 들어갈 예정입니다.

 

7) 직업 테이블

 

직업 테이블은 occupation_code, occupation_name, parent_code, occupation_code_path, occupation_name_path의 칼럼들로 구성돼요. PK 값은 직업 코드이고, 상위코드와 경로들로 마치 회사 내부의 조직도처럼 구현될 예정이에요.

 

💫 'IT > 개발자 > 웹 개발자' 이런 형식처럼요!

 

8) 직업 상세 테이블

 

직업 상세 테이블은 위에서 만든 직업 테이블과 '직업 코드' 값으로 연결하여 해당 직업의 자세한 정보를 담을 예정이에요. 예시로 웹 개발자라는 직업이 있을 경우 sub_name에는 info라는 정보가 들어가고, sub_json에는 웹 개발자의 자세한 정보들을 담을 예정이에요.

 

9) 직업 분포도 테이블

 

직업 분포도 테이블은 추후에 웹 사이트에서 각 지역별 직업 분포도에 대해서 나타내려고 해요. 정말 많은 정보가 필요하겠지만, 초기에는 인기 많은 직업들부터 차트 형식으로 나타내려고 하는데, 그 때 필요한 정보들을 담을 테이블이에요.

 

PK 값 pno을 시작으로 region_name, region_code, occupation_name, occupation_code, modify_time 총 6가지의 칼럼으로 구성했어요.

10) 파일 테이블

 

마지막으로 파일 테이블은 웹 사이트 내에서 보여질 이미지, 동영상 등 파일 관련 값들을 담을 테이블이에요. 해당 파일들은 서버에 저장되고, 각 파일별로 file_id, file_name, file_type, file_size, file_path, reg_time, thumbnail_url, description, is_deleted 값들을 가질 예정이에요. 

 

여기서도 파일을 복구해야 할 가능성이 있기 때문에, 삭제할 경우 해당 로우를 삭제하는 것이 아닌 is_deleted 값을 이용할 예정입니다.

마치며

지금까지 토이 프로젝트 '늦기 전에'의 초기 ERD를 살펴봤어요. 서두에서 언급했듯이, 추후에 칼럼들과 테이블이 변동될 수 있지만 이 포스팅을 가이드라인으로 잡고 변경해 나갈 것 같아요. 다음 주에는 프로젝트의 전체 흐름인 유스케이스 다이어그램을 포스팅할게요😁

 

반응형