🐥 카카오테크캠퍼스 - 2단계 1주차 과제분석
이번 주의 과제는은 Entity를 작성하는 것이다.
화면 설계와 요구사항 명세를 보고, 고민해보라는게 핵심인거 같다.
과제에는 기본적인 테이블(User, Product, Option, Order, Item)은 이미 제시가 되어 있다
또한, API/화면 설계/요구사항 명세서도 주어져있다.
예시로 회원 가입의 응답 데이터를 보면, 아래와 같다.
우린 이제, User 테이블에는 적어도, username,email,password 필드가 필요 함을 알게 되었다.
또한, 테이블을 작성 할 때 PK는 필수이다.
API 명세를 보니, 예외 처리가 필요한 사항도 친절하게 적혀있다.
예외 처리를 어느 타이밍에 해야 할지도 고민해야 한다.
이번에 화면 설계를 봐보자, 테이블 제약 조건이 명시 되어 있다.
또한, 사용자 시나리오가 제공 되어 있으므로, 테이블 간 연관을 어떻게 해야 하는지도 생각해야 한다
결론
1주차 필수 요구사항
- 부족한 기능에 대한 요구사항을 미리 예상할 수 있는가
- (예를 들면 상품등록 api가 기존 요구사항에는 없는데 추후 필요하지는 않을지 이런 부분들을 생각하였는지)
- 요구사항에 맞는 API를 분석하고 사용자 시나리오를 설계하였는가
- (예를 들어 배포된 서버와 화면 설계를 제시해줄 예정인데, 특정 버튼을 클릭했을 때 어떤 API가 호출되어야 할지를 아는지)
- 응답되는 데이터가 프론트앤드 화면에 모두 반영될 수 있는지를 체크하였는가
- (예를 들어 배송관련 비용이 있는데, 이런것들이 API에는 없는데 이런 부분을 캐치할 수 있는지)
- 테이블 설계가 모든 API를 만족할 수 있게 나왔는가?
- (테이블이 효율적으로 나왔는가 보다는 해당 테이블로 요구사항을 만족할 수 있는지에 대한 여부만)
- 테이블명이 이해하기 쉽게 만들어졌는가?
- (상품테이블이 product이면 이해하기 쉽지만, material이라고 하면 이해하기 어렵기 때문)
이 정도는 하자!
- 제시된 테이블을 토대로, 화면 설계를 보고 기본적인 Entity에 필요한 속성을 채운다
- 사용자 시나리오를 보고, Entity 간 연관 관계 유추
욕심을 조금 더 내보자
- API 명세에 맞는 Output만 주면 되니, 테이블을 최적화?해보자
- ERD(draw.io 등) 작성
- 실제 Spring 개발
필수, 미래의 나를 위해!
- 부족한 지식들 ♦️ Obsidian 인박스에 넣어두고 복습
- 제시된 시나리오에 의문점 가지기
Q&A
Q : 만약 DB 설계가 되어있지 않는 토이 플젝 같은 경우에는 어떤 설계를 먼저 진행하는지
A : 테이블을 먼저 설계한다. 그 이유는 JPA를 설계하는 다는 것은 객체를 설계 한다는 것인데,
객체는 시스템의 변경에 쉽게 변경되는데, 데이터베이스는 그런 변경마다 쉽게 변경되면 안되기 때문이다.
Q : 현업에서는 ddl-auto를 사용안하는가?
A : 사용을 안한다. 현업에서는 DB 팀이 있는 경우가 많기에, DB 팀이 최적화 시켜놓은 DB에 맞춰서 백엔드가 이용하는 형식이다.
물론 전체적인 틀을 잡는데 사용하면 편리하지만, 그 이후 최적화를 반드시 적용해야한다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'프로젝트 > 카카오 테크 캠퍼스' 카테고리의 다른 글
🐥 카카오테크캠퍼스 - 2단계 2주차 과제 (0) | 2023.07.03 |
---|---|
🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 최종 설계 (0) | 2023.06.29 |
🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 세부 설계 (0) | 2023.06.28 |
🐥 카카오테크캠퍼스 - 2단계 1주차 Entity 기본 설계 (0) | 2023.06.27 |
🐥 카카오 테크 캠퍼스 - 노션 캘린더 구글로 마이그레이션하기 (0) | 2023.04.24 |