우리, Spring Boot로 운동 기록 웹 만들어 봅세 - WODYWEB - 2.ERD 설계 과정
01 Sep 2020 | web springBoot 스프링부트 웹앱 ERDTODO
- ERD 설계
- 회원, 운동, 기록 domain, controller 생성
- 회원 CRUD
- 운동 CRUD
- 기록 CRUD
- VIEW 생성
- 데이터 시각화 (charts.js)
- SNS 가입 / 로그인
- JUnit 테스트 코드 작성
ERD 설계 (with 고민의 흔적)
운동 공개 범위에 대한 고민
개인이 생성한 운동만 보이도록 만들까? or 남이 어떤 운동했는지도 볼 수 있게? or 추천 운동도 만들까?
처음에는 본인이 생성한 운동만 보여주려 했는데 확장성 고려하다보니 기능이 세세해지고 많아지고 있군.
머리가 아프다. 일단 기본만 만들고 다시 생각 해보자.
결론: 본인이 생성한것만 보이도록 하자. 하다보면 다음 단계가 보이겠지.
내가 올린 운동만 볼 수 있다면, 운동 DB 구조는
- id
- member_id
- 카테고리
- 운동 이름
- 기본: 생성 날짜 + 시/분
- 세부 운동 동작
공개범위 (확장성 고려)0: 전체공개, 1:나만 2:친구공개, 3:팀공개본인이 생성한것만 보여줄꺼니까 이 칼럼은 생략한다.
그리고 이 구조를 토대로 실제로 데이터가 어떻게 저장될지 생각해봤어
(데이터 예시 - 추후 추가 예정)
운동 카테고리에 대한 고민
운동 카테고리는 어떻게 나눌까? 뭐가 있지?
카테고리도 개인이 직접 만들 수 있게 놔둘까? or
카테고리를 미리 생성해두고 사용자는 거기서 선택해서 사용하도록 할까?
결론: 유저가 카테고리 직접 생성하도록 만들자
ERD - 1차 결과
연관 관계
회원과 운동기록 (1: N)
- 유저 1명은 여러 운동기록을 갖을 수 있다.
- 운동기록 1개는 1명의 회원에 맵핑괸다.
회원과 운동 (1: N)
- 유저 1명은 여러개의 운동을 할 수 있다.
- 1개의 운동은 1명의 회원과 맵핑된다.
운동과 운동기록 (1: N)
- 운동기록 1개는 1개의 운동과 맵핑된다.
- 하나의 운동은 여러개의 운동기록을 갖을 수 있다.
운동과 카테고리 (N: M)
- 운동 한개는 여러개의 카테고리에 속할 수 있다.
- 카테고리 1개는 여러 운동을 갖는다.
- 카테고리는 여러 하위 카테고리(child)를 갖을 수 있다.
- 카테고리는 하나의 상위 카테고리(parent)를 갖는다.