Normalisasi sangat lah penting bagi sebuah perusahaan bahkan individu yang ingin menyusun datanya dengan baik dan benar.
Tujuan dari normalisasi disini sendiri adalah untuk menghindari terjadinya berbagai anomali data dan tidak konsistensinya data. normalisasi ini sangat penting untuk menunjang kinerja database dan memastikan bahwa data dalam database tersebut aman dan tidak terjadi kesalahan jika mendapat perintah SQL terutama DML yaitu update, insert, dan delete. Saya pernah menulisnya pada catatan saya sebelumnya ” https://catatankakimu.wordpress.com/2016/12/05/normalisasi-pada-sistem-basis-data-atau-database/ ”
Pada catatan kali ini saya akan langsung memberikan contoh bagaimana caranya membuat normalisasi. Disini saya akan memberikan contoh transaksi yang ada pada sebuah minimarket.
Pada transaksi pertama, saya memberikan contoh nota penjualan. Nota penjualan disini adalah sebagai tanda bukti stok barang yang dipesan oleh sebuah Minimarket. Nota Penjualan biasanya berisi detail barang-barang dengan harga dan banyak nya jumlah barang yang akan dipesan oleh sebuah Minimarket.
Untuk bukti transaksi Kedua, saya memiliki contoh Faktur Tagihan. Faktur Tagihan disini berupa ringkasan dari beberapa Nota Penjualan yang dimiliki oleh Minimarket tersebut. Faktur Tagihan disini bisa berarti sebuah Minimarket bisa memesan beberapa barang atau jenis barang yang berbeda-beda dengan beberapa bagian barang yang jenisnya saling berkaitan akan dimasukan kedalam satu Nota Penjualan.
Bukti transaksi yang ketiga adalah Kuitansi Pembayaran. Adalah bukti pembayaran yang sudah dilakukan oleh sebuah Minimarket. Kuitansi Pembayaran bisa mencakup beberapa Fakur Tagihan. Pada sebuah minimarket dalam waktu satu minggu biasanya bisa memesan beberapa barang yang nantinya akan tercatan pada Nota Penjualan dan kemudian akan masuk ke Faktur Tagihan. Untuk Pembayaran biasanya supplier memberikan waktu paling tidak satu bulan sekali untuk melunasi semua pembelian yang telah dilakukan oleh Minimarket tersebut dan jika pembayaran sudah dilakukan transaksi tersebut akan masuk dalam bentuk Kuitansi Pembayaran.
Saya telah menjabarkan tiga contoh bentuk transaksi yang ada pada sebuah minimarket. Kali ini saya akan menjabarkan bagaimanacaranya membuat normalisasi dari ketiga contoh transaksi diatas.
Untuk pertama-tama kita harus membuat yang namanya Unnormalized Form (UNF). Intinya kita tinggal mendata atau menulis detail apa aja yang ada pada setiap bukti transaksi, berikut adalah contoh nya :
UNF
Nota Penjualan
Nota = NoPjl + Tanggal + KodeJenis + NamaJenis + KodePlg + NamaPlg + AlamatPlg + KotaPlg + { KodeBrg + NamaBrg + Qty + Satuan + Harga + Jumlah } + Total + Bayar + Sisa + Kembali + Keterangan + KodePjl + NamaPjl + PICPlg
Faktur Tagihan
Faktur = NoFak + TglFak + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + { Tanggal + Nomor + Total + Bayar + Sisa } + NilaiFak + Keterangan + KodePjl + NamaPjl + PICPlg
Kuitansi Pembayaran
Kuitansi = NoKui + TglKui + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + { TglFak + NoFak + NilaiFak + NilBayar + NilSisa } + TotNilaiFak + TotNilBayar + TotNilSisa + Keterangan + KodePjl + NamaPjl + PICPlg
Langkah kedua kita harus membuat First Normal Form (1NF), yaitu dengan memberikan tanda pada nomor dan kode pada setiap bukti transaksi yang nanti nya akan digunakan untuk Primary Key pada Database :
1NF
Nota Penjualan
Nota = NoPjl + Tanggal + KodeJenis + NamaJenis + KodePlg + NamaPlg + AlamatPlg + KotaPlg + KodeBrg + NamaBrg + Qty + Satuan + Harga + Jumlah + Total + Bayar + Sisa + Kembali + Keterangan + KodePjl + NamaPjl + PICPlg
Faktur Tagihan
Faktur = NoFak + TglFak + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + Tanggal + Nomor + Total + Bayar + Sisa + NilaiFak + Keterangan + KodePjl + NamaPjl + PICPlg
Kuitansi Pembayaran
Kuitansi = NoKui + TglKui + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + TglFak + NoFak + NilaiFak + NilBayar + NilSisa + TotNilaiFak + TotNilBayar + TotNilSisa + Keterangan + KodePjl + NamaPjl + PICPlg
Langkah ketiga membuat Second Normal Form (2NF), disini kita memisahkan antara Detail transaksi dengan Header atau Keterangan Transaksi.
2NF
Nota Penjualan
NotaH = NoPjl + Tanggal + KodeJenis + NamaJenis + KodePlg + NamaPlg + AlamatPlg + KotaPlg + Total + Bayar + Sisa + Kembali + Keterangan + KodePjl + NamaPjl + PICPlg
NotaD = NoPjl + KodeBrg + NamaBrg + Qty + Satuan + Harga + Jumlah
Faktur Tagihan
FakturH = NoFak + TglFak + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + NilaiFak + Keterangan + KodePjl + NamaPjl + PICPlg
FakturD = NoFak + Tanggal + Nomor + Total + Bayar + Sisa
Kuitansi Pembayaran
KuitansiH = NoKui + TglKui + KodeCara + NamaCara + JatuhTempo + KodePlg + NamaPlg + AlamatPlg + KotaPlg + TotNilaiFak + TotNilBayar + TotNilSisa + Keterangan + KodePjl + NamaPjl + PICPlg
KuitansiD = NoKui + TglFak + NoFak + NilaiFak + NilBayar + NilSisa
Langkah terakhir Third Normal Form (3NF), adalah memisahkan semua detail transaksi dengan detail kode masing-masing yang ada pada setiap transaksi tersebut sebagai primary key nya.
3NF
Nota Penjualan
NotaH = NoPjl + Tanggal + KodeJenis + KodePlg + Total + Bayar + Sisa + Kembali + Keterangan + KodePjl
NotaD = NoPjl + KodeBrg + Qty + Jumlah
Pelanggan = KodePlg + NamaPlg + AlamatPlg + KotaPlg + PICPlg
JenisJual = KodeJenis + NamaJenis
Penjual = KodePjl + NamaPjl
Barang = KodeBrg + NamaBrg + Satuan + Harga
Faktur Tagihan
FakturH = NoFak + TglFak + KodeCara + JatuhTempo + KodePlg + NilaiFak + Keterangan + KodePjl
FakturD = NoFak + NoPjl + Sisa
MsCara = KodeCara + NamaCara
Pelanggan = KodePlg + NamaPlg + AlamatPlg + KotaPlg + PICPlg
Penjual = KodePjl + NamaPjl
NotaH = NoPjl + Tanggal + Total + Bayar
Kuitansi Pembayaran
KuitansiH = NoKui + TglKui + KodeCara + JatuhTempo + KodePlg + TotNilaiFak + TotNilBayar + TotNilSisa + Keterangan + KodePjl
KuitansiD = NoKui + NoFak + NilSisa
MsCara = KodeCara + NamaCara
Pelanggan = KodePlg + NamaPlg + AlamatPlg + KotaPlg + PICPlg
Penjual = KodePjl + NamaPjl
FakturH = NoFak + TglFak + NilaiFak + NilBayar
Selesai ….
Memang agak rumit ya teman-teman sekalian. Coba dipahami secara perlahan saja, jika memang ada yang kurang mengerti bisa ditanyakan atau menulis komentar yang telah di sediakan.
Bentuk normalisasi diatas adalah hanya sebagai contoh. Kebutuhan disetiap perusahaan masing-masing sangatlah berbeda. So, jangan disamakan percis seperti diatas.