Ads Top

Desain Sistem Database Stok Barang

Dalam melakukan pembuatan program aplikasi tentu penyusunan sebuah struktur tabel database yang baik dan benar sangatlah penting, hal itu dikarenakan beberapa alasan yang menjadi dasar yaitu, bahwa program aplikasi bisa berjalan dengan cepat pada saat penyimpanan data dan bisa mendapatkan laporan dengan cepat dan tepat, serta dapat bertahan lama tidak tergantung dari jumlah record yang berkembang.

Desain Sistem Database Stok BarangPada artikel ini saya akan memberikan contoh desain database yang berhubungan dengan proses Stok Barang. Contoh yang saya pakai menggunakan database SQL SERVER.

Secara sederhana kebutuhan akan informasi stok barang dalam database yang perlu untuk disimpan ada 3 jenis tabel yaitu:
- File Master Barang
- Data Stok Akhir Barang
- Data Mutasi Transaksi Barang

Untuk tabel yang lain sesuai dengan kebutuhan, misalkan apakah diperlukan data pelanggan (customer), apakah dibutuhkan data gudang (multi gudang) dan lain sebagainya, itu tergantung dari kebutuhan sistem yang anda susun tentunya.

Saya akan memberikan contoh dengan kebutuhan data yang sederhana, sehingga mudah difahami dan dapat anda kembangkan sesuai dengan kebutuhan sistem.

File Master Barang

Yang diperlukan dalam tabel ini adalah Kode Barang (Unique) dan informasi barang (Nama Barang, Satuan, HPP, Harga dll. sesuai kebutuhan). Berikut contoh struktur tabel filemasterbarang:
KodeBarang   String/Character Index
NamaBarang   String/Character
Satuan       String/Character
HPP          Currency/Money
HargaJual    Currency/Money

Pada dasarnya tabel File Master Barang ini hanya digunakan untuk menyimpan informasi data barang yang digunakan.

Data Stok Akhir Barang

Dalam tabel ini digunakan untuk menyimpan data stok akhir barang, sehingga anda bisa melakukan update atau mendapatkan stok akhir dengan cepat. Berikut contoh struktur tabel stokbarang:
KodeBarang   String/Character Index
KodeGudang   String/Character Index
StokAkhir    Integer/Real (sesuai dengan kebutuhan jenis stok barang berupa nilai bulat atau pecahan)

Akses atau pemrosesan tabel Data Stok Akhir Barang ini bisa digunakan Query atau Stored Procedure yang berfungsi untuk mengupdate data posisi stok akhir barang (baik bertambah atau berkurang) sesuai transaksi yang terjadi, yang secara sederhana dapat anda lihat dalam contoh Stored Procedure (SQL SERVER) berikut ini:
CREATE PROCEDURE [dbo].[SP_UPDATE_STOKAKHIR]
@KodeBarang  varchar(15),
@KodeGudang  varchar(5),
@Jumlah  real
AS
BEGIN
      UPDATE stokbarang SET Stokakhir = Stokakhir + @Jumlah
      WHERE Kodebarang = @Kodebarang AND Kodegudang = @Kodegudang
END

Baiklah mungkin ada pertanyaan, kenapa stok akhir tidak dituliskan dalam File Master Barang saja? Hal ini didasarkan pada alasan bahwa, jika anda menggunakan gudang stok barang lebih dari 1, maka anda tidak bisa meletakkannya pada File Master Barang, karena anda tidak bisa menggunakannya secara dinamis, misalkan jenis gudang bertambah; sehingga dengan desain database sistem ini, gudang bisa bertambah tanpa harus merubah struktur tabel.

Data Mutasi Barang

Dalam tabel ini berfungsi untuk menyimpan seluruh aktiftas transaksi yang terjadi, baik data stok barang masuk atau keluar dan tidak terbatas jenis transaksi yang digunakan dalam program aplikasi.

Memang setiap transaksi yang kita buat tentu detail dari jenis dan jumlah barang yang kita input sudah tersimpan dalam tabel transaksi, tetapi dalam hal ini alasan kenapa tetap disimpan dalam Data Mutasi Barang adalah, karena untuk kebutuhan laporan dan informasi mutasi barang, yaitu bisa cukup dengan menggunakan 1 tabel saja dan tidak perlu menggunakan banyak tabel sesuai dengan transaksi yang digunakan, sehingga jauh lebih efektif dan lebih cepat.

Berikut contoh struktur tabel mutasibarang:
JenisTransaksi   Integer (digunakan untuk menentukan jenis transaksi yang tersimpan, misalkan 0-Stok Opname, 1-Pembelian dst.)
NomorTransaksi   String/Character
TanggalTransaksi DateTime
KodeGudang       String/Character
KodeBarang       String/Character
Keterangan       String/Character

Masuk            Integer/Real 
(sesuai dengan kebutuhan jenis mutasi barang berupa nilai bulat atau pecahan)
Keluar           Integer/Real (sesuai dengan kebutuhan jenis mutasi barang berupa nilai bulat atau pecahan)

Dengan tersusunnya 3 tabel diatas, maka sudah lengkap akan kebutuhan sistem yang berhubungan dengan Stok dan Mutasi Barang, kita tinggal menambahkan tabel-tabel lain yang diperlukan dalam database sesuai dengan kebutuhan sistem, misalkan untuk kebutuhan transaksi stok opname, pembelian, penjualan, retur dan lain sebagainya (akan dibahas di artikel yang lain).

Dan dari struktur tabel diatas, maka kita bisa menyimpan data dan mengambil laporan secara histori sesuai dengan tanggal proses yang anda maksud, yaitu dengan cara digunakan sebagai parameter laporan. Sebagai contoh, saya akan berikan sebuah Stored Procedure (SQL Server) yang berfungsi untuk mengambil laporan daftar stok secara hitoris pada tanggal tertentu.
CREATE PROCEDURE [dbo].[SP_RPT_STOKBARANG]
@TanggalLaporan datetime
AS
BEGIN
SELECT S.KodeBarang, S.KodeGudang, B.NamaBarang, B.Satuan, B.HPP, B.HargaJual, StokAkhir = SUM(D.Stokakhir) - ISNULL((SELLECT SUM(M.Masuk) FROM MUTASIBARANG M WHERE M.KodeBarang = S.KodeBarang AND M.KodeGudang = S.KodeGudang AND M.TanggalTransaksi>@TanggalLaporan),0) + ISNULL((SELLECT SUM(M.Keluar) FROM MUTASIBARANG M WHERE M.KodeBarang = S.KodeBarang AND M.KodeGudang = S.KodeGudang AND
M.TanggalTransaksi>@TanggalLaporan),0)
FROM STOKBARANG S
INNER JOIN FILEMASTERBARANG B ON S.KodeBarang = B.KodeBarang
GROUP BY S.KodeBarang, S.KodeGudang, B.NamaBarang, B.Satuan, B.HPP, B.HargaJual
END

Dari stored procedure di atas, maka kita bisa mendapatkan daftar stok akhir barang secara histori tergantung dari tanggal laporan yang ditentukan sebagai parameter, sehingga program laporan yang anda susun jauh lebih baik.

Demikian sekedar berbagi ilmu dari pengalaman saya dalam menyusun sebuah sistem database stok barang, semoga bermanfaat dan jika anda mempunyai pertanyaan atau ingin diskusi, anda bisa memberikan komentar pada artikel ini atau mengirim email kepada saya.
Powered by Blogger.