https://dbdiagram.io/d/66da899beef7e08f0ede6fd6
https://dbdiagram.io/d/Copy-of-STUDULER-DB-66dea39bbc6a4b5bb59dce49 - updated version

수업
- 선생과 학부모가 수업코드를 통해 하나의 수업에 매칭이 됨
- 선생 field의 계좌번호로 선생과 학부모 사이의 돈거래가 진행
- 정산 횟수와 수업 요일에 따라 수업 날짜의 array가 생성됨.
- 정산을 하고 나서도 이전 수업들에 대한 기록(지난 모든 수업 날짜)가 남음.
- 정산일은 디폴트로 정해지고 변경사항(달력에서 수업 추가, 수업 삭제)이 있을 때만 업데이트됨.
- 수업마다 수업 횟수만큼의 date 자료구조가 있고, 같은 수업의 date들끼리의 관계에 대한 정보가 없으므로 정산일 업데이트(dateofpayment 필드 업데이트)는 그 수업의 모든 date들로 알고리즘을 돌려서 마지막 날짜에 해당하는 date가 정산일이 됨.
→ 알고리즘을 돌리는 경우는 마찬가지로 변경사항(수업 추가, 수업 삭제)이 있을 경우에만
- 선불일 경우에 정산일은 첫 번째날, 책임감을 가지고 수업에 임하라는 의미로
- 정산일에 정산을 하지 않았을 경우 정산 금액과 함께 미정산 기록이 스택 형식으로 남음.
- 미정산 기록은 평소에 null이었다가 정산일이 되면 업데이트가 되고 사용자에게 알림을 보내줌.
달력
- 각 수업의 date들을 끌어와서 달력에 표시함. 이때 각 수업에는 dateofpayment 필드가 있으므로 정산일에 해당하는 날은 특별하게 표시됨.
- 사용자가 임의로 달력에서 하나의 날짜에 대한 셀을 꾹 눌러서 그날의 수업 삭제, 수업 추가를 진행할 수 있음. (전체 달력에서는 불가능, 개별 수업 달력에서만 가능)
- 수업을 삭제할 경우 자동으로 기존 정산일 이후의 새로운 수업이 새 정산일이 됨.
- 수업을 추가할 경우 자동으로 마지막 정산일 수업이 빠지고 그 전의 수업이 새 정산일이 됨.
- 수업 시간(몇 시간 했는지)은 가시적으로 투명도를 통해 사용자에게 보이게 할 수 있고, 정확한 integer는 날짜를 클릭했을 때 위에 띄우게 하는 걸로