# DOKUMENTASI DATABASE & RELASI ENTITAS
## Integrated Academic System - Magister Pendidikan (M.Pd.)
### Universitas Linggabuana PGRI Sukabumi (UNLIP)

---

## 1. Arsitektur Basis Data

- **Database Engine**: MySQL 8.0+ / MariaDB 10.5+ (Engine: `InnoDB`)
- **Character Set**: `utf8mb4`
- **Collation**: `utf8mb4_unicode_ci`
- **Integritas Referensial**: Menggunakan foreign key constraint dengan aksi `CASCADE` pada entitas berelasi dan `RESTRICT` pada data transaksi finansial/akademik penting.
- **Pengindeksan**: Index diterapkan pada primary key, foreign key, email, username, nomor invoice, nomor registrasi PMB, NIM, dan NIDN.

---

## 2. Struktur Kelompok Tabel (13 Modul)

```mermaid
erDiagram
    users ||--o{ user_roles : has
    roles ||--o{ user_roles : assigned_to
    roles ||--o{ role_permissions : has
    permissions ||--o{ role_permissions : granted_to

    users ||--o| students : profile_of
    users ||--o| lecturers : profile_of
    users ||--o{ pmb_registrations : applies

    study_programs ||--o{ curricula : contains
    curricula ||--o{ curriculum_courses : has
    courses ||--o{ curriculum_courses : belongs_to
    courses ||--o{ course_schedules : scheduled_in
    lecturers ||--o{ course_schedules : teaches

    students ||--o{ course_enrollments : enrolls
    courses ||--o{ course_enrollments : enrolled_in
    course_enrollments ||--o| grades : evaluated_in

    students ||--o{ thesis_topics : proposes
    thesis_topics ||--o{ thesis_supervisors : guided_by
    lecturers ||--o{ thesis_supervisors : advises
    thesis_topics ||--o{ thesis_guidance : consults

    students ||--o{ invoices : billed_to
    invoices ||--o{ payments : paid_by
    payments ||--o| payment_receipts : receipted_in

    pmb_periods ||--o{ pmb_registrations : opens
    pmb_registrations ||--o{ pmb_documents : submits
    pmb_registrations ||--o| pmb_invoices : pays_fee
    pmb_registrations ||--o| pmb_scores : scored_in
    pmb_registrations ||--o| pmb_results : announced_in
    pmb_registrations ||--o| pmb_re_registration : re_registers
```

---

## 3. Rincian Seluruh Tabel

### 1. User & Authentication
- `users`: Data akun utama (id, name, email, phone, password, status, last_login_at, last_login_ip).
- `roles`: Definisi peran (super_admin, admin_pengelola, admin_cms, admin_pmb, keuangan, kaprodi, dosen, mahasiswa, pimpinan, alumni, camaba).
- `permissions`: Hak akses granular sistem.
- `role_permissions`: Pemetaan hak akses ke peran.
- `user_roles`: Relasi banyak-ke-banyak antara pengguna dan peran.
- `user_sessions`: Sesi pengguna aktif.
- `password_resets`: Token pemulihan kata sandi.
- `login_logs`: Rekam jejak upaya login pengguna.

### 2. CMS (Content Management System)
- `cms_settings`: Konfigurasi dinamis identitas kampus, kontak, dan statistik website publik.
- `cms_categories`: Kategori berita dan pengumuman.
- `cms_pages`: Halaman statis/dinamis profil program studi.
- `cms_menus`: Struktur hierarki navigasi website (header & footer).
- `cms_banners`: Banner hero beranda dengan CTA.
- `cms_news`: Artikel berita warta kampus.
- `cms_announcements`: Pengumuman resmi akademik.
- `cms_announcement_recipients`: Sasaran dan status keterbacaan pengumuman.
- `cms_media`: Pustaka file media gambar.

### 3. Profil Program Studi
- `study_programs`: Master program studi (Magister Pendidikan, level S2, gelar M.Pd.).
- `study_program_profiles`: Sejarah, profil lulusan, tujuan, dan keunggulan.
- `study_program_visions`: Visi jangka panjang program studi.
- `study_program_missions`: Misi tridharma perguruan tinggi.
- `accreditations`: Status dan nomor SK akreditasi resmi LAMDIK/BAN-PT.
- `organizations`: Struktur organisasi pengelola program pascasarjana.

### 4. Dosen
- `lecturers`: Master biodata dosen, NIDN, jabatan fungsional, gelar, kontak.
- `lecturer_educations`: Riwayat pendidikan S1, S2, S3 dosen.
- `lecturer_expertises`: Bidang kepakaran keilmuan.
- `lecturer_publications`: Publikasi ilmiah terindeks SINTA/Scopus.
- `lecturer_research`: Riwayat riset dan hibah penelitian dosen.
- `lecturer_profiles`: Biografi dan filosofi pengajaran.

### 5. Kurikulum & Perkuliahan
- `curricula`: Master kurikulum program studi berbasis Outcome-Based Education (OBE).
- `courses`: Master mata kuliah, kode MK, bobot SKS, jenis MK (wajib/pilihan/tesis).
- `curriculum_courses`: Sebaran mata kuliah per semester (Semester 1 s.d. 4).
- `learning_outcomes`: Rumusan Capaian Pembelajaran Lulusan (CPL KKNI Level 8).
- `course_learning_outcomes`: CPMK dan sub-CPMK mata kuliah.
- `course_schedules`: Jadwal perkuliahan (hari, jam, ruang, dosen pengampu).

### 6. PMB (Penerimaan Mahasiswa Baru)
- `pmb_periods`: Master gelombang penerimaan mahasiswa baru.
- `pmb_registrations`: Formulir pendaftaran calon mahasiswa (tahap 1-4).
- `pmb_documents`: Berkas persyaratan (KTP, KK, Ijazah S1, Transkrip, Pasfoto).
- `pmb_verifications`: Catatan verifikasi berkas oleh panitia PMB.
- `pmb_invoices`: Tagihan biaya formulir pendaftaran.
- `pmb_payments`: Bukti bayar dan verifikasi pembayaran formulir PMB.
- `pmb_exams`: Master jenis tes seleksi (CBT, TPA, Wawancara).
- `pmb_scores`: Nilai komposit seleksi calon mahasiswa.
- `pmb_results`: Keputusan kelulusan, nomor SKL resmi, dan token QR Code.
- `pmb_re_registration`: Konfirmasi daftar ulang dan penerbitan NIM resmi.

### 7. Data Mahasiswa
- `students`: Master data mahasiswa aktif, NIM, angkatan, semester, IPK kumulatif.
- `student_profiles`: Biodata lengkap (NIK, tempat/tgl lahir, pekerjaan).
- `student_addresses`: Alamat domisili lengkap.
- `student_emergency_contacts`: Kontak darurat keluarga mahasiswa.
- `student_status_histories`: Riwayat status akademik (aktif, cuti, lulus).
- `student_academic_histories`: Riwayat IPS dan SKS per semester.

### 8. Akademik, Presensi, dan Nilai
- `academic_years`: Master tahun akademik (contoh: 2026/2027).
- `semesters`: Master semester ganjil/genap dan jadwal KRS.
- `course_enrollments`: Pengambilan mata kuliah oleh mahasiswa di KRS.
- `attendance`: Rekam kehadiran perkuliahan tatap muka (16 pertemuan).
- `grades`: Rekap nilai mahasiswa (Presensi, Tugas, UTS, UAS, Nilai Akhir, Nilai Huruf, Bobot Mutu).
- `grade_histories`: Log audit riwayat revisi nilai oleh dosen/administrator.

### 9. Tesis
- `thesis_topics`: Pengajuan judul topik penelitian tesis.
- `thesis_proposals`: Berkas naskah proposal tesis.
- `thesis_supervisors`: Penetapan Dosen Pembimbing I dan II.
- `thesis_guidance`: Rekam konsultasi bimbingan draf bab (minimal 8 sesi).
- `thesis_seminars`: Jadwal dan nilai Seminar Proposal dan Seminar Hasil.
- `thesis_examinations`: Jadwal dan berita acara Ujian Sidang Akhir Tesis.
- `thesis_final_documents`: Naskah final tesis yang disahkan dan divalidasi.

### 10. Keuangan
- `fee_types`: Master jenis biaya pendidikan (SPP, SKS, Tesis, Registrasi Ulang).
- `fee_structures`: Tarif biaya per angkatan/gelombang.
- `invoices`: Master tagihan mahasiswa dengan nomor invoice unik.
- `payments`: Bukti bayar dan status verifikasi transfer.
- `payment_receipts`: Kuitansi digital resmi bernomor seri unik.
- `financial_transactions`: Rekap arus kas penerimaan keuangan pascasarjana.

### 11. Penelitian & Alumni
- `research_projects`: Proyek riset dosen dan kolaborasi mahasiswa.
- `publications`: Publikasi artikel ilmiah, jurnal, prosiding, dan buku.
- `community_services`: Pengabdian kepada masyarakat (PkM).
- `alumni`: Data kelulusan mahasiswa magister.
- `alumni_tracer_studies`: Survey penelusuran lulusan dan relevansi kerja.

### 12. Notification Center
- `notification_templates`: Template pesan email HTML dan WhatsApp dengan variabel dinamis.
- `notification_logs`: Catatan riwayat status pengiriman notifikasi (Sent, Failed, Queued).
- `notification_queue`: Antrean pesan untuk eksekusi background worker.

### 13. Audit & Sistem
- `audit_logs`: Rekam jejak audit keamanan seluruh perubahan data penting sistem.
- `backup_logs`: Riwayat eksekusi backup basis data.

