Skema Database SIMAKA S1

Struktur dan relasi database PostgreSQL untuk sistem akademik terintegrasi

Overview

SIMAKA S1 menggunakan arsitektur multi-database dengan PostgreSQL 10.20 yang terpisah menjadi 3 database utama untuk memisahkan concern dan meningkatkan modularitas sistem. Total terdapat 289 tabel yang mengelola seluruh aspek sistem informasi akademik.

db_akademik
Database Akademik
~150 tabel
db_keuangan
Database Keuangan
~80 tabel
db_mahasiswa
Database Mahasiswa
~59 tabel

Keunggulan Arsitektur Multi-Database

Pemisahan database berdasarkan domain memungkinkan scaling independen, backup terpisah, dan isolasi data yang lebih baik. Setiap database dapat di-optimize sesuai kebutuhan spesifiknya tanpa mempengaruhi database lain.

Database Akademik

Database utama untuk mengelola data akademik, kurikulum, jadwal, dan nilai mahasiswa

Modul Utama

Manajemen Mahasiswa

mahasiswa, dim_mahasiswa, registrasi, mahasiswapindahan

Manajemen Dosen

dosen, dim_dosen, mengajar, penasehat

Kurikulum & Mata Kuliah

matakuliah, dim_mk, kurikulum, silabus, rps

Jadwal Kuliah

jadwalkuliah, jadwalruangan, dim_waktu, hari, jam

KRS & Nilai

krs, nilai, gradenilai, log_krs, log_nilai

Organisasi Akademik

fakultas, jurusan, prodi, dekan, kajur

Evaluasi & Survey

jenisevaluasi, pertanyaan, jawabanevaluasi

Administrasi

akademik_kalender, akademik_pengumuman, akademik_sk

Entity Relationship Diagram

erDiagram MAHASISWA ||--o{ KRS : mengambil MAHASISWA ||--o{ NILAI : memiliki MAHASISWA }o--|| PRODI : terdaftar_di DOSEN ||--o{ MENGAJAR : mengampu MATAKULIAH ||--o{ KRS : diambil_dalam MATAKULIAH ||--o{ MENGAJAR : diajar_di JADWALKULIAH }o--|| MATAKULIAH : untuk_mk JADWALKULIAH }o--|| DOSEN : diampu_oleh KRS ||--|| NILAI : dinilai_di PRODI }o--|| JURUSAN : bagian_dari JURUSAN }o--|| FAKULTAS : bagian_dari MAHASISWA { varchar nim PK varchar nama varchar email varchar prodi_id FK } DOSEN { varchar nidn PK varchar nama varchar email } MATAKULIAH { int id PK varchar kode varchar nama int sks } KRS { int id PK varchar nim FK int matakuliah_id FK varchar semester } NILAI { int id PK int krs_id FK decimal nilai_angka varchar nilai_huruf } PRODI { varchar id PK varchar nama varchar jurusan_id FK } JURUSAN { varchar id PK varchar nama varchar fakultas_id FK } FAKULTAS { varchar id PK varchar nama } JADWALKULIAH { int id PK int matakuliah_id FK varchar nidn FK varchar hari varchar waktu } MENGAJAR { int id PK varchar nidn FK int matakuliah_id FK }

Database Keuangan

Database untuk mengelola transaksi keuangan, pembayaran, dan tagihan mahasiswa

Modul Utama

Tagihan Mahasiswa

tagihan, detail_tagihan, jenis_tagihan, periode_tagihan

Pembayaran

pembayaran, detail_pembayaran, metode_pembayaran, bukti_bayar

Beasiswa

beasiswa, penerima_beasiswa, jenis_beasiswa, periode_beasiswa

Laporan Keuangan

laporan_keuangan, rekap_pembayaran, piutang, tunggakan

Entity Relationship Diagram

erDiagram MAHASISWA ||--o{ TAGIHAN : memiliki MAHASISWA ||--o{ PEMBAYARAN : melakukan MAHASISWA ||--o{ PENERIMA_BEASISWA : menerima TAGIHAN ||--o{ DETAIL_TAGIHAN : terdiri_dari TAGIHAN }o--|| JENIS_TAGIHAN : berjenis TAGIHAN }o--|| PERIODE_TAGIHAN : pada_periode PEMBAYARAN ||--o{ DETAIL_PEMBAYARAN : mencakup PEMBAYARAN }o--|| METODE_PEMBAYARAN : menggunakan PEMBAYARAN }o--o| BUKTI_BAYAR : memiliki DETAIL_PEMBAYARAN }o--|| DETAIL_TAGIHAN : membayar PENERIMA_BEASISWA }o--|| BEASISWA : menerima BEASISWA }o--|| JENIS_BEASISWA : berjenis MAHASISWA { varchar nim PK varchar nama varchar prodi_id } TAGIHAN { int id PK varchar nim FK int jenis_tagihan_id FK int periode_id FK decimal total varchar status } DETAIL_TAGIHAN { int id PK int tagihan_id FK varchar keterangan decimal jumlah } JENIS_TAGIHAN { int id PK varchar nama varchar kode } PEMBAYARAN { int id PK varchar nim FK int metode_id FK decimal total date tanggal varchar status } DETAIL_PEMBAYARAN { int id PK int pembayaran_id FK int detail_tagihan_id FK decimal jumlah } METODE_PEMBAYARAN { int id PK varchar nama varchar kode } BEASISWA { int id PK int jenis_id FK varchar nama decimal nominal } PENERIMA_BEASISWA { int id PK varchar nim FK int beasiswa_id FK varchar semester }

Database Mahasiswa

Database untuk mengelola profil dan data personal mahasiswa

Modul Utama

Profil Mahasiswa

mahasiswa, biodata, alamat, kontak, identitas

Orang Tua / Wali

orangtua, wali, pekerjaan, penghasilan

Dokumen

dokumen, upload_berkas, ijazah, transkrip, sertifikat

Status Mahasiswa

status, cuti, aktif_kembali, dropout, lulus

Entity Relationship Diagram

erDiagram MAHASISWA ||--|| BIODATA : "has" MAHASISWA ||--o{ ALAMAT : "lives at" MAHASISWA ||--o{ KONTAK : "has" MAHASISWA ||--|| ORANGTUA : "has" MAHASISWA ||--o{ DOKUMEN : "has" MAHASISWA ||--o{ STATUS : "has" MAHASISWA { varchar nim PK varchar nama varchar email } BIODATA { varchar nim PK varchar agama varchar golDarah } ALAMAT { int id PK varchar nim FK varchar alamat varchar kota } KONTAK { int id PK varchar nim FK varchar nomorHP } ORANGTUA { int id PK varchar nim FK varchar namaAyah varchar namaIbu } DOKUMEN { int id PK varchar nim FK varchar namaFile } STATUS { int id PK varchar nim FK varchar status varchar semester }

Entity Relationship Overview

Relasi antar database dan integrasi data mahasiswa

Integrasi Antar Database

Ketiga database terhubung melalui nim mahasiswa sebagai foreign key utama. Hal ini memungkinkan sinkronisasi data yang konsisten dan memudahkan query lintas database.

graph TB subgraph DB_AKADEMIK["🎓 DB Akademik"] A1[MAHASISWA
nim, nama, prodi] A2[KRS
nim, mk_id] A3[NILAI
nim, nilai] A4[DOSEN
nidn, nama] A5[MATAKULIAH
kode, nama, sks] end subgraph DB_KEUANGAN["💰 DB Keuangan"] K1[TAGIHAN
nim, total] K2[PEMBAYARAN
nim, jumlah] K3[BEASISWA
nim, nominal] end subgraph DB_MAHASISWA["👤 DB Mahasiswa"] M1[BIODATA
nim, identitas] M2[ALAMAT
nim, alamat] M3[ORANGTUA
nim, nama] M4[DOKUMEN
nim, files] end A1 -->|nim| K1 A1 -->|nim| K2 A1 -->|nim| K3 A1 -->|nim| M1 A1 -->|nim| M2 A1 -->|nim| M3 A1 -->|nim| M4 A1 -.->|enrolls| A2 A2 -.->|graded| A3 A4 -.->|teaches| A5 A2 -.->|for| A5 style A1 fill:#3B82F6,stroke:#2563EB,stroke-width:3px,color:#fff style K1 fill:#10B981,stroke:#059669,stroke-width:2px,color:#fff style K2 fill:#10B981,stroke:#059669,stroke-width:2px,color:#fff style K3 fill:#10B981,stroke:#059669,stroke-width:2px,color:#fff style M1 fill:#8B5CF6,stroke:#7C3AED,stroke-width:2px,color:#fff style M2 fill:#8B5CF6,stroke:#7C3AED,stroke-width:2px,color:#fff style M3 fill:#8B5CF6,stroke:#7C3AED,stroke-width:2px,color:#fff style M4 fill:#8B5CF6,stroke:#7C3AED,stroke-width:2px,color:#fff

Keunggulan Pemisahan

  • Skalabilitas independen per domain
  • Backup dan restore terpisah
  • Isolasi data yang lebih baik
  • Performance tuning per database

Keamanan Data

  • Akses kontrol terpisah
  • Enkripsi data sensitif (keuangan)
  • Audit trail per database
  • GDPR compliance untuk data personal

Integritas Data

  • Foreign key constraints
  • Referential integrity terjaga
  • Transaction consistency
  • Data validation di level database

Statistik Database

Ringkasan dan metrics dari struktur database SIMAKA S1

289
Total Tabel
Semua Database
3
Database
PostgreSQL 10.20
150+
Relationships
Foreign Keys
1000+
Kolom
Total Attributes

Distribusi Tabel per Database

Database Akademik
~150 tabel (52%)
Database Keuangan
~80 tabel (28%)
Database Mahasiswa
~59 tabel (20%)

Analisis Berdasarkan Data Aktual

Statistik ini diekstrak langsung dari dump database PostgreSQL (dump_all_postgres.sql) dengan total 289 tabel yang teridentifikasi. Database Akademik mendominasi dengan 52% dari total tabel, mencerminkan kompleksitas sistem akademik yang mengelola mahasiswa, dosen, kurikulum, jadwal, KRS, dan nilai.