Files
sam-docs/system/database
권혁성 d4e5f62413 docs: [종합정비] Phase 1 시스템 현황 문서 14개 작성
- system/overview.md: 전체 아키텍처 개요
- system/api-structure.md: API 구조 (220 모델, 1027 엔드포인트, 18 라우트 도메인)
- system/react-structure.md: React 구조 (249 페이지, 612 컴포넌트)
- system/mng-structure.md: MNG 구조 (171 컨트롤러, 436 Blade 뷰)
- system/docker-setup.md: Docker 7 컨테이너 구성
- system/database/README.md + 9개 도메인 스키마 (270+ 테이블)
  - core, hr, sales, production, finance, boards, files, system, erp-analysis

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 18:03:13 +09:00
..

데이터베이스 스키마 현황

최종 갱신: 2026-02-27 DB: MySQL 8.0 (samdb + sam_stat) 마이그레이션: 459개 (api/에서만 관리)


1. 규모 요약

항목 수량
Eloquent 모델 220
도메인 그룹 32
마이그레이션 459 (메인 437 + 통계 22)
DB 연결 2 (samdb, sam_stat)

2. 도메인별 모델 분포

도메인 모델 수 주요 엔티티 상세
Tenants 56 Tenant, Department, Approval, Payment, Stock 등 tenants.md
Stats 21 StatFinanceDaily, DimClient, DimDate 등 stats.md
Documents 15 Document, DocumentTemplate, DocumentApproval 등 documents.md
Commons 10 Category, File, Menu, Tag, Classification commons.md
Quote 8 Quote, QuoteItem, QuoteFormula, QuoteRevision sales.md
Production 8 WorkOrder, WorkOrderItem, WorkResult 등 production.md
Orders 8 Order, OrderItem, OrderNode, Client 등 sales.md
ItemMaster 8 ItemField, ItemPage, ItemBomItem, CustomTab 등 products.md
Products 6 Product, ProductComponent, Part, Price products.md
Interview 5 InterviewTemplate, InterviewSession 등 hr.md
Construction 5 Contract, HandoverReport, StructureReview production.md
Boards 5 Board, Post, BoardSetting, PostCustomFieldValue commons.md
Members 4 User, UserTenant, UserRole, UserMenuPermission tenants.md
Materials 4 Material, MaterialReceipt, MaterialInspection production.md
ESign 4 EsignContract, EsignSigner, EsignSignField documents.md
Design 4 DesignModel, ModelVersion, BomTemplate products.md
Qualitys 3 Inspection, Lot, LotSale production.md
Permissions 3 Permission, Role, PermissionOverride tenants.md
Items 3 Item, ItemDetail, ItemReceipt products.md
BadDebts 3 BadDebt, BadDebtDocument, BadDebtMemo finance.md
Estimate 2 Estimate, EstimateItem sales.md
Audit 2 AuditLog, TriggerAuditLog commons.md
Root Level 27 ApiKey, Process, NumberingSequence 등 각 도메인 문서 참조

3. 핵심 엔티티 관계도

인증 + 멀티테넌시

User
  ├─ hasMany UserTenant (pivot: is_active, is_default)
  │   └─ belongsTo Tenant
  ├─ hasMany UserRole
  └─ hasMany UserMenuPermission

Tenant
  ├─ hasMany Department (계층 구조, parent_id)
  │   └─ belongsToMany User (department_user pivot)
  ├─ hasMany TenantUserProfile (테넌트별 직원 프로필)
  └─ hasMany [모든 tenant-scoped 모델]

제품 + 설계

Product
  ├─ belongsTo Category (계층 분류)
  ├─ hasMany ProductComponent (BOM)
  ├─ hasMany Part, Price
  └─ morphMany File

DesignModel
  └─ hasMany ModelVersion
      └─ hasMany BomTemplate
          └─ hasMany BomTemplateItem

견적 → 수주 → 생산 흐름

Quote (견적)
  ├─ belongsTo Client
  ├─ hasMany QuoteItem
  └─ → Order 변환

Order (수주)
  ├─ belongsTo Quote, Client
  ├─ hasMany OrderItem (options JSON)
  ├─ hasMany OrderNode (설계 분해)
  └─ hasMany WorkOrder

WorkOrder (작업지시)
  ├─ belongsTo Order, Process
  ├─ hasMany WorkOrderItem (options JSON)
  ├─ hasMany WorkOrderStepProgress
  └─ hasMany WorkResult (작업실적)

문서 + 전자결재

Document
  ├─ belongsTo DocumentTemplate
  ├─ morphTo linkable (다형 - Order, Quote 등)
  ├─ hasMany DocumentApproval (결재 단계)
  └─ hasMany DocumentData (동적 폼)

DocumentTemplate
  ├─ hasMany Section → Field → Item
  └─ hasMany ApprovalLine (결재선)

4. 공통 패턴

트레이트 사용 현황

트레이트 적용 모델 수 역할
BelongsToTenant ~160 (73%) tenant_id 자동 스코핑
Auditable ~150 (68%) created_by, updated_by, deleted_by
SoftDeletes ~150 (68%) 논리 삭제 (deleted_at)
ModelTrait ~80 (36%) 날짜 처리, is_active 스코프
HasRoles (Spatie) 3 RBAC 권한 관리
HasApiTokens (Sanctum) 1 (User) API 토큰 관리

표준 컬럼 구조

모든 비즈니스 테이블의 공통 컬럼:

id                 PK
tenant_id          FK (멀티테넌시)
created_by         FK → users (감사)
updated_by         FK → users (감사)
deleted_by         FK → users (감사)
created_at         timestamp
updated_at         timestamp
deleted_at         timestamp (논리삭제)
is_active          boolean
sort_order         integer
options            JSON (유연한 속성 저장)

DB 설계 패턴

패턴 사용 예시
계층 구조 (Self-Reference) Category, Department (parent_id)
다형 관계 (Polymorphic) File, PermissionOverride (morphable_type/id)
EAV (Entity-Attribute-Value) PostCustomFieldValue, CategoryField
JSON 컬럼 Product.bom, OrderItem.options, WorkOrderItem.options
Pivot 테이블 user_tenants, department_user
BOM/Tree ProductComponent, BomTemplateItem
버전 관리 ModelVersion, QuoteRevision, OrderVersion
상태 코드 Order.status (DRAFT/CONFIRMED/IN_PRODUCTION)

JSON options 컬럼 정책

FK/조인키만 테이블 컬럼으로 추가. 나머지 속성은 options 또는 attributes JSON에 저장. 이유: 멀티테넌시 환경에서 테넌트별 스키마 변경 없이 유연한 관리.


5. DB 연결

연결명 DB 용도
mysql (기본) samdb 모든 비즈니스 데이터
sam_stat sam_stat 통계/집계 전용 (21 모델)
chandj chandj 레거시 5130 (마이그레이션 대상)

6. 도메인별 상세 문서

문서 포함 도메인
tenants.md Tenants, Members, Permissions
products.md Products, ItemMaster, Items, Design
sales.md Orders, Quote, Estimate
production.md Production, Construction, Materials, Qualitys
finance.md Finance (Tenants 하위), BadDebts
hr.md HR (Tenants 하위), Interview
documents.md Documents, ESign
commons.md Commons, Boards, Audit
stats.md Stats (sam_stat DB)