📚 [프로젝트] 데이터베이스 스키마 설계
테이블 이름 | 설명 | 주요 필드 |
users | 서비스에 가입한 사용자 정보를 저장하는 테이블입니다. | - 이메일 (로그인 시 사용) - 비밀번호 - 닉네임 - 이름 - 전화번호 - 마지막 로그인 - 스태프 여부 (is_staff) - 관리자 여부 (is_admin) - 계정 활성화 여부 (is_active) |
accounts | 유저가 보유한 계좌 정보를 저장하는 테이블입니다. | - 유저 정보 (FK: users.id) - 계좌번호 (Unique) - 은행 코드 (카카오뱅크, KB국민, NH농협, IBK기업 등) - 계좌 종류 (입출금 통장, 마이너스 통장 등) - 잔액 (Decimal) |
transaction_history | 사용자가 보유한 계좌의 거래 내역을 저장하는 테이블입니다. | - 계좌 정보 (FK: accounts.id) - 거래 금액 - 거래 후 잔액 - 거래 내역 (예: 오픈뱅킹 출금, ATM 입금, 카드 결제 등) - 입출금 타입 (입금, 출금) - 거래 타입 (현금, 계좌 이체, 자동 이체, 카드 결제 등) - 거래 일시 (timestamp) |
analysis (도전 미션) | 사용자의 수입과 지출을 분석하고 관리하는 테이블입니다. | - 분석 요청 사용자 (FK: users.id) - 분석 대상 (수입, 지출) - 분석 기간 (일간, 주간, 월간, 연간) - 시작 날짜 - 종료 날짜 - 설명 - 결과 이미지 파일 - 생성/업데이트 날짜 |
notifications (도전 미션) | 사용자 알림을 관리하는 테이블입니다. | - 알림 수신 사용자 (FK: users.id) - 메시지 내용 - 읽음 여부 (is_read, Boolean) - 생성 날짜 (timestamp) |
🔗 테이블 간 관계 설명
관계설명
users 1:N accounts | 한 명의 사용자는 여러 개의 계좌를 가질 수 있습니다. (1:N) |
accounts 1:N transaction_history | 하나의 계좌는 여러 거래 내역을 가질 수 있습니다. (1:N) |
users 1:N analysis | 한 명의 사용자는 여러 분석 요청을 할 수 있습니다. (1:N) |
users 1:N notifications | 한 명의 사용자는 여러 알림을 받을 수 있습니다. (1:N) |
📝 필수 제약 조건 (Constraints)
- users.email: Unique (로그인 시 이메일 사용)
- accounts.account_number: Unique (계좌번호 중복 방지)
- transaction_history.transaction_timestamp: 거래 일시 자동 저장 (auto_now_add)
- notifications.is_read: 기본값 False (읽지 않음 상태)
🛠️ DB 설계 기본 규칙
- 모든 테이블은 id (AutoField, PK) 기본 제공
- 외래키(FK)는 CASCADE 삭제 전략
- 시간 정보(created_at, updated_at)는 필요한 테이블에 삽입
- Decimal 필드는 소수점 2자리 고정 (예: 잔액, 거래 금액)
✅ 요약
- 5개 테이블
- 명확한 1:N 관계
- 도전 미션 포함 설계
- 추후 Django ORM 모델 설계와 바로 연결 가능
'프로젝트' 카테고리의 다른 글
📮 3. Django ORM을 활용하여 Model 생성하기 (1) | 2025.06.09 |
---|---|
📮 3. ERD를 구성 Mermid 활용 (0) | 2025.06.09 |
📮 1. ERD(Entity Relationship Diagram) 작성하기 (0) | 2025.06.09 |
📌 🚀 [GitHub Actions CI - 3단계: 로컬 환경 자동화 검사 스크립트 만들기 & Docker와 DB 호스트 이슈 해결법] (0) | 2025.06.06 |
🚀 [GitHub Actions CI - 2단계: 워크플로우 최종 완성 및 실전 팁] (1) | 2025.06.06 |