Entitas Inti
-
penggunaadalah pusat dari hampir semua relasi. Menyimpan user (owner/karyawan) yang login ke sistem. -
produkadalah entitas barang yang dijual dan dikelola stoknya.
Relasi Antar Tabel
| Dari | Ke | Jenis | Keterangan |
|---|---|---|---|
profil_karyawan → pengguna
|
1:1 |
UNIQUE constraint di pengguna_id
|
Satu karyawan punya tepat satu profil |
transaksi → pengguna
|
M:1 |
id_pengguna nullable |
Banyak transaksi bisa dibuat oleh satu pengguna |
detail_transaksi → transaksi
|
M:1 | transaksi_id |
Satu transaksi punya banyak baris item |
detail_transaksi → produk
|
M:1 | produk_id |
Banyak item transaksi bisa merujuk produk yang sama |
stok → produk
|
1:1* | produk_id |
Satu produk punya satu record stok |
log_aktivitas → pengguna
|
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)
Penting
-
id_penggunaditransaksidanlog_aktivitasnullable → transaksi bisa terjadi tanpa user tercatat (misal: guest/sistem). -
harga_saat_transaksididetail_transaksidisimpan terpisah darihargadiproduk→ snapshot harga saat transaksi terjadi, bukan harga real-time. -
fcm_tokenmenggunakanid_auth(bukan FK kepengguna.id), artinya terhubung ke auth layer (kemungkinan Supabase Auth), bukan ke tabelpenggunalangsung.
Top comments (0)