[DataBase] 인력 필요량 예측 및 배치 시스템 데이터베이스 설계

김태희·2025년 6월 30일
0

데이터베이스

목록 보기
1/3

인력 필요량 예측 및 인력 배치 시스템

이 프로젝트는 대학교 '데이터베이스설계' 강의에서 진행하였다.

한 학기동안 개념 학습, 시험 공부, 매주 진행하는 팀 활동으로 많은 노력을 쏟았다.

그 결과 약 70명중 1-2등으로 A+라는 성적을 받았다.

프로젝트의 주제는 "데이터베이스를 활용한 시흥시의 불편함 개선"이었고 이때 사용자가 현업에서 실제로 사용할 수 있는 데이터베이스를 설계해야했다.

이 강의와 프로젝트를 통해 효율적인 ERD 설계를 중심으로 정규화나 각종 데이터베이스에 대한 지식을 배웠다.
또한 SQL을 배우고 구축한 데이터베이스에 샘플데이터를 삽입해 SQL문을 통한 시연까지 해보았다.

프로젝트는 다음과 같은 과정으로 진행되었다.

  1. 인터뷰 요청

  2. 인터뷰를 통한 업무 및 요구사항 분석

  3. ERD 설계(논리적 설계) 및 보완

  4. 용어사전 및 도메인 기술서 작성

  5. 물리적 설계

  6. 발표 및 보고서 작성
    물리적 설계를 통한 테이블에 샘플 데이터 삽입 및 SQL문 시연



프로젝트 개요

학교 주변의 주점과 음식점은 우리 학교 학생들이 대부분의 손님을 차지한다.

이 점으로 학교 행사, 시험기간, 동아리 활동과 같은 교내의 요인들로 인해 사람들이 몰리는 시간대와 요일이 급격하게 변화한다.

이러한 점으로 사람이 없을 줄 알고 사장님 혼자서 홀과 주방을 모두 담당하시다가 손님이 몰려와서 안주가 나오는데 1시간 가까이 걸렸던 적도, 주변 학생들 중에서도 알바를 하다가 손님이 없어 어쩔 수 없이 조기 퇴근하는 경우도 보았다.

또한 사장님께서 여러 인력을 여러 시간대에 매일 카카오톡 단톡방으로 배치하는데, 어려움을 느끼신다고 하셨다.

이런 배경속에서 학교 행사나 여러 요소들을 동시에 관리해서 필요한 인력을 예측할 수 있는 인력 배치 시스템이 있다면 아래의 3가지 주체에게 각각 좋은 영향을 미칠 수 있을 것이라고 생각했다.

1. 자영업자
인건비 절감
효율적인 식자재 관리
인력을 쉽게 관리

2. 직원(알바생)
근로 시간 예측 가능
급여 안정성 증가

3. 시흥시 주민(시설 이용자)
빠른 서비스(EX : 서빙 시간)
질 좋은 서비스(EX: 음식의 신선도)

주제의 구체화

나는 학교 앞 번화가의 가장 큰 주점을 주제로 선정했다.

처음에는 시흥시 자영업자의 효율적인 인력배치 시스템을 주제로 선정하려했지만 좁은 주제로 시작해 나중에 확장하는것이 더욱 효과적일 것이라고 생각했다.

예를 들면 어떤 자영업이든 필요인력의 정도를 알 수 있는 인력배치 시스템을 막연하게 주제로 시작하기보다는 학교라는 변수에 가장 민감하게 변화하는 학교 앞 번화가를 대상으로 시작해서 점차 데이터베이스를 확장해나가는게 효율적이라고 생각했다.

실제로 우리 학교 앞 번화가가 시흥에서 가장 큰 상권 중 하나였고, 주변 자영업들의 매출변동은 비슷한 구조를 띤다.

이때 매출이 가장 민감하게 변화하는 대형 주점을 주제로 삼는다면 인근 자영업으로도 시흥시로도 주제를 확장하기 유리하다고 생각했다.



인터뷰 진행

주제를 구체화 시킨 뒤 목표했던 대형 주점에 대한 인터뷰 내용을 설계하고 사장님께 인터뷰를 요청드렸고, 감사하게도 인터뷰에 응해주시기로 하였다.

인터뷰를 진행하며 우리가 생각했던 학생들에 의한 수요 변동에 대한 부분이 맞음을 확인할 수 있었다.

또한 현재 업무가 어떤식으로 진행되고 있는지, 시스템에 어떤 기능이 있으면 좋을지 등을 분석하는 시간을 가졌다.


DFD Level 0(Data Flow Diagram) 설계

인터뷰를 바탕으로 ERD 작성을 위한 업무 기능도를 작성하였다.

또한 업무 기술서와 업무 기능도를 작성하여 ERD 작성을 위한 기반을 마련하였다.

ERD 설계(논리적 설계)

처음에는 위와 같이 도메인 없이 피터 첸(Peter-Chen) 표기법을 통해 ERD를 작성하여 중간 발표를 하였다.

이때 교수님께 피드백을 받았고 또한 개체, 관계, 속성의 검토에 대해서 배우고, 불필요함에도 불구하고 있으면 더 좋은 요소인 비정규화 등 많은 개념을 배웠다.

이러한 배움을 통해 처음엔 막연하게 그리던 ERD가 이젠 왜 필요한지를 이해하게 되면서 개체, 관계, 속성 하나하나 정말 많은 고민을 하면서 수정과 수정을 거듭하였다.

그러하여 용어사전과 도메인을 설계하고 최종발표때는 Toad Data Modeler 툴을 활용해 아래와 같은 최종 ERD를 설계할 수 있었다.



용어사전과 도메인 설계

협업을 피해갈 수 없는 실무에서 용어의 통일은 정말 중요하다고 교수님께서 말씀해주셨다.

논리적 설계를 바탕으로 물리적 설계를 하기 위해서 용어사전과 도메인 설계를 가장 먼저 진행하였다.

용어사전은 정해진 규칙에 따라 더 분리할 수 없는 최소단위의 단수명사를 가능한 사용하려고 노력하였고 약어를 활용했다.

위의 사진은 용어사전의 일부이다.

위의 사진은 도메인 기술서의 일부이고 좀 단순하지만 새로 알게된 점이 있었다.

계좌번호전화번호같은 경우에 연산이 불필요하며 -와 같은 기호도 포함될 수 있고, 데이터의 손실 등의 오류를 초래할 수 있기에 Int 보단 문자열로 관리하는게 맞다는 점이었다.

이런 점 외에도 여러 점들을 고려해서 도메인을 설계할 수 있었다.

물리적 설계

ERD에 용어사전과 도메인 기술서를 바탕으로 물리적 설계를 진행하였다.

DDL 구축 및 샘플 데이터 삽입

Toad Data Modeler을 통해 DDL을 구축하고 MYSQL WorkBench를 활용해 테이블을 생성하고 러프한 샘플 데이터를 삽입했다.

샘플 데이터를 바탕으로 SQL 시연

각종 SQL 문을 실행하며 교수님과 학우들 앞에서 최종 보고서와 함께 시연했다.

대동제와 시험기간 두가지의 사례를 보여주기 위해 극단적인 샘플 데이터를 삽입한체로 시연했다.

학교 축제기간 필요 인력 예측

작년 학교 축제때의 매출 변화 추이를 보며 올해에는 어떻게 인력배치를 해야할지 고민하는 예시이다.

올해 행사정보에서 대학축제가 있음을 확인하고

작년 대동제와 평소일의 데이터를 비교해봐야겠다라고 생각을 한다.

축제때 매출이 많이 나왔음을 확인했지만 더 알아보고자 시간대별 매출을 알아본다.

축제때가 평소보다 매출은 많지만 학생들이 축제가 끝나고 2차로 많이 오는건지 22시 이전에는 오히려 평소보다 손님이 없다.

올해 대동제에는 22시 전엔 인원 1명만 배치해도 되겠다는 결론을 내린다.

기말고사 시험기간 필요 인력 예측

시험 기간과 평소일의 매출을 비교해보니 여러가지 정보를 알 수 있었다.

  1. 시험기간엔 손님이 많이 안오구나
  2. 시험기간 직후에는 손님이 많이 오는구나
  3. 시험기간이어도 금요일이면 장사가 잘되는구나

시험기간의 손님 유형을 보려고한다.

시험기간엔 학생보단 일반인이 더 많다는 특징을 찾아내어서 방문 시간대까지 한번 보려고한다.

일반인들은 학생들보다 일찍오는 편이어서 시험기간엔 이른시간엔 많이 배치하고 늦은 시간에는 최소인력만 투입시켜도 되겠다는 결론을 내린다.

앞선 정보를 고려한 인력 배치

Insert문을 통해 기존의 직원 정보를 활용해 배치한다.

이와 같이 잘 배치되었음을 알 수 있다.


결론 및 느낀점

이처럼 인력 필요량을 예측할 수 있도록 여러 데이터를 수집 저장 분석할 수 있는 테이블과 테이블간의 관계를 설계하고 실제로 데이터들의 상관관계를 통해 인력 필요량을 정해 배치까지 해볼 수 있었다.

데이터베이스의 여러 개념들을 익히고 논리적 설계와 물리적 설계를 거쳐 SQL까지 다뤄볼 수 있는 좋은 경험이었다.

1학년을 보내면서 대학이라는 곳이 단순히 강의를 듣는 곳인줄 알았는데 이렇게 직접 인터뷰도 해보고 실무에서 사용할 수 있는 데이터베이스를 설계해보니 신기했고 4.41이라는 좋은 학점으로 학기를 마무리해 뿌듯하다.

프로젝트를 진행하며 필요한 부분들을 스스로 더 공부해본 경험, 그리고 정말 많은 시간을 할애하며 최종 보고서를 작성하고 발표 시연하고, 팀장으로써 팀원들을 이끌고 리드해본 값진 경험은 당시엔 힘들었지만 나를 더 성장시킨 것 같다.

또 앞으로 어떤식으로 학습해야할지도 감 잡을 수 있었던 것 같다.

이외에도 CS 지식을 다루는 다른 과목들도 벨로그에 작성하며 복습하고 되돌아보는 시간을 가지려고 한다.

0개의 댓글