Dokumen Skema Database - Fee Management System (FMS)

Dokumen ini menjelaskan struktur relasional database yang mendukung alur kerja Pengajuan Fee antara Pengaju (PIC) dan Penerima (Keuangan), termasuk pemisahan data Marketing berdasarkan pemilik (PIC).

Konvensi

PK: Primary Key (Kunci Utama)

FK: Foreign Key (Kunci Asing)

NOT NULL: Kolom wajib diisi

Unique: Nilai harus unik (tidak boleh ada duplikasi)

1. Tabel: Users (Manajemen Pengguna dan Peran)

Tabel ini menyimpan data otentikasi dan peran semua pengguna sistem (PIC/Pengaju dan Penerima/Keuangan).

Kolom

Tipe Data

Keterangan

Batasan

id_user

INT / UUID

ID unik pengguna

PK, NOT NULL

username

VARCHAR(50)

Username untuk login

NOT NULL, Unique

password_hash

VARCHAR(255)

Hash kata sandi

NOT NULL

nama_lengkap

VARCHAR(100)

Nama lengkap pengguna

NOT NULL

role

ENUM

Peran pengguna

NOT NULL, ('PIC_Pengaju', 'Penerima_Keuangan')

is_active

BOOLEAN

Status akun aktif

NOT NULL, Default TRUE

2. Tabel: Marketing (Data Rekening Penerima Fee)

Tabel ini menyimpan data rekening penerima fee (Marketing). Data ini dikelola secara pribadi oleh masing-masing PIC.

Kolom

Tipe Data

Keterangan

Batasan

id_marketing

INT / UUID

ID unik data Marketing

PK, NOT NULL

nama_marketing

VARCHAR(100)

Nama Marketing (Atas Nama Rekening)

NOT NULL

no_rekening

VARCHAR(30)

Nomor rekening tujuan

NOT NULL

nama_bank

VARCHAR(50)

Nama Bank

NOT NULL

id_pic_owner

INT / UUID

ID PIC yang mengelola data ini.

FK (Users.id_user), NOT NULL

tgl_dibuat

DATETIME

Tanggal data Marketing diinput

NOT NULL

3. Tabel: Pengajuan_Fee (Data Transaksi dan Status)

Tabel utama yang menyimpan semua detail permohonan fee dan statusnya.

Kolom

Tipe Data

Keterangan

Batasan

id_pengajuan

INT / UUID

ID unik pengajuan

PK, NOT NULL

id_pic_pengaju

INT / UUID

ID PIC yang mengajukan permohonan

FK (Users.id_user), NOT NULL

id_marketing_penerima

INT / UUID

ID Marketing yang akan menerima fee

FK (Marketing.id_marketing), NOT NULL

nama_klien

VARCHAR(150)

Nama klien terkait pinjaman

NOT NULL

plafon_cair

DECIMAL(15, 2)

Nilai total Plafon Pinjaman yang dicairkan

NOT NULL

persen_fee

DECIMAL(5, 2)

Persentase fee (contoh: 2.00)

NOT NULL

jumlah_fee

DECIMAL(15, 2)

Jumlah fee yang dibayarkan (Plafon * Persen)

NOT NULL, Dihitung oleh sistem

tgl_pengajuan

DATETIME

Tanggal pengajuan dibuat

NOT NULL

status

ENUM

Status pemrosesan fee

NOT NULL, ('Menunggu Verifikasi', 'Disetujui', 'Ditolak', 'Sudah Dibayar')

alasan_penolakan

TEXT

Keterangan jika status Ditolak

NULLABLE

tgl_status_update

DATETIME

Waktu terakhir status diperbarui

NOT NULL

🔗 Relasi Antar Tabel (E-R Diagram Blueprint)

Relasi Users dan Marketing (One-to-Many):

Setiap Users (dengan role PIC) dapat memiliki banyak entri Marketing (yaitu, satu PIC mengelola banyak data rekening Marketing).

Relasi: Users.id_user (1) $\to$ Marketing.id_pic_owner (N).

Relasi Users dan Pengajuan_Fee (One-to-Many):

Setiap Users (dengan role PIC) dapat membuat banyak Pengajuan_Fee.

Relasi: Users.id_user (1) $\to$ Pengajuan_Fee.id_pic_pengaju (N).

Relasi Marketing dan Pengajuan_Fee (One-to-Many):

Satu entri Marketing dapat digunakan dalam banyak Pengajuan_Fee.

Relasi: Marketing.id_marketing (1) $\to$ Pengajuan_Fee.id_marketing_penerima (N).

Mekanisme Keamanan Data (Filter Logika Aplikasi)

Peran

Tindakan

Logika Filter Database

PIC/Pengaju

Melihat Riwayat Pengajuan

WHERE id_pic_pengaju = [ID_User_Login]

PIC/Pengaju

Mengelola Data Marketing

WHERE id_pic_owner = [ID_User_Login]

Penerima/Keuangan

Melihat Data Pengajuan

(TIDAK ADA FILTER) - Melihat semua data, tanpa batasan.

Penerima/Keuangan

Statistik Dashboard

Mengagregasi data dari seluruh tabel Pengajuan_Fee.