- Clean + Layered
- 기본적인 계층 구조를 유지하면서 비즈니스 중심 구조로 설계.
- Repository 인터페이스를 비즈니스 계층에 정의하고, infra 계층에서 이를 구현하여 DIP 적용.
- 예외 처리 및 프로젝트 빈 설정.
- 프로젝트 전반에 사용되는 기능 처리.
- 유즈케이스 역할 수행.
- 여러 도메인 서비스를 조합하여 비즈니스 처리.
- 비즈니스 규칙을 정의하고, 도메인 로직 수행.
- movie-application에 필요한 서비스를 제공.
- 외부 연동 관련 로직 처리 (HTTP, Message 등)
- 데이터 저장소 및 외부 API 연동.
- 작성자,수정자,작성일,수정일 컬럼은 실제 테이블에 추가됩니다.
가독성을 위해 ERD 상에서만 제외했습니다. - 테이블 간의 느슨한 결합을 위해 논리적 FK만 맺도록 했습니다.
- Theater-Schedule 을 두어 1:N 으로 풀어냄.
- 상영 일정(ID)마다 좌석이 개별적으로 관리됨.
- 같은 장소, 같은 좌석 번호(seat_number)를 갖고 있더라도 상영 일정이 다르면 다른 좌석으로 취급됨.
- 좌석은 해당 상영 일정에서 단 한 번만 예약될 수 있음.
- 한 좌석을 두 명이 동시에 예약할 수 없음.
- 상영 일정이 지나면 해당 좌석은 예약할 수 없어야 함.
- 최대 5개의 좌석까지 예약 가능.
- 예약된 좌석은 RESERVED 상태로 변경되고, 예약ID를 가지고 있음.
- 한 좌석에 대한 예약 내역은 반드시 하나지만, 한 명의 사용자가 여러 좌석을 예약할 수 있음.


