궤도
[Spring] [면적면적[1]] ER diagram 그리기 본문
'북적북적'에 있는 요소들을 살펴보자
북적북적에 회원가입을 할 땐 이메일, 닉네임, 비밀번호가 필요하다.
구글과 페이스북 연동도 가능하다. 난...연동은 잘 모르니까 이번엔 안할 것이다.
그리고 프로필 변경하기에서 닉네임과 프로필 사진을 바꿀 수 있는데, 프사 하나를 위해 s3 버킷을 쓰는게 옳은 일인가...싶지만 로컬로 해선 어디에 써먹을 수도 없고 해서 그냥 s3 버킷을 쓰기로 했다. 대신 컬러 테마 설정은 뺀다.
그럼 멤버 테이블은
이렇게 되겠다.
메인 페이지엔 사용자가 읽은 책이 날짜 순으로 이렇게 쌓여있다.
맨 위엔 대표 캐릭터가 있다.
북적북적은 사용자의 책을 '읽은 책', '읽고 있는 책', '읽고 싶은 책'으로 나눈다.
그리고 메인화면에 쌓이는건 '읽은 책'이다.
모든 책들은 책 제목, 작가, 표지 이미지, 책 소개, 출판사, isbn, 페이지 수(가격으로 수정), 사용자 메모 정보가 있다.
그리고 상태별 정보에는
읽은 책 : 시작일, 종료일, 평점
읽고 있는 책 : 시작일, 읽은 페이지 수
읽고 싶은 책 : 기대 지수, 기대평
가 있다.
이 부분을 어떻게 처리할까 고민했다. 단순히 nullable로 처리하면 너무 안정성이 떨어지지 않나 싶기도 하여...
상속관계로 구현하기로 했다.
싱글테이블 전략을 사용할거라 dtype으로 처리한다.
한편...각 책에는 메모를 남길 수 있는데 하나의 책에 여러 메모를 남길 수 있다.
마지막으로 각 캐릭터의 정보는 다음과 같다.
마지막으로 테이블 간의 관계를 정리하면, Member-Book, Book-Memo는 일대다 관계이다.
그리고 Member 테이블과 Character 테이블은 기본적으론 다대다 관계이지만, 유저가 각 캐릭터를 획득한 날짜와 대표 캐릭터 설정 여부를 저장해야 하므로 UserCharacter 테이블을 둬서 일대다 - 다대일로 처리했다.
과연 앞으로 이걸 얼마나 수정하게 될런지
21.07.22 수정