Notice
Recent Posts
Recent Comments
코드 위의 하루 (A Day on the Code)
🛠 Docverse – 데이터베이스 구축 과정 정리 (백엔드 포트폴리오) 본문
1. 데이터베이스 설계 목적
Docverse는 팀 프로젝트를 위한 협업 플랫폼으로,
사용자, 그룹, 파일, 댓글, 알림 등 다양한 정보가 상호 연결되며 저장되어야 합니다.
이를 위해 **정규화된 관계형 DB(MySQL)**를 사용하여 구조화된 저장소를 구축했습니다.
2. ERD 설계 (기초)
초기 설계 단계에서 설정한 핵심 테이블
- User: 사용자 정보
- Group: 팀/조직 단위
- File: 업로드된 문서
- Comment: 파일에 대한 피드백
- Notification: 알림 정보
3. 모델 정의 및 구현
📁 users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
email = models.EmailField(unique=True)
nickname = models.CharField(max_length=50, blank=True)
profile_image = models.ImageField(upload_to='profiles/', blank=True, null=True)
AbstractUser를 상속받아 기본 Django 유저 모델 커스터마이징
이메일은 중복 방지를 위해 unique=True 설정
4. MySQL과 연결
📁 config/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'docverse_db',
'USER': 'root',
'PASSWORD': '비밀번호',
'HOST': 'localhost',
'PORT': '3307',
}
}
❗ 초기엔 PORT=3006으로 설정했지만, 연결 실패 에러 발생
👉 MySQL Workbench에서 확인해보니 이미 사용 중인 포트였음
→ 3307로 변경 후 연결 성공
⚙️ 기타 설정 파일
- .env에서 DB 환경변수 분리 가능
- pymysql 모듈 설정: __init__.py에 아래 코드 추가
import pymysql
pymysql.install_as_MySQLdb()
5. 마이그레이션 및 생성 결과
$ python manage.py makemigrations
$ python manage.py migrate
✅ 정상 작동 시 users_user 테이블 포함 다양한 테이블이 생성됨
📸 MySQL Table 생성 스크린샷 첨부 위치
6. 트러블슈팅 및 해결 과정
DB 연결 실패 | 포트 충돌 (3006) | settings.py와 MySQL 포트 → 3307으로 변경 |
pymysql 오류 | 모듈 미설치 or 오타 | pymysql.install_as_MySQLdb() 추가 확인 |
Table 미생성 | 앱 등록 누락 | INSTALLED_APPS에 앱 누락 → 등록 후 재마이그레이션 |
7. 회고 및 적용 가능성
이번 DB 구축 경험을 통해 Django의 ORM 작동 방식과
MySQL 설정과 연동 과정의 중요성을 깊이 체감했습니다.
실무에서도 .env, docker-compose, ERD 설계 → 모델 구현 흐름을
재사용 가능한 템플릿으로 정리해둘 수 있겠다고 느꼈습니다.
'🗂️ Docverse' 카테고리의 다른 글
🛠️ 로그인 기능 구현 (JWT 기반) + 멘탈 탈곡기 체험 (0) | 2025.05.17 |
---|---|
📁 프로젝트 문서 정리하기 – 실무에서 바로 쓰는 정리 루틴 (0) | 2025.05.15 |
🐝 Docverse 프로젝트 Git 사용기 (0) | 2025.05.11 |
🔐 Docverse – UserSerializer & 회원가입 API 구현 (0) | 2025.05.11 |
💡 Docverse – 개발 협업 플랫폼 프로젝트 소개 (2) | 2025.05.11 |