Rabu, 29 Juni 2011

View, Store Procedure dan Triger dalam MySql

A. MySQL
MySql adalah suatu perangkat lunak database relasi
(Relational Database Management System atau RDBMS), seperti halnya ORACLE, Postgresql,
MS SQL, dan sebagainya. MySQL AB menyebut produknya sebagai database open source terpopuler di dunia. Berdasarkan riset dinyatakan bahwa bahwa di platform Web, dan baik untuk kategori open source maupun umum, MySQL adalah database yang paling banyak dipakai. Menurut perusahaan pengembangnya, MySQL telah terpasang di sekitar 5 juta komputer. Puluhan hingga ratusan ribu situs mengandalkan MySQL bekerja siang malam memompa data bagi para pengunjungnya.

B. View
View adalah Salah satu feature yang terdapat pada mysql 5.0 adalah view.
sedangkan view sendiri apa ya ??? Banyak orang yang bilang kalau view adalah tabel temporari kadang ada juga yang bilang virtual tabel, tapi maksudnya sama saja. Biasanya view di buat untuk menyederhanakan pengambilan data, yang dimana query sebenarnya ribet, misalkan di tabel tersebut terdapat join, grup by, agregasi (sum, min, max dan sebagainya).

Ok ..... Sekarang kita membuat contohnya, sebagai berikut :
1. tbl_mahasiswa (tabel untuk menyimpan biodata mahasiswa)

CREATE TABLE `sisfo_universitas`.`tbl_mk` (
`mk` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
PRIMARY KEY (`mp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

2. tbl_mk (tabel untuk menyimpan mata kuliah)

CREATE TABLE `sisfo_universitas`.`tbl_mk` (
`mk` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
PRIMARY KEY (`mk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

3. tbl_nilai (tabel untuk menyimpan nilai-nilai mahasiswa)

CREATE TABLE `sisfo_universitas`.`tbl_nilai` (
`kode` varchar(255) NOT NULL,
`npm` char(10) NOT NULL,
`mk` char(10) NOT NULL,
`nilai` varchar(50) NOT NULL,
PRIMARY KEY (`kode`),
KEY `npm_fk_constraint` (`npm`),
KEY `mk_fk_constraint` (`mk`),
CONSTRAINT `mk_fk_constraint` FOREIGN KEY (`mk`) REFERENCES `tbl_mk` (`mk`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `npm_fk_constraint` FOREIGN KEY (`npm`) REFERENCES `tbl_mahasiswa` (`npm`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1

jadi ketiga tabel di atas tadi untuk intinya adalah tabel-tabel yang yang, dibutuhkan untuk menghasilkan nilai-nilai mahasiswa dari setiap mata kuliah.

sekarang kita ingin membuat sebuah report yang dimana di report tersebut memilik field npm, nama_mahasiswa, nama_mata_kuliah, nilai, yang dimana akan dimplementasikan query tersebut menjadi sebuah view, dibawah ini adalah cara membuat nya,

CREATE VIEW `view_nilai`
AS select `n`.`npm` AS `npm`,
`n`.`nilai` AS `nilai`,
`s`.`nama` AS `nama_mahasiswa`,
`m`.`nama` AS `mata_kuliah`
from ((`tbl_nilai` `n` join `tbl_mahasiswa` `s` on((`n`.`npm` = `s`.`npm`))) join `tbl_mk` `m` on((`n`.`mk` = `m`.`mk`)))

setelah view terbuat dengan query yang cukup kompleks seperti diatas, maka untuk untuk mendapat nilai siswa berikutnya kita cukup memanggil view nya saja seperti di bawah ini,

select * from view_nilai

C. Store Procedure
Store procedure merupakan sebuah script/batch. Script ini disimpan dalam pada database, bukan file terpisah. Tidak seperti script biasa, store procedure bisa memiliki parameter input , output dan return values. Untuk MySQL baru bisa disupport untuk MySQL 5 ke atas.
Manfaat Store Procedure adalah:
1. Untuk meningkatkan securiti, misalkan sebuah aplikasi yang login dengan user abcd tidak dapat mengakses tabel2 tertentu secara langsung tetapi mesti melalui store procedure, dengan cara ini akan meningkatkan ke validasian data.
2. Akan memperkecil trafik request dari aplikasi ke database karena semua proses bisnis dilakukan di database mysql dan aplikasi akan menerima hasil proses saja.
3. Ketika sebuah aplikasi yang didevelop terdiri dari berbagai bahasa pemrograman (misalkan desktop dan web) yang mana kedua tipe aplikasi tersebut membutuhkan hasil dan operasi database yang sama.

Dalam contoh dibawah ini kasus tentang sistem informasi universitas, yang mana Store Procedure yang dibuat akan menangani tentang menghasilkan data siswa yang difilter bedasarkan jurusan.

sturuktur tabel mahasiswa

CREATE TABLE `data_mahasiswa`.`tbl_mahasiswa` (
`npm` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
`jurusan` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Store procedure untuk menampilkan data siswa dalam bentuk result set

DELIMITER $$

CREATE PROCEDURE sp_tampil_mahasiswa_jurusan(p_jurusan varchar)
BEGIN
SELECT * FROM tbl_mahasiswa where JURUSAN = p_jurusan;
END$$

DELIMITER ;

Penjelasannya sebagai berikut:
  • DELIMITER = Untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$
  • CREATE PROCEDURE = Header untuk membuat store procedure
  • BEGIN END = Body dari store procedure, jadi semua SQL nya di tulis disini.
Contoh pemanggilannya seperiti dibawah ini:

call sp_tampil_mahasiswa_jurusan(TI);

D. TRIGER
Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.
Jenis Triger :
1.· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
2. Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data
(seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.
Trigger perlu dibuat pada saat :

· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Sintak penulisan dari database trigger, berisi komponen berikut :
1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Rabu, 22 Juni 2011

Rabu, 08 Juni 2011

CDM-REKENING


PDM-REKENING