[pjt 422] 개발 일지 - ERD와 공통코드, ENUM

Expert Inpyo·2022년 7월 27일
0

PJT 422

목록 보기
2/6

ERD와 공통 코드

ERD 작성 전, 필요한 엔티티에 대해 생각해보았다.

필수적인 요소로

  • 빌딩
  • 쓰레기통
  • 학생
  • 매니저

를 먼저 떠올렸다.

빌딩 - 층 / 층 - 쓰레기통은 각각 1 : N 관계를 생각했다.

[초기 ERD]

초기 ERD

팀원과의 회의 및 컨설턴트님의 초기 피드백으로

  1. 사용 내역은 굳이 m:n 관계를 맺지 않고, 로그 데이터로 처리하기
  2. CAMPUS 라는 테이블을 만들고, 캠퍼스 - 빌딩 / 캠퍼스 - 학생 / 캠퍼스 - 관리자 1 : N 관계 구축하기
  3. 중복될 수 있는 컬럼은 공통 코드 사용하기

이렇게 총 세 가지의 결론을 도출했다.

[ERD_0721]

위 세 결론을 바탕으로, 하기와 같은 초기 erd를 작성했다.(추후 변경 가능성 존재)
크게 세 부분으로, 모델 / 공통 코드 / 로그-통계 부분이다.

모델

모델

캠퍼스 - 건물 / 건물 - 층 / 층 - 쓰레기통 / 캠퍼스 - 학생 / 캠퍼스 - 관리자는 각각 1 : N 관계를 갖는다.
현재 임시로 쓰레기통과 관리자 사이에 "쓰레기통 비움" 이라는 M : N 관계를 나타내는 테이블이 존재한다.
위 테이블은 추후 어떤 관리자가 어떤 쓰레기통을 비웠는지를 추적하는 용도로 사용할 계획이다.

공통 코드

공통 코드

최대한 겹치는 데이터들이 어떤 것이 있을까 회의한 결과, 크게 세 부분으로 결과를 도출하였다.

  1. 쓰레기통 분류 종류

    • 일반
    • 플라스틱
    • 유리
    • 종이
  2. 쓰레기통 현재 상태
    - 정상 (쓰레기통 사용량 30 % 미만)
    - 주의 (쓰레기통 사용량 70% 미만)
    - 위험
    위 단계와 더불어 일정 기간이상 쓰레기통이 비워지지 않은 경우에 따른 상태 변경 조건을 추가할 예정이다.

  3. 관리자 종류

    • 일반(쓰레기통 관련 정보 조회)
    • 선임(쓰레기통 추가/수정/삭제 권한)
    • 마스터(선임 권한 + 해당 캠퍼스 내 건물, 층, 학생, 관리자 추가/수정/삭제 권한)

공통 코드 작성 관련하여
공통 코드-1

공통 코드-2

위 블로그들을 참고하였다.

코드 작성 이후,
"공통 코드를 어떻게 구현할 수 있을까, 어떤 코드가 좀 더 효율적일까?"
에 대해 조사하던 중, enum에 대해 알게 되었다.

인프런 공통코드 enum 질문글
django 공통코드와 enum
쏘카의 공통코드 관리 변천사

해당 질문 글과 블로그를 참고하여
ENUM의 활용이 좀 더 효율적일 것 같다는 생각을 하게 되었고,
아래와 같이 Django 활용 Enum 구축에 성공하였다.

쓰레기통 enum

관리자 enum

통계

통계 데이터 구축 계획은 아래와 같다.
1. 쓰레기통 IoT 장치(아두이노 기반)와 서버의 통신으로 인한 로그 데이터 축적
2. 일일마다 로그 데이터 갱신해주고, python pandas를 활용, 해당 데이터 통계내서 테이블에 넣기

아직 H/W 쪽 구축이 되지 않았고, Django 활용 로그 데이터 쪽 부터 알아야 할 것 같기 때문에, 현재로썬 단순 계획만 있다. 하지만 이 프로젝트에서 내게는 가장 흥미로운 부분이다.

로그_계획

profile
도전! 데이터 엔지니어

0개의 댓글