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개 엔티티(회원, 크루, 리조트, 라이딩스타일, 카테고리, 게시글, 이미지, 추천/비추천, 댓글) 스키마 반영.

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions