시리즈
웹 앱 프로젝트를 구성하며 경험한 아키텍처, 패턴, 설계, 구현에 대한 문제점과 경험, 그 해결을 기록
도메인 구성
- 기능과 프로토 타입 UI 구성
- 도메인 로직 설계
도메인에 따른 클래스 다이어그램 구성
- 클래스 간 연관 관계를 어떻게 구성하지
- 클래스를 어떻게 분리하지
도메인 로직에 따른 DB 연관 관계 구성
- DB를 단순히 클래스대로 매핑하고 구성하던 이전 프로젝트와는 다르다.
기능은 구성 했는데..
- 기획에 따라 기능을 작성하고 API 정하고, JSON 포맷까지 정했음
- UI까지 완성 했고 API 설계를 하면 되겠다고 생각했으나, 생각해보니 클래스/DB를 어떻게 구성하지라는 생각이 들었음
도메인 로직부터 구성하자
- 아니 연관 관계가 뭐야
- 각 도메인은 연관 관계를 가진다
- 연관 관계에 따른 도메인 로직 구성의 필요성
구성
- 반드시 이메일과 비밀번호로 로그인을 해야한다.
- 로그인이 불가능하면 이메일과 비밀번호로 회원 가입을 해야한다.
- 유저 정보는 n개 이상을 소유
- 세부 정보 : 이메일(PK), 닉네임, 성별, 전화번호, 지역, 비밀번호, 등급
- 각 회원 별 소지금액 정보를 저장
- 각 회원 별 관심 분야를 저장, 관심 분야는 있을 수도 없을 수도 있음
- 유저는 질문을 할 수 있음
- 한 명의 유저는 다수의 질문을 올릴 수 있고, 하나의 질문은 한 명의 유저와 매핑
- 하나의 질문에는 여러 개의 답변이 달릴 수 있음
- 유저가 존재하지 않는다면 질문도 존재할 수 없음
- 유저는 답변을 할 수 있음
- 한 명의 유저는 다수의 답변을 올릴 수 있고, 하나의 답변은 하나의 질문과 매핑
- 질문이 존재하지 않는다면 답변도 존재할 수 없음
새 도메인 모델
- 유저가 질문을 가지는 것이 아닌 질문 게시글을 사용할 때 유저가 필요한 것
문제점
N:N 관계를 없앤 도메인 모델