Skema Database & Entity Relationship - Ahmad-Rizki21/SaaS-HRM-System GitHub Wiki

# 🗄️ Skema Database & Entity Relationship
Sistem menggunakan **MySQL 8.4** dengan arsitektur **Master-Slave Replication** untuk redundansi data tingkat tinggi.
### 📊 Tabel Utama (Core Tables)
- **`companies`**: Menyimpan data tenant (perusahaan), koordinat kantor, dan radius geofencing.
- **`users`**: Data karyawan terpusat dengan role dan supervisor_id.
- **`attendances`**: Log absensi real-time (in/out, GPS, foto selfie, status).
- **`shifts` & `schedules`**: Manajemen jam kerja dinamis dan kalender jadwal.
### 🔌 Relasi Penting
- **One-to-Many**: Perusahaan memiliki Banyak Karyawan (`companies` -> `users`).
- **Many-to-Many**: Roles dan Permissions dihubungkan melalui tabel pivot `role_has_permissions`.
- **One-to-One**: Setiap absensi (`attendances`) dapat memiliki satu `attendance_corrections`.
### 🛡️ Integritas Data
Seluruh tabel transaksi (Shift Swap, Reimbursement, Fleet Logs) menggunakan **Database Transaction** (Commit/Rollback) untuk menjamin konsistensi data saat terjadi error di tengah proses.