본문으로 건너뛰기

DB 구조 정리

ADA 프로젝트 DB 구조 정리

이 페이지는 ADA 프로젝트에서 사용되는 주요 데이터베이스 테이블 구조를 정리한 문서입니다.
각 테이블의 필드, 타입, 설명을 직관적으로 확인할 수 있습니다.


1. ERD (Entity Relationship Diagram)

ERD 이미지는 /static/img/erd.png 에 업로드하세요.


2. user 테이블 (유저 기본정보)

사용자의 기본 계정 정보를 저장합니다.
로그인 정보, 권한, 프로필 요소 등이 포함됩니다.

필드명타입설명
seqBIGINT (AI) [AUTO_INCREMENT]내부 DB용 사용자 번호
uuidCHAR(36) (PK), UNIQUE외부 노출/보안용 UUID
admin_idVARCHAR(50), UNIQUE최초 관리자 발급 ID (변경 불가)
custom_idVARCHAR(50), UNIQUE, NULL사용자가 새로 만든 로그인 ID
custom_pwVARCHAR(255), NULL사용자 커스텀 PW (없으면 기본 PW 사용)
user_realnameVARCHAR(10)실명 (변경 불가)
user_nicknameVARCHAR(10)닉네임 (공백 포함 10글자)
profile_imageVARCHAR(255)프로필 이미지 URL
profile_bannerVARCHAR(255)프로필 배너 이미지 URL
roleENUM('ADMIN','TEACHER','STUDENT','MENTOR')사용자 권한
created_atTIMESTAMP생성일
updated_atTIMESTAMP수정일

3. user_data 테이블 (마이페이지 관련)

마이페이지 데이터이며 수정될 가능성이 높은 영역

필드명타입설명
seqBIGINT (AI)내부 순번
uuidCHAR(36) (PK, FK → users.uuid)유저 식별자
introVARCHAR(255)자기소개
tech_stackVARCHAR(255)기술 스택 문자열
linksJSON외부 링크 배열 (GitHub, Blog 등)
badgeVARCHAR(50)대표 뱃지 또는 활동 타이틀
activity_scoreINT DEFAULT 0활동 점수 or 랭킹 점수
contribution_dataJSONGitHub-like 활동 정보
updated_atTIMESTAMP마지막 수정일

4. Post 테이블 (게시글)

게시판의 일반 게시글 데이터.

필드명타입설명
seqBIGINT (AI)게시글 고유 ID
post_uuidCHAR(36), UNIQUE, (PK)게시글 식별 UUID
writer_uuidCHAR(36), (FK → users.uuid)작성자
titleVARCHAR(20)제목
textsTEXT본문
imagesVARCHAR(255)이미지 URL
videosVARCHAR(255)영상 URL
writerVARCHAR(20)작성자 이름
writed_atDATETIME작성 시각
updated_atDATETIME수정 시각
likesINT좋아요 수
viewsINT조회수
commentsINT댓글 수

5. Post_Blog 테이블 (블로그 글)

블로그 전용 콘텐츠를 관리하는 테이블.
Post와 유사하지만 분리 운영.

필드명타입설명
seqBIGINT (AI)블로그 고유 ID
blog_uuidCHAR(36), UNIQUE, (PK)블로그 식별 UUID
writer_uuidCHAR(36), (FK → users.uuid)작성자
titleVARCHAR(20)제목
textsTEXT본문
imagesVARCHAR(255)이미지 URL
videosVARCHAR(255)영상 URL
writerVARCHAR(20)작성자
writed_atDATETIME작성 시간
updated_atDATETIME수정 시간
likesINT좋아요 수
viewsINT조회수
commentsINT댓글 수

6. Point 테이블 (사용자 포인트 정보)

사용자의 포인트 잔액 및 요약 상태를 저장.

필드명타입설명
idBIGINT (AI)포인트 정보 고유 ID
user_idBIGINT (FK → users.seq)사용자 ID
balanceINT현재 포인트
earned_totalINT누적 적립
spent_totalINT누적 사용
lockedINT잠금 포인트
created_atDATETIME생성 시간
updated_atDATETIME수정 시간

7. Transaction 테이블 (포인트 거래내역)

포인트 변화 이력을 저장하는 로그 테이블.

필드명타입설명
idBIGINT (AI)거래 고유 ID
user_idBIGINT (FK → users.seq)사용자 ID
change_amountINT변화량 (+적립 / -차감)
tx_typeENUM('EARN','SPEND','ADJUST','REFUND')거래 유형
reasonVARCHAR(200)사유 / 설명
ref_typeVARCHAR(50)연계 타입
ref_idVARCHAR(64)연계 ID
created_atDATETIME생성 시간

8. 관계 요약

  • users.uuiduser_data.uuid = 1:1
  • users.uuidpost.writer_uuid = 1:N
  • users.uuidpost_blog.writer_uuid = 1:N
  • users.seqpoint.user_id = 1:1
  • users.seqtransaction.user_id = 1:N
  • postpost_blog는 서로 독립된 콘텐츠 테이블

9. 다이어그램

📌 10. 업데이트 로그

  • 2025-12-10: user/post/point 구조 기반 초기 문서 작성
  • 2025-12-24: Mermaid 다이어그램 추가