Laporan Praktikum Desain Basis Data VIII : Fungsi, PL/PGSQL & Trigger

Sunday, November 23, 2014


Teori


Fungsi
   Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail. Sedangkan untuk memunculkan fungsi dapat menggunakan query \df.

   Ada beberapa konsep yang menarik dari fungsi antara lain:
• Bahasa yang dipakai dapat didefenisikan sendiri de ngan tersedianya parameter LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
• Kita dapat membuat dua buah fungsi dengan nama yang sama namun parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya. 

   Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:
• Nama Fungsi
• Nomor dari fungsi argument
• Tipe data dari setiap argument
• Tipe dari hasil fungsi
• Fungsi action
• Bahasa yang digunakan oleh fungsi action.
   Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan :

db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT
db_personal-> AS 'SELECT ($1 + $2) * $3;'
db_personal-> LANGUAGE 'sql';
CREATE
db_personal=> SELECT perkalian (10,10,10);
perkalian
-----------200
(1 row)

>> Source : Mustofa, Aziz. Praktikum Desain Basis Data Bab VIII Fungsi dan PL/PGSQL 2013
PL/SQL ( Prosedural Language/Structured Query Language ) 
   Merupakan bahasa pemrograman yang menggabungkan bahasa procedural, seperti pernyataan percabangan (IF-THEN-ELSE), pengulangan (LOOP) dan deklarasi variable. PL/SQL dikembangkan oleh Oracle untuk pembuatan Fungsi, Database Trigger, dan Stored Procedure.
Fungsi PL/SQL
   Merupakan sekumpulan perintah PL/SQL untuk menjalankan suatu tugas tertentu dan mengembalikan suatu nilai. Terdapat pada sebuah program unit yang disimpan dalam database untuk mengerjakan suatu tugas dengan mengembalikan suatu nilai tertentu.
Syntax Function:
CREATE [OR REPLACE] FUNCTION name [(parameter[, parameter,…])]
RETURN datatype IS
[local declaration;]
BEGIN
executable statements;
[EXCEPTION
Exception handlers]
END [name];
>> Source http://teknisijaringankomputer.wordpress.com/2013/02/12/mengenal-plsql/

Trigger

   Trigger dalam database diartikan sebagai “procedural code that is automatically executed in response to certain events on a particular table or view in a database“. trigger merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau view. Triggerdigunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel ‘log’sebelum menghapus data di tabel pelanggan.

Singkatnya,
   Di MySQL, Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.5.*) fungsionalitasnya sudah bertambah. Pada versi selanjutnya pihak pengembang MySQL berjanji akan lebih menguatkan (menambah) fitur trigger ini.

   Trigger sering digunakan, antara lain untuk:
   Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam sistem penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.

   Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut disimpan.

Membuat Trigger Baru
   Berikut ini bentuk umum perintah untuk membuat triggers:CREATE TRIGGER name [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tablename FOR EACH ROW statement
 
   Keterangan dari bentuk umum perintah membuat trigger:
name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam MySQL
[BEFORE | AFTER] digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses.

   [INSERT | UPDATE | DELETE] digunakan untuk menentukan event (proses) yang dijadikan trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers.
tablename, merupakan nama tabel dimana trigger berada.
statement, merupakan sekumpulan perintah atau query yang akan secara otomatis dijalankan jika event / proses yang didefinisikan sebelumnya aktif.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger, maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.

   Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mengakses record yang sudah diproses (update atau delete).

>> Source : http://87wz.blogspot.com/2013/12/trigger-pada-mysql.html

Hasil Praktikum & Tugas

>>Praktikum (PostgreSQL)

1. Buatlah  fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi 
sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/9
Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut. 





2. Buatlah fungsi untuk  mencari alamat  mahasiswa  dari tabel mahasiswa  berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT.




3. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql

Nilai > 100 atau Nilai < 0  ||       Nilai Salah
Nilai ≥ 90                          ||       Nilai A
70 ≤ Nilai < 90                  ||       Nilai B
60 ≤ Nilai < 70                  ||       Nilai C
50 ≤ Nilai < 60                  ||       Nilai D
0 ≤ Nilai < 50                    ||       Nilai E

Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut.




4. Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap  dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT.




5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.




>>Tugas (MySQL)

1. Buatlah  fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi 
sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/9
Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut. 





2. Buatlah fungsi untuk  mencari alamat  mahasiswa  dari tabel mahasiswa  berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT.





3. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql

Nilai > 100 atau Nilai < 0  ||       Nilai Salah
Nilai ≥ 90                          ||       Nilai A
70 ≤ Nilai < 90                  ||       Nilai B
60 ≤ Nilai < 70                  ||       Nilai C
50 ≤ Nilai < 60                  ||       Nilai D
0 ≤ Nilai < 50                    ||       Nilai E

Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut.






4. Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap  dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT.






5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.







Perbandingan PostgreSQL dan MySQL
  1. PostgreSQL kita bisa menggunakan language'sql'; atau language 'pl/pgsql'; di akhir fungsi yang kita buat, sedangkan pada MySQL, kita harus menggunakan delimiter,
  2. PostgreSQL declare terletak sebelum begin, sedangkan pada MySQL declare terletak setelah begin.
  3. PostgreSQL, kiata menggunakan tanda ' dua kali untuk mengapit bentuk String seperti pada soal nomor 3 (''Nilai Salah''). Sedangkan pada MySQL, kita menggunakan tanda petik "("Nilai Salah").
  4. PostgreSQL, kita menggunakan tipe data opaque sebagai tipe data kusus pada Trigger di PostgreSQL, sedangkan MySQL ngga ada gituan,
  5. PostgreSQL, kita dapat membuat fungsinya dulu, lalu dapat dieksekusi pada Trigger yang akan dibuat, sedangkan MySQL ngga.
  6. PostgreSQL, kita dapat mengabungkan event yang berbeda dalam waktu sama pada satu Trigger, misalnya pada nomor 5 (before insert or update), sedangkan pada MySQL kita harus membuat 2 trigger untuk 2 event yang berbeda. Sehingga ada trigger modifikasi (before insert) dan trigger modifikasi2 (before update).
Kesimpulan

   Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail. Fungsi terdapat pada DBMS PostgreSQL maupun MySQL.
   PL/PGSQL merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah terdapat dalam instalasi PostgreSQL.

   Sedangkan Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. 

   Semoga bermanfaat dan dapat dimanfaatkan seperlunya, see you next time