1. DB 설계 목표
- 관리 편의성을 높이기 위해 soft delete(deleted 플래그) 방식을 적용
- 리뷰 수정 가능성을 고려해 modified 컬럼 추가
- 불필요한 과도한 데이터 저장을 방지하기 위해 varchar 크기 최소화
- 실시간 별점 계산을 위해 avg_rating 필드 사전 설정
- "created" 이름 통일로 컬럼명 일관성 확보
2. Entity/Table 설계
User 테이블
컬럼명 타입 제약조건 설명
id | BIGINT | PK, Auto Increment | 사용자 고유 ID |
username | VARCHAR(20) | NOT NULL | 사용자 닉네임 |
VARCHAR(50) | NOT NULL, UNIQUE | 사용자 이메일 (중복 방지) | |
password | VARCHAR(100) | NOT NULL | 암호화된 비밀번호 |
created | DATETIME | DEFAULT CURRENT_TIMESTAMP | 가입일 |
deleted | TINYINT(1) | DEFAULT 0 | 삭제 여부 (0: 정상, 1: 삭제됨) |
Restaurant 테이블
컬럼명 타입 제약조건 설명
id | BIGINT | PK, Auto Increment | 음식점 고유 ID |
name | VARCHAR(20) | NOT NULL | 음식점 이름 |
address | VARCHAR(100) | NOT NULL | 음식점 주소 |
category | VARCHAR(8) | NOT NULL | 음식 종류 |
map_url | TEXT | NULL 허용 | 지도 링크 |
avg_rating | FLOAT | DEFAULT 0.0 | 평균 별점 |
created | DATETIME | DEFAULT CURRENT_TIMESTAMP | 등록일 |
deleted | TINYINT(1) | DEFAULT 0 | 삭제 여부 |
Review 테이블
컬럼명 타입 제약조건 설명
id | BIGINT | PK, Auto Increment | 리뷰 고유 ID |
restaurant_id | BIGINT | FK (Restaurant.id 참조) | 음식점 ID |
user_id | BIGINT | FK (User.id 참조) | 작성자 ID |
rating | FLOAT | NOT NULL | 별점 (0.0 ~ 5.0, 0.1 단위) |
comment | TEXT | NULL 허용 | 한줄평 |
created | DATETIME | DEFAULT CURRENT_TIMESTAMP | 작성일 |
modified | DATETIME | NULL 허용 | 수정일 |
deleted | TINYINT(1) | DEFAULT 0 | 삭제 여부 |
3. 마무리
앞으로 이 기본 설계를 기반으로 API 설계 및 백엔드 구축을 진행할 예정입니다.
필요시 DB 스키마는 수정할 수 있으며, 점진적으로 확장 가능한 구조를 목표로 하고 있습니다.
'Project > 나혼자 미슐랭' 카테고리의 다른 글
나혼자 미슐랭 개발일지 #3 – 프론트 초기화부터 리뷰 리스트 완성까지 (1) | 2025.05.13 |
---|---|
나혼자 미슐랭 개발일지 #2 – User, Restaurant, Review CRUD 개발완료 (0) | 2025.05.10 |
나혼자 미슐랭 개발일지 #1 - 개발환경 세팅 & DB 연결 (0) | 2025.05.05 |
나혼자 미슐랭 – 요구사항 명세서 (1) | 2025.04.22 |
나혼자 미슐랭 – 프로젝트 기획서 (0) | 2025.04.22 |