DELETE OR UPDATE (Cara/Metode/Logika/Teknik Hapus Data Dari Table/Database) | DASAR PROGRAMER

DELETE OR UPDATE (Cara/Metode/Logika/Teknik Hapus Data Dari Table/Database)

Dari pengalaman saya, menghapus data itu TIDAK diperbolehkan baik itu data Master maupun data Transaksi, kenapa? alasannya? Baiklah saya beri contoh kasus seperti ini : Master data yang sudah digunakan di table lain (ber-relasi) tidak boleh dihapus karena akan berpengaruh pada data di table lain. Contoh :
Master_Supplier
Kode_SupplierName
S01SupplierA
S02SupplierB
Nama_BarangVarchar(50)

Transaksi_Head_Beli
Kode_BeliKode_SupplierTanggal
B120101-001S0101/01/2012
B120101-002S0201/02/2012

Jika ada menghapus data supplier (misalnya dari form master supplier), maka effect nya adalah :
1.Report Transaksi Pembelian tidak akan muncul semua jika anda menggunakan query :
"SELECT A.*, B.Name FROM Transaksi_Head_Beli    AS A JOIN Master_Supplier AS B ON A.Kode_Supplier = B.Kode_Supplier"
dengan query diatas maka yang muncul hanya transaksi "B120101-002" saja
2.Report Transaksi Pembelian Akan muncul semua tetapi sebagian data Supplier akan kosong (NULL), jika
anda menggunakan query :
"SELECT A.*, B.Name FROM Transaksi_Head_Beli    AS A LEFT JOIN Master_Supplier AS B ON A.Kode_Supplier = B.Kode_Supplier"

Lalu bagaimana dengan "Tombol Hapus" pada form? terus bagaimana jika ada supplier yang sudah tidak
dipakai? Jawabannya adalah dengan mengganti perintah "DELETE" dengan "UPDATE" dan menambahkan (1 field/column "rec_status") dengan (DataType = Bit) di setiap table, yang artinya jika (0 = deleted) dan (1 = active) jadi struktur table nya menjadi seperti ini :
Master_Supplier
Kode_SupplierNameRec_Status
S01SupplierA0
S02SupplierB1

Transaksi_Head_Beli
Kode_BeliKode_SupplierTanggalRec_Status
B120101-001S0101/01/20121
B120101-002S0201/02/20121

Sehingga anda akan lebih leluasa lagi membuat Jenis Reportnya, contoh :
1.Jika anda ingin menampilkan semua Report Transaksi Pembelian, baik itu data supplier/ data transaksi yang active dan terhapus:
"SELECT A.*, B.Name FROM Transaksi_Head_Beli    AS A JOIN Master_Supplier AS B ON A.Kode_Supplier = B.Kode_Supplier"
2.Jika anda hanya ingin menampilkan Report yang suppliernya active saja, maka hasilnya akan menampilkan "B120101-002" :
"SELECT A.*, B.Name FROM Transaksi_Head_Beli    AS A JOIN Master_Supplier AS B ON A.Kode_Supplier = B.Kode_Supplier WHERE A.REC_STATUS=1"
Ubah A.Rec_Status=0 jika anda ingin menampilkan Report sebaliknya

Selain itu salah satu keuntungan menggunakan UPDATE+Rec_Status ini adalah memperkecil penurunan performance database, karena jika menghapus data (DELETE) itu akan mengubah susunan index recordset/row pada table, maka semakin lama susunan nya akan semakin rumit/acak dan harus di Shrink Database (jika di windows itu adalah Defragment Hardisk).

Penjelasan tambahan untuk sintak pata tombol HAPUS di form anda dapat menggantinya seperti ini:
"UPDATE Master_Supplier SET Rec_Status=0 WHERE Kode_Supplier='S01'"

Penjelasan tambahan untuk sintak pencarian data supplier (pilih supplier) di form transaksi pembelian :
"SELECT * FROM Master_Supplier  WHERE Rec_Status=1"

Jadi intinya ubah paradigma DELETE menjadi UPDATE dan selalu ikut sertakan field Rec_Status pada setiap SELECT data. Apa yang saya tulis ini bukanlah sebuah kewajiban atau aturan yang harus dilakukan, semua orang mempunyai persepsi dan logika tersendiri dalam berkarya.

Tags:
cara hapus data yang benar, cara delete data yang baik, sintak untuk delete data, berapa lama tahun data perusahaan,
Jika Anda menyukai Artikel di blog ini, Silahkan klik disini untuk berlangganan gratis via email, dengan begitu Anda akan mendapat kiriman artikel setiap ada artikel yang terbit di dasarprogrammer.blogspot.com

0 komentar:

Posting Komentar