Files
jongryangje/docs/개발 규칙/06-데이터베이스정리구조.md
2026-04-08 00:23:55 +09:00

40 lines
2.2 KiB
Markdown

# 데이터베이스 정리 구조 (Database Organization)
> member, member_log 테이블·MemberModel·MemberLogModel 기준. 테이블·컬럼·Model 매핑 규칙.
## 1. 테이블 네이밍
- **소문자**, 단어 구분 **언더스코어**. 예: `member`, `member_log`.
- 복수형보다 **단수형** 선호. 예: `member` (회원 테이블).
## 2. PK·컬럼 네이밍
- **PK**: `테이블약어_idx`. 예: `mb_idx`(member), `mll_idx`(member_log).
- **컬럼**: `테이블약어_컬럼명` 또는 **공통 약어** 유지.
- member: `mb_id`, `mb_passwd`, `mb_name`, `mb_email`, `mb_phone`, `mb_lang`, `mb_level`, `mb_group`, `mb_state`, `mb_regdate`, `mb_latestdate`, `mb_leavedate`.
- member_log: `mll_success`, `mb_idx`, `mb_id`, `mll_regdate`, `mll_ip`, `mll_msg`, `mll_useragent`, `mll_logout_date`, `mll_url`, `mll_referer` 등.
## 3. Model 매핑
- **파일명**: `테이블명을 PascalCase로 + Model`. 예: `member``MemberModel.php`, `member_log``MemberLogModel.php`.
- **클래스**: `$table = 'member'`, `$primaryKey = 'mb_idx'`, `$returnType = 'object'`, `$useTimestamps = false`, `$allowedFields = [...]` 명시.
- **역할**: 해당 테이블에 대한 조회·추가·수정·삭제만. 복잡한 비즈니스 로직은 서비스/헬퍼로 분리 가능.
## 4. 타입·일자
- **일자/시간**: DB·PHP 모두 `Y-m-d H:i:s` (또는 DB DATETIME) 사용. 예: `mb_regdate`, `mb_latestdate`, `mll_regdate`, `mll_logout_date`.
- **상태값**: 숫자 상수 사용. 예: `mb_state` 1=정상, 2=정지, 0=탈퇴. 상수는 컨트롤러 또는 Config에 정의.
## 5. FK·참조
- 다른 테이블 PK 참조 시 컬럼명에 **참조 테이블 약어** 사용. 예: `member_log.mb_idx` → member 테이블 PK 참조.
- Model에서는 `allowedFields`에 FK 컬럼 포함. 조인 필요 시 메서드에서 처리.
## 6. 새 테이블 추가 시
1. 테이블명·PK·컬럼명을 위 규칙으로 정한다.
2. `app/Models/``XxxModel.php` 생성, `$table`, `$primaryKey`, `$allowedFields` 설정.
3. 마이그레이션 사용 시 CI4 Migrations 규칙 준수. (현재 프로젝트는 마이그레이션 없이 테이블 직접 생성 가능.)
이 구조를 따르면 member·member_log와 동일한 네이밍·Model 패턴으로 확장된다.