Skip to content

[Database]: RDBMS N:M 중계 테이블 정규화 및 ERD 스키마 정립 #2

Description

@devikae

Package Scope

  • Add to an existing package
  • New package

Package name: backend

Overview

프로필 부가 정보(베이스 스키장, 라이딩 성향)의 다대다 관계를 RDBMS 정석대로 처리하기 위한 데이터베이스 스키마 및 ERD를 정립합니다.

Describe the solution you'd like

1. MySQL 8.0 JSON 컬럼 사용 고민과 한계

  • MySQL 8.0에서 지원하는 JSON 타입 컬럼을 활용하는 방안을 검토함.
  • 그러나 RDBMS의 본질인 중복 제거 및 FK 참조 무결성 철학에 위배되며, 향후 스키장 명칭 변경 등 데이터 수정 발생 시 전체 유저의 JSON 데이터를 훑어 마이그레이션해야 하는 치명적 공수가 존재함.

2. 최종 결정 전략

  • RDBMS의 정밀함과 무결성에 충실하게 중계 테이블(member_resort, member_riding_style)을 이용한 1:N, N:1 정석 분리를 채택.
  • JPA 복합키 사용으로 인한 개발 지옥을 피하기 위해 중계 테이블에는 단일 대리키 id (PK) + UNIQUE KEY 구조를 채택.
  • 비회원 및 익명 작성 지원을 위한 member_id NULLABLE 처리, 비회원 비밀번호(anonymous_password BCrypt), 작성자 IP (writer_ip) 보관 반영.

Additional context

  • 1차 MVP 대상 총 11개 엔티티(회원, 크루, 리조트, 라이딩스타일, 카테고리, 게시글, 이미지, 추천/비추천, 댓글) 스키마 반영.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions