Thursday, 15 March 2012

Laporan Matakuliah Pengolahan Basis Data [Bagian II]

 NIM     : 23100266



A. Landasan Teori
Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang dilakukan jika terjadi perubahan pada row data suatu table. Trigger tidak dapat menjadi bagian dari temporary table atau view.

Beberapa contoh penggunaan trigger yang sangat berguna adalah jika kita ingin melakukan kalkulasi tertentu yang tidak perlu "diketahui" aplikasi luar, mencatat aktivitas operasi table misalkan untuk kepentingan change data capture (CDC), dan lain-lain.
Kelebihan Trigger
  • Trigger menyediakan cara alternative untuk memeriksa integritas.
  • Trigger bias menangkap kesalahan dalam business logic pada tingkat database.
  • Trigger menyediakan cara alternative untuk menjalankan tugas-tugas yang dijadwalkan
  • Trigger sangat berguna untuk mengaudit perubahan data dalam table database

Kelemahan Trigger
  • Trigger hanya bias menyediakan validasi tambahan tapi tidak dapat menggantikan semua validasi
  • Beberapa validasi sederhana dapat dilakukan di level aplikasi, sbg Contoh : Kita dapat menvalidasi inputan di sisi klien menggunakan javascript atau di sisi server dengan menggunakan script PHP atau ASP.NET.
  • Trigger mengeksekusi secara tak terlihat dari klien-aplikasi yang terhubung ke database server sehingga sulit untuk mencari tahu apa yang terjadi di level database.
  • Trigger berjalan setiap update yang dibuat ke table sehingga menambah beban kerja ke database dan menyebabkan system berjalan lebih lambat.

Manfaat Penggunaan Trigger
  • Meng-generate nilai kolom turunan (derived column value)
  • Mencegah transaksi yang tidak valid
  • Mengerjakan otorisasi keamanan yang kompleks
  • Mengerjakan aturan bisnis (business rule) yang kompleks
  • Menyediakan pencatatan evenr (event logging ) scr transparant
  • Menyediakan audit
  • Mengerjakan referential integrity ke seluruh node dalam sebuah basis data terdistibusi
  • Menjaga replikasi table scr synconous
  • Mengumpulkan statistic dari pengaksesan table
  • Modifikasi data table kerika DML dijalankan pada view
  • Mempublikasikan informasi ketika ada database event user ivent dan pernyataan SQL untuk suatu aplikasi (yang berlanganan/subscribe)

Macam-macam Trigger
Row Trigger dan Statement Trigger
BFORE dan FOR/AFTER Trigger
INSTEAD-OF Trigger
Triggers on Sytem Event and User Event


Catatan : ada perbedaan antara macam Trigger, seperti BEFORE di Oracle bukan untuk SQL server, row level, clumn level, for each row, for each statement, dll. Sebaiknya pembaca membaca lebih lanjut mengenai ini!

B. Permasalahan
Di dalam transaksi pada database penjualan kemarin ditemukan sebuah permasalahan contohnya dalam Topik yang dibahas kali ini adalah pada proses transaksi Penjualan dan Pembelian .
Pada proses pembelian/penambahan barang yang jumlah qty yang baru dan hanya masuk kedalam database ke dalam table det_beli,
Det_beli





Barang






Seharusnya data qty/jumlahstok barang tersebut juga masuk kedalam table Barang. Alur yang seharusnya terjadi pada pembelian disini adalah Ketika Dilakukan pembelian barang(penambahan) /update /pembatalan(delete) jumlah barang yang dibeli MAKA field jumlahstok barang pada table barang juga mengalami perubahan sebagaimana mestinya.

Dan begitupula pada proses Penjualan barang kepada pelanggan, Tetapi alur yang terjadi pada proses penjualan Seharusnya adalah Ketika dilakukan Proses Penjualan (pengurangan stock barang)/Update/Pembatalan(delete)  Kepada pelanggan Maka field jumlahstok barang pada table barang akan berkurang (jika dijual), dan kembali sesuai jumlah stock sebelumnya (jika dibatalkan/delete).

C. Pembahasan Masalah
Untuk menyesuaikan keperluan diatas maka yang harus dilakukan adalah dengan menggunakan trigger pada det_beli, det_jual yang ditujukan kepada table barang , dengan cara sebagai berikut:

Pada proses pembelian





















Maka dengan memberikan script diatas, jika table det_beli di inputkan data pada field qty , jumlahstok pada table barang akan mertambah pula:














Begitupula jika qty.det_beli di update data akan berubah sesuai jumlah qty pada det_beli itu sendiri.

Proses Penjualan























Catatan: pada saat memasukan Script Trigger tersebut delimiter yang tadinya (;) dirubah menjadi (|) .

Maka dengan memberikan script diatas, jika table det_jual di inputkan data pada field qty , jumlahstok pada table barang akan mengalami pengurangan:



Dengan demikian Proses penginputan data beli dan jual akan berjalan sesuai dengan semestinya



baca juga 

Leave a Reply