관계 모델과 SQL
도서·회원·대여 관계를 모델링하고 SQL로 저장 사실을 확인합니다.
진도 0%
레슨
- 대여 관계와 키
도서 제목과 실물 도서·회원·대여 이력의 관계를 구분합니다.
- 테이블과 제약
PK·FK·UNIQUE·NOT NULL·CHECK로 데이터 규칙을 표현합니다.
- 조인과 집계
조인 전후 행 수와 NULL을 고려해 대여 목록을 조회합니다.
- 정렬과 실행계획
안정적인 페이지 정렬과 인덱스의 조회·쓰기 비용을 설명합니다.
관계 모델과 SQL 미션
앞 모듈의 결과를 이어서 도서 대여 데이터 모델과 검증 SQL을 작성합니다.
요구사항
- books는 실물 한 권이며 members와 loans를 PK·FK로 연결합니다.
- 반납 시각 nullable, 대여 시각 필수 등 제약과 정규화 이유를 기록합니다.
- 앞 모듈의 파일 도서를 DB로 옮기는 SQL과 조회 SQL을 작성합니다.
- 앞 모듈 solution의 파일 저장 API와 누적 테스트를 그대로 유지하며 SQL 학습 어댑터를 추가합니다. HTTP DB 저장소 교체는 다음 모듈입니다.
- borrowed=true 파일은 회원·시각 확인 전 이관을 거부하고 원본은 변경하지 않습니다.
- MODEL.md에 키·최소/최대 관계·삭제 제한·제약 한계를 설명하고 page.sql·index.sql을 완성합니다.
완료 기준
- ./mvnw test에서 누적 84개 테스트의 실패·오류·건너뜀 0입니다. starter는 기존 테스트를 유지하며 이번 SQL 요구 일부에서 실패합니다.
- H2 2.1.214가 중복 PK·없는 도서/회원 FK·중복 email·NULL/일반 공백 제목·대여 필수 시각·역전 반납·참조 부모 삭제를 거부합니다.
- 파일 이관 후 ID·제목·행 수가 같고 이관 충돌은 전체 롤백합니다. 대여 없는 회원·반납만 한 회원·동명이인 집계와 title,id 페이지 결과가 기대와 같습니다.
- target/plan-evidence.txt에 books 3행의 인덱스 전후 계획과 시간 미측정 제한을 기록하고 결과가 같은지 검증합니다.
./mvnw test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 앞 단계의 계약과 테스트를 유지하며 변경 이유를 설명합니다.
- 정상·경계·실패 경로의 근거와 재현 절차를 제출합니다.