Skip to content

DB 변경 사항

jwoo edited this page Jan 5, 2024 · 6 revisions

ERD 비교

변경 전 ERD

변경 전 ERD

변경 후 ERD

변경 후 ERD


변경 사항

전체

  • 칼럼명을 카멜 케이스에서 스네이크 케이스로 변경
  • 테이블명을 단수로 통일
  • info 라는 접미사 제외
  • 생성 및 삭제 시간을 알 수 있도록 timestamp 찍기
  • 게시판은 임시로 닫을 예정이므로, 게시판 관련 테이블(board, board_comment, board_attend_members, image_info) 제외

users → user

  • 구글 OAuth 도입으로 password 삭제
  • intra_id 는 42에서만 특수하게 쓰이는 표현이므로 intra_idnickname 변경
    • nickname 굳이 pk로 사용하지 않고 유니크 속성만 부여
  • 미인증 유저, 신규 사서, 기존 사서, 관리자 등 다양한 역할에 따른 권한을 부여하기 위해 isAdmin → role 변경
  • 프로필 사진 주소라는 의미를 명확하게 드러내기 위해서 profileprofile_image_url 변경
  • 슬랙 멤버 아이디라는 의미를 명확하게 드러내기 위해서 slack_id → slack_memeber_id 변경
  • 사서 활동 여부라는 의미를 명확하게 드러내기 위해서 can_attendis_active 변경
  • 추후 다른 OAuth를 도입할 수도 있으므로, email 보단 google_email 사용

event_info → meetup

  • event는 범용적으로 쓰이는 단어이므로 테이블명을 meetup 으로 변경
    • cqrs 라이브러리의 EventBus 를 사용하는데, 단어가 같으면 혼동이 생길 것으로 예상됨
  • 밋업 이벤트를 생성한 유저라는 의미를 명확히 하기 위해 create_idcreate_user_id 변경
  • isMatching 보다 팀 매칭 시각을 기록하는 matched_at 로 변경하여 시간도 기록하고 팀 매칭 여부도 판단

attendance_info → meetup_attendee

  • 무엇에 대한 참석 정보인지 명확하지 않으므로 테이블 명을 밋업 이벤트 참석자라고 명시

rotation → rotation & rotation_attendee

  • 기존에는 사서 로테이션 신청 정보사서 로테이션 확정일 정보가 한 테이블에 있었으나, 주제에 따라 분리
  • 유저의 닉네임은 변경될 수도 있는 요소이니 user의 pk를 외래키로 가져다 쓰는 것을 제안. intra_iduser_id
  • 로테이션 배정에 반영하는 참석 불가일 attendLimitstringjson 타입 변경
    • 사실 json을 쓰는 것보다 원자값을 가질 수 있도록 행을 분리하는게 정규화하는 방법이지만, 해당 컬럼은 정규화해서 얻는 이점이 크지 않아 보임
    • 참석 불가일 수정된다고 가정했을때, json 내부 값이 변경 되는 게 아니라 칼럼 값 자체가 통째로 변경됨
  • 로테이션 확정일은 참석 불가일과 달리 attendDateday 원자값을 가지도록 행 분리
    • 행을 분리해도 데이터가 양이 크게 늘어나지 않고, 추후 로테이션 확정일 생성/삭제/수정 시 좀 더 깔끔한 로직으로 할 수 있음
  • 로테이션 수정은 본인이 아닌 타인 것도 수정 가능하므로, 최근에 누가 수정했는지 기록하기 위해 update_user_id 도입

holiday_info → rotation_holiday

  • 나중에 대한민국 휴일뿐만 아니라 자체 휴일을 넣을 수도 있으므로 로테이션 휴뮤일이라는 의미를 드러내도록 테이블명 변경