docs: add project docs and test updates
This commit is contained in:
39
docs/개발 규칙/06-데이터베이스정리구조.md
Normal file
39
docs/개발 규칙/06-데이터베이스정리구조.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 데이터베이스 정리 구조 (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 패턴으로 확장된다.
|
||||
Reference in New Issue
Block a user