"OTT 구독료 분할 및 파티 매칭을 스마트하게" 정산 시스템의 핵심 비즈니스 정산 프로세스, 실시간 가감 연동 신뢰도 변동 이력 및 미납자 제어를 물리 데이터베이스 계층에서 무결성 있게 자동 제어하는 1/N 정산 플랫폼 데이터베이스 저장소입니다. 본 프로젝트는 2026-1 이화여자대학교 데이터베이스 수업 프로젝트 11조 결과물입니다.
- 총 개발 기간: 2026년 5월 ~ 2026년 6월
| 이름 | 역할 | GitHub |
|---|---|---|
| 고예빈 | Back-End | @KoYebin |
| 김나성 | Back-End | @na0302 |
| 김서현 | Front-End / Back-End | @seohyeonS2 |
| 박선영 | Front-End / Back-End | @kakao3838 |
본 저장소의 데이터 인프라는 애플리케이션 서버의 부하를 줄이고 데이터의 무결성을 영속적으로 보장하기 위해 트리거, 프로시저, 이벤트를 활용한 절차적 데이터베이스 프로그래밍으로 통합 설계되었습니다.
create_table.sql: 회원, 파티, OTT 요금제, 정산 및 대금 수납 관계를 정규화하여 외래키(FK) 제약조건 및 영속성 레이아웃 설계
after_member_signup.sql: 신규 회원가입 시 기본 신뢰도 점수 및 공간 인프라 초기화 데이터 생성after_join_request_accept.sql: 파티 가입 신청 수락 시 해당 파티 인원 카운트 트리거링 및 자동 마감 제어after_party_settlement_insert.sql: 월별 정산서 개설 트리거링 발생 시 파티 멤버별 분할 청구 내역 계산 및 매핑after_member_payment_update.sql: 파티원의 수납 완료 상태 전환 시 실시간 신뢰 지수 가산 및 파티 전원 납부 완료 트랜잭션 검증
proc_make_monthly_settlement.sql: 각 파티의 결제 주기를 계산하여 매달 정산서 데이터를 일괄적으로 산출 및 생성user_payment_punish_unpaid_members.sql: 정산 기한을 초과한 미납 대상자를 조회하여 신뢰 지수 차등 감점 및 패널티 이력 적재
make_monthly_party_settlement.sql: 주기적인 파티 정산서 생성을 위한 월 단위 자동 가동 이벤트 배치evt_daily_unpaid_check.sql: 매일 자정 미납자 패널티 부여 프로시저를 주기적으로 가동 및 동기화하는 영속적 이벤트 링커
- 테스트 데이터 세팅 (
05_data): 비즈니스 시나리오 검증용 테스트 데이터 셋 영속화 - 쿼리 검증 (
06_query): 도메인 성능 검증용 복합 선택 쿼리 테스트 검증 완료 - 인덱스 성능 튜닝 (
07_index): 대용량 매칭 및 조회 트래픽 병목을 원천 방지하기 위한 복합 물리 인덱스 설계idx_join_request_member_party_created: 가입 신청 내역 조회 고속화idx_member_payment_integrated: 회원별 정산 수납 상태 추적 가속화idx_party_ott_status: OTT 플랫폼 및 상태별 파티 필터링 최적화
==========================================================================================
[ 1/N SYSTEM ERD STRUCTURE ]
==========================================================================================
[1. 회원 및 신뢰도 시스템]
- Member : 유저 고유 식별 정보, 패스워드, 이메일, 계좌 정보 및 현재 신뢰도 지수
- ReliabilityHistory : 정산 연체/완료 등에 따른 유저별 신뢰 지수 변동 이력 및 사유 관리
[2. OTT 플랫폼 기반 데이터]
- Ott : 서비스하는 OTT 종류 (Netflix, Tving, Disney+, Watcha, Wavve 등)
- OttPlan : 각 OTT 플랫폼별 커스텀 요금제 메타데이터 (이름, 월 금액, 최대 동시 접속자 수)
[3. 파티 모집 및 매칭 가동]
- Party : OTT 플랫폼 요금제 기반 개설된 방 정보, 파티장 ID, 매칭 상태(PartyStatus)
- JoinRequest : 일반 유저가 파티에 가입 신청을 넣은 상태 제어 (PENDING, ACCEPTED, REJECTED)
- PartyMember : 파티에 소속 완료된 멤버 매핑 데이터 테이블
[4. 정산 및 대금 수납 시스템]
- PartySettlement : 특정 파티에서 매달 생성되는 총액 정산 단위 데이터 (정산 상태 관리)
- MemberPayment : 해당 정산 회차에 파티원 개개인이 납부해야 하는 상태 제어 (PAID, UNPAID)
==========================================================================================
Note
아래 배지나 링크를 클릭하시면 ERDCloud 공식 사이트에서 테이블 구조 및 실시간 컬럼 명세를 상세히 확인하실 수 있습니다.
MySQL 전용 클라이언트 GUI 툴(HeidiSQL, MySQL Workbench 등)을 통해 해당 DB 서버에 root 권한으로 접속한 뒤, 객체 간 참조 무결성 오류 및 컴파일 의존성 에러를 완벽하게 차단하기 위해 반드시 아래에 명시된 서브 디렉토리 일련번호 순서에 맞춰 스크립트를 순차적으로 실행합니다.
# 1단계: 핵심 물리 테이블 스키마 빌드 및 도메인 제약조건 수립
mysql> source 01_table/create_table.sql;
# 2단계: 동적 상호작용 및 수납 연동 제어 트리거 4종 컴파일 등록
mysql> source 02_trigger/after_member_signup.sql;
mysql> source 02_trigger/after_join_request_accept.sql;
mysql> source 02_trigger/after_party_settlement_insert.sql;
mysql> source 02_trigger/after_member_payment_update.sql;
# 3단계: 월별 정산 및 미납자 패널티 처리 코어 프로시저 2종 등록
mysql> source 03_procedure/proc_make_monthly_settlement.sql;
mysql> source 03_procedure/user_payment_punish_unpaid_members.sql;
# 4단계: 자정 주기 배치 및 월 단위 결제 스케줄러 자동화 이벤트 2종 활성화
mysql> source 04_event/make_monthly_party_settlement.sql;
mysql> source 04_event/evt_daily_unpaid_check.sql;
# 5단계: 알고리즘 검증용 테스트 기초 데이터 적재
mysql> source 05_data/insert_test_data.sql;
# 6단계: 복합 조건 탐색 가속화를 위한 도메인별 복합 인덱스 3종 구축
mysql> source 07_index/idx_join_request_member_party_created.sql;
mysql> source 07_index/idx_member_payment_integrated.sql;
mysql> source 07_index/idx_party_ott_status.sql;