내일배움캠프(Spring 7기)/내일배움캠프

[CH 3 일정 관리 앱 만들기] 도전 기능 - 요구사항 정의 및 설계

가지코딩 2025. 5. 12. 11:08

도전 기능 - 요구 사항 정의

 

Lv3. 연관 관계 설정

  • 작성자와 일정의 연결
    • 작성자를 할 일과 분리해서 관리
    • 작성자 테이블을 생성하고 일정 테이블에 FK를 생성해 연관관계를 설정한다.
      • 작성자는 이름 외에 이메일, 등록일, 수정일 정보를 가지고 있다.
      • 작성자의 고유 식별자를 통해 일정이 검색이 될 수 있도록 전체 일정 조회 코드 수정.
      • 작성자의 고유 식별자가 일정 테이블의 외래키

 

Lv4. 페이지네이션

  • 많은 양의 데이터를 효율적으로 표시하기 위해 데이터를 여러 페이지로 나눈다.
    • 페이지 번호와 페이지 크기를 쿼리 파라미터로 전달하여 요청하는 항목을 나타낸다.
    • Paging 객체를 활용할 수 있음

 

Lv5. 예외 발생 처리

  • 예외 상황에 대한 처리를 위해 HTTP 상태 코드(링크)와 에러 메시지를 포함한 정보를 사용하여 예외 관리
    • 필요에 따라 사용자 정의 예외 클래스를 생성하여 예외 처리를 수행할 수 있다.
    • @ExceptionHandler를 활용하여 공통 예외 처리를 구현할 수도 있다.
    • 예외가 발생할 경우 적절한 HTTP 상태 코드와 함께 사용자에게 메시지를 전달하여 상황을 관리한다.

 

Lv6. null 체크 및 특정 패턴에 대한 검증 수행

  • 유효성 검사
    • @Valid 어노테이션을 이용
    • 할일은 최대 200자 이내로 제한, 필수값 처리
    • 비밀번호는 필수값 처리
    • 담당자의 이메일 정보가 형식에 맞는지 확인

API 명세서

Postman

https://documenter.getpostman.com/view/44635744/2sB2j9687J

 

일정 관리 앱

`필수 기능` - Lv 0. API 명세 및 ERD 작성 - Lv 1. 일정 생성 및 조회 - Lv 2. 일정 수정 및 삭제 `도전 기능` - Lv 3. 연관 관계 설정 - Lv 4. 페이지네이션 - Lv 5. 예외 발생 처리 - Lv 6. null 체크 및 특정 패턴

documenter.getpostman.com


ERD 설계 및 구현

개념적 설계

 

논리적 설계 - ERD

 

 

물리적 설계

CREATE DATABASE IF NOT EXISTS todoV2;

USE todoV2;

CREATE TABLE authors (
   id BIGINT AUTO_INCREMENT PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   email VARCHAR(100) NOT NULL UNIQUE,
   password VARCHAR(255) NOT NULL,
   created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
   updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE todos (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50) NOT NULL,
    contents TEXT,
    author_id BIGINT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE
);