Panduan Struktur Database

Kategori: Database

Panduan Basis Data (Database) MWT

Untuk menjaga konsistensi antar sistem dan kemudahan migrasi di masa depan, seluruh pembuatan tabel dan relasi database di PT MWT wajib mematuhi konvensi berikut.

1. Penamaan Tabel (Table Naming Convention)

Semua tabel di dalam database (MySQL/PostgreSQL) WAJIB menggunakan:

  • Bahasa Inggris.
  • Berbentuk Jamak (Plural).
  • Ditulis dengan gaya snake_case.

Contoh Benar: users, employee_salaries, company_assets. Contoh Salah: tb_user, GajiKaryawan, Asset.

2. Primary Key dan UUID

Secara default, gunakan id (Auto Increment / BigInt) untuk tabel internal yang aman. Namun, jika tabel menyimpan data sensitif yang URL-nya bisa dibaca publik (misal: Transaksi, Invoice, File Rahasia), WAJIB menggunakan UUID agar tidak mudah ditebak (ID enumeration attack).

Contoh Migration dengan UUID:

$table->uuid('id')->primary();

3. Penghapusan Data (Soft Deletes)

Semua tabel transaksi dan master data krusial WAJIB menerapkan mekanisme SoftDeletes. Dilarang menggunakan fungsi hapus permanen (hard delete) kecuali untuk tabel perantara (pivot table).

Tambahkan pada Migration:

$table->softDeletes();

Tambahkan pada Model:

use Illuminate\Database\Eloquent\SoftDeletes;

class Employee extends Model {
    use SoftDeletes;
}

4. Timestamps

Semua tabel wajib memiliki fungsi $table->timestamps(); untuk mencatat created_at dan updated_at. Jangan menonaktifkan properti public $timestamps = false; di Model tanpa persetujuan Lead Developer.