Preloader image
DDD

데이터베이스

결재 테이블 구성

작성자 관리자 (admin)
조회수 1,715
입력일 2024-12-23 19:19:46


1. 결재 관련 주요 테이블

    1.1 결재 요청 테이블 (ApprovalRequest)
    설명: 결재 요청에 대한 기본 정보를 저장합니다.

    RequestID (PK): 결재 요청의 고유 ID
    RequestorID: 요청자 ID
    DepartmentID: 요청자의 부서 ID
    RequestDate: 요청 일자
    Status: 결재 상태 (예: 대기, 승인, 반려)
    Priority: 우선순위
    Title: 결재 제목
    Details: 결재 내용
    CreatedAt: 생성 시간
    UpdatedAt: 수정 시간

    1.2 결재 단계 테이블 (ApprovalStep)
    설명: 결재 단계별 정보를 관리합니다.

    StepID (PK): 결재 단계의 고유 ID
    RequestID (FK): 결재 요청과 연계
    ApproverID: 결재자 ID
    StepOrder: 결재 단계 순서
    StepStatus: 단계 상태 (예: 대기, 승인, 반려)
    ActionDate: 결재 처리 일시
    Comment: 결재 의견

    1.3 사용자 정보 테이블 (User)
    설명: 결재에 참여하는 사용자 정보를 관리합니다.

    UserID (PK): 사용자 고유 ID
    Name: 사용자 이름
    DepartmentID: 소속 부서 ID
    Email: 이메일 주소
    Role: 사용자 역할 (예: 요청자, 결재자, 관리자)
    CreatedAt: 생성 시간
    UpdatedAt: 수정 시간

    1.4 부서 정보 테이블 (Department)
    설명: 부서와 관련된 정보를 저장합니다.

    DepartmentID (PK): 부서 고유 ID
    Name: 부서명
    ManagerID: 부서장 ID
    CreatedAt: 생성 시간
    UpdatedAt: 수정 시간

    
2. 확장성을 위한 추가 테이블

    2.1 결재 로그 테이블 (ApprovalLog)
    설명: 결재 프로세스의 변경 사항 기록.

    LogID (PK): 로그 고유 ID
    RequestID (FK): 관련 결재 요청 ID
    ActionBy: 행동한 사용자 ID
    ActionType: 행동 유형 (예: 요청, 승인, 반려, 수정)
    ActionDate: 행동 일시
    Comment: 변경 사항 설명

    2.2 첨부 파일 테이블 (Attachment)
    설명: 결재 요청에 첨부된 파일 관리.

    AttachmentID (PK): 첨부 파일 고유 ID
    RequestID (FK): 결재 요청 ID
    FileName: 파일명
    FilePath: 파일 저장 경로
    UploadedBy: 업로드한 사용자 ID
    UploadedAt: 업로드 시간

    2.3 알림 테이블 (Notification)
    설명: 결재 관련 알림 내역 관리.

    NotificationID (PK): 알림 고유 ID
    UserID (FK): 수신자 ID
    Message: 알림 메시지
    ReadStatus: 읽음 여부
    CreatedAt: 생성 시간

    
3. 확장 및 대규모 데이터 대비 설계 팁

    Index 설정: RequestID, StepOrder 등에 인덱스를 설정해 검색 성능 향상.
    Partitioning: 대규모 결재 데이터를 처리하기 위해 날짜별/부서별 파티셔닝.
    Event Sourcing: 결재 변경 사항을 로그 테이블로 관리해 데이터 복구 및 감사 기능 강화.
    역할 기반 접근 제어: 사용자의 역할에 따라 데이터 접근 권한 차등 설정.