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: 결재 변경 사항을 로그 테이블로 관리해 데이터 복구 및 감사 기능 강화.
역할 기반 접근 제어: 사용자의 역할에 따라 데이터 접근 권한 차등 설정.
|