0. 개요
- 프론트 개발을 어느정도 완료하고 이제 백엔드 개발을 준비하고 있다.
- 백엔드 개발의 시작을 ERD 제작으로 선정하여 ERD를 그려보았다.
- ERD를 작성해보니 백엔드를 개발하면서 풀어야하는 문제점을 몇가지 발견하였다.
1. Entity 소개
- 프로젝트 SAI는 다음과 같은 Entity로 구성된다.
a) User Table
- User는 SAI 서비스에 가입한 회원의 정보를 관리하는 테이블이다.
- 회원 가입 시 작성한 정보가 User Table에 입력된다.
- User Table의 구성은 다음과 같다.
- id(PK) - 자동 증감을 사용한다.
- email - 로그인 시 사용할 이메일 주소 / 필수 값 / 유효성 검증 필요
- password - 로그인 시 사용할 비밀번호 / 필수 값 / 유효성 검증 필요
- userName - 가입하는 회원의 이름이다 / 필수 값 / 유효성 검증 필요
b) Friend Table
- Friend는 모든 회원의 친구 정보를 관리하는 테이블이다.
- 회원이 친구를 등록할 때 작성한 정보가 Friend Table에 입력된다.
- 각 회원은 다수의 친구를 보유할 수 있다.
- 각 친구는 반드시 한명의 회원을 할당 받는다.
- Friend Table의 구성은 다음과 같다.
- id(PK) - 자동 증감을 사용한다.
- owner(FK) - 친구 정보에 할당된 회원 정보 / User Table의 PK를 할당 / 필수 값
- name - 친구의 이름 / 필수 값
- relationship - 친구와의 관계 / Enum이 사용될 예정 / 필수 값
- status - 현재 관계의 정도 / Enum이 사용될 예정 / 필수 값
- birthDate - 친구의 생일 / 선택 값
- lastContact - 마지막 연락일 / 선택 값
- memo - 기타 정보 / 선택 값
c) Event Table
- Event는 모든 회원의 이벤트 정보를 관리하는 테이블이다.
- 회원이 이벤트를 등록할 때 작성한 정보가 Event Table에 입력된다.
- 각 이벤트는 다수의 친구 정보를 포함할 수 있다.
- 각 친구는 다수의 이벤트에 포함될 수 있다.
- Event Table의 구성은 다음과 같다.
- id(PK) - 자동 증감을 사용한다.
- participants(FK) - 이벤트에 포함된 친구 정보 / 필수 값
- owner(FK) - 이벤트를 소유한 회원 정보 / 필수 값
- date - 이벤트 날짜 / 필수 값
- purpose - 이벤트의 목적 / 필수 값
- eventName - 이벤트 이름 / 선택 값 / default value로 참가한 친구 이름을 입력
- evaluation - 이벤트 평가 / Enum이 사용될 예정 / 필수 값
2. 관계
- 프로젝트 SAI는 다음과 같은 관계를 가진다.
a) User to Friend
- 하나의 회원은 다수의 친구를 보유할 수 있으므로 One To Many 관계를 형성한다.
- 하나의 친구는 반드시 하나의 소유자(회원)를 가지므로 One To One 관계를 형성한다.
- Friend를 이용하여 User를 검색하는 경우는 존재하지 않는다.
- 그러므로 User to Friend 단방향 연결을 구현한다.
b) User to Event
- 하나의 회원은 다수의 이벤트를 보유할 수 있으므로 One To Many 관계를 형성한다.
- 하나의 이벤트는 반드시 하나의 소유자(회원)을 가지므로 One To One 관계를 형성한다.
- Evnet를 이용하여 User를 검색하는 경우는 존재하지 않는다.
- 그러므로 User to Event 단방향 연결을 구현한다.
c) Event to Friend / Friend to Event
- 하나의 이벤트는 다수의 친구를 보유할 수 있으므로 One To Many 관계를 형성한다.
- 하나의 친구는 다수의 이벤트에 포함될 수 있으므로 One To Many 관계를 형성한다.
- Friend를 이용하여 Event를 검색하는 경우가 존재한다.
- 그러므로 User to Event와 Event to user 양방향 연결을 구현한다.
- 이 양방향 구현에서 문제가 발생한다. Many To Many 관계가 형성되기 때문이다.
- 이 부분은 Join Table을 이용하여 해결할 예정이다.
'Side Projects > 프로젝트 사이' 카테고리의 다른 글
6. 오류 해결 스토리 - Update/delete queries cannot be typed (0) | 2022.07.30 |
---|---|
5. 오류 해결 스토리 - Join Table 접근과 영속 상태 (0) | 2022.07.27 |
3. 요구사항 정의 및 개발 명세서 작성 (0) | 2022.06.11 |
1. 로고 제작기 (0) | 2022.06.09 |
0. 프로젝트 소개 (0) | 2022.06.09 |
댓글