DEV Community

Aris Candra Muzaffar
Aris Candra Muzaffar

Posted on

Breakdown Database

Entitas Inti

  • pengguna adalah pusat dari hampir semua relasi. Menyimpan user (owner/karyawan) yang login ke sistem.
  • produk adalah entitas barang yang dijual dan dikelola stoknya.

Relasi Antar Tabel

Dari Ke Jenis Keterangan
profil_karyawanpengguna 1:1 UNIQUE constraint di pengguna_id Satu karyawan punya tepat satu profil
transaksipengguna M:1 id_pengguna nullable Banyak transaksi bisa dibuat oleh satu pengguna
detail_transaksitransaksi M:1 transaksi_id Satu transaksi punya banyak baris item
detail_transaksiproduk M:1 produk_id Banyak item transaksi bisa merujuk produk yang sama
stokproduk 1:1* produk_id Satu produk punya satu record stok
log_aktivitaspengguna M:1 id_pengguna nullable Banyak log bisa dimiliki satu pengguna (atau anonymous)
fcm_token Tidak ada FK Hanya menyimpan id_auth (UUID raw, bukan FK ke pengguna)

*stok tidak punya UNIQUE constraint di produk_id, tapi secara logis diperlakukan 1:1.


Ringkasan Flow Utama

pengguna ──< transaksi ──< detail_transaksi >── produk ──< stok
    │
    └──── profil_karyawan (1:1)
    └──── log_aktivitas (opsional)
Enter fullscreen mode Exit fullscreen mode

Penting

  • id_pengguna di transaksi dan log_aktivitas nullable → transaksi bisa terjadi tanpa user tercatat (misal: guest/sistem).
  • harga_saat_transaksi di detail_transaksi disimpan terpisah dari harga di produksnapshot harga saat transaksi terjadi, bukan harga real-time.
  • fcm_token menggunakan id_auth (bukan FK ke pengguna.id), artinya terhubung ke auth layer (kemungkinan Supabase Auth), bukan ke tabel pengguna langsung.

Top comments (0)