Skema Data — Perpustakaan (Katalog, Peminjaman, Denda)¶
Status: DRAFT (13 Juli 2026) — tahap 6, modul fungsional terakhir
Melengkapi Skema Data — Fondasi, Skema Data — Akademik Inti, Skema Data — Keuangan, Skema Data — HRD, dan Skema Data — Biro Aset. Halaman ini mencakup Modul 8 (Perpustakaan) — modul fungsional terakhir sebelum uji isolasi tenant (item terakhir di Roadmap §1).
1. Diagram ERD¶
2. Katalog Buku¶
2.1 KategoriBuku (master, dikonfigurasi per tenant)¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| nama | varchar | mis. "Teknik", "Ekonomi", "Umum" |
2.2 Buku¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| kategori_buku_id | bigint (FK → KategoriBuku, nullable) | |
| kode_buku | varchar, unique per tenant | ISBN atau kode internal |
| judul | varchar | |
| pengarang | varchar | |
| penerbit | varchar | |
| tahun_terbit | smallint | |
| jumlah_stok | smallint |
3. Peminjaman¶
Peminjam bisa Mahasiswa atau Dosen/Staff — dua kolom nullable, pola sama seperti
Pembayaran (Skema Data — Keuangan) dan RiwayatJabatan
(Skema Data — Fondasi).
3.1 PeminjamanBuku¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| buku_id | bigint (FK → Buku) | |
| mahasiswa_id | bigint (FK → Mahasiswa, nullable) | |
| pegawai_id | bigint (FK → Pegawai, nullable) | Hanya salah satu dari dua kolom peminjam ini terisi |
| tanggal_pinjam | date | |
| tanggal_jatuh_tempo | date | |
| tanggal_kembali | date, nullable | Kosong = masih dipinjam |
| status | enum(dipinjam, dikembalikan, terlambat) |
4. Denda Keterlambatan¶
4.1 DendaKeterlambatan¶
| Kolom | Tipe | Keterangan |
|---|---|---|
| id | bigint (PK) | |
| tenant_id | UUID (FK → Tenant) | |
| peminjaman_buku_id | bigint (FK → PeminjamanBuku) | |
| nominal | decimal | Dihitung otomatis dari lama keterlambatan |
| status | enum(belum_bayar, lunas) | |
| tanggal_dihitung | timestamp |
5. Migrasi Tambahan ke Tabel Pembayaran (Keuangan)¶
Satu kolom baru ditambahkan ke Pembayaran (sudah didefinisikan di
Skema Data — Keuangan §5) — supaya
denda perpustakaan direkonsiliasi lewat alur pembayaran manual yang sama dengan UKT/biaya
flat, bukan alur terpisah:
| Kolom baru | Tipe | Keterangan |
|---|---|---|
| tagihan_denda_id | bigint (FK → DendaKeterlambatan, nullable) | Kolom nullable ketiga — persis satu dari tiga kolom (tagihan_ukt_id/tagihan_biaya_flat_id/tagihan_denda_id) terisi per baris |
6. Notifikasi¶
Pengingat jatuh tempo dan tagihan denda dikirim lewat kerangka Modul 10 (Pengumuman & Notifikasi) yang sudah disepakati di Cakupan Modul — bukan tabel notifikasi terpisah khusus Perpustakaan. Skema Modul 10 sendiri belum dirancang detail; dicatat sebagai kandidat halaman tambahan setelah uji isolasi tenant bila dibutuhkan.
7. Row-Level Security¶
Pola identik dengan halaman sebelumnya — semua tabel di atas memakai tenant_id + kebijakan RLS
yang sama (lihat Skema Data — Fondasi §10).
8. Ringkasan — Seluruh Modul Fungsional Selesai¶
Dengan halaman ini, keenam kelompok skema data sudah lengkap:
| Halaman | Cakupan |
|---|---|
| Fondasi | Tenant, Struktur Organisasi, Kalender, Kurikulum, Jabatan Struktural, RBAC |
| Akademik Inti | Mahasiswa, KRS, Presensi, Nilai, Cuti Akademik, Skripsi |
| Keuangan | UKT, Biaya Flat, Pembayaran, Gaji (ringkas) |
| HRD | Pegawai lengkap, Evaluasi Kinerja, Cuti Pegawai, Pelatihan, BKD |
| Biro Aset | Master Aset, Mutasi, Penyusutan, Penghapusan, Opname |
| Perpustakaan (halaman ini) | Katalog, Peminjaman, Denda |
9. Langkah Berikutnya¶
Sesuai Roadmap §1, langkah terakhir sebelum skema data dianggap final: uji
isolasi tenant — memastikan dua tenant dummy tidak pernah bisa saling melihat data, bahkan bila
ada bug di kode aplikasi yang lupa filter tenant_id.
Kembali ke Roadmap Implementasi atau Skema Data — Biro Aset.