contoh trigger SQL

Membuat Trigger sederhana di MySQL

Trigger merupakan suatu fasilitas yang disediakan pada MySQL untuk melakukan sebuah aksi Data Manipulation Language (DML) secara otomatis setelah action tertentu , dalam hal ini (before/after).

Untuk menjalankan sebuah trigger, pertama kali kita harus mengetahui alur dan event yang akan dijalankan oleh sebuah trigger. Saya akan mempraktekan secara sederhana pada 2 buah table, yakni table buku dan table log, dimana setelah kita menginput data buku , secara otomatis data trigger akan menginput pula data log.

Berikut contoh table buku dan log nya :

Alurnya, jika kita menginput 1 row buku, maka secara otomatis trigger akan menjalankan fungsi insert 1 row pula pada table log. Untuk itu kita buat dulu triggernya sebagai berikut :

contoh trigger SQL

Fungsi CREATE TRIGGER  [nama trigger] akan membuat trigger baru
AFTER INSERT ON [table] menandakan trigger dibuat setelah menginput data di table buku
FOR EACH ROW menandakan dimulainya perintah baru
BEGIN-END, menandakan area baris perintah yang akan ditulis (bisa lebih dari 1 perintah)

DELIMITER, berfungsi untuk membari tahu kepada MySQL, delimiter yang digunakan, secara default biasanya menggunaan semicolon (;) tapi diatas kita menggunakan $$

oke selajutnya kia tinggal jalankan query tersebut hingga muncul pesan berhasil sbb :

trigger mysql success

Jika sudah berhasil , maka kita tinggal mencoba, menginput 1 data pada table buku, kemudian kita mengecek data pada table log,maka secara otomatis data pada table log juga akan terisi.

Oh iya untuk mencoba trigger secara GUI, kita bisa juga membuat trigger pada PHPMyAdmin pada menu more > triggers, seperti gambar dbawah ini :

Demikian penjelasan tentang trigger, selamat mencoba

By : Adji Hendrawan
1 hari menjelang lebaran 😉

 

Tipe data dan table MySQL

Tipe-tipe data pada MySQL

Hai ketemu lg hehe..

Kali ini saya ingin menyampaikan informasi dasar kembali tentang tipe-tipe data yang terdapat pada MySQL. Beberapa tipe data ini biasanya yang paling sering digunakan dalam membuat database.

Kita bebas menentukan tipe data yang akan digunakan , dengan disesuaikan kebutuhan karakteristik datanya. Beberapa tipe data umum yang sering digunakan yaitu :

  1. NUMERIK (INT)

Tipe data ini biasanya digunakan untuk menyimpan angka numerik. Bilangan numeriknya bernilai bilangan bulat positif atau negatif. Nilai INT yakni -2.147.483.648 s/d 2.147.483.647 atau 4 byte (32 bit). Turunan dari INT antara lain :

  • TINYINT, Jangkauan -128 s/d 127 dan bernilai 1 Byte (8 bit).
  • SMALLINT, jangkauan -32.768 s/d 32.767 dan bernilai 2 Byte (16 bit).
  • MEDIUMINT, jangkauan -8.388.608 s/d 8.388.607 dan bernilai 3 byte (24 bit).
  • BIGINT, jangkauan ± 9,22 x 1018 dan bernilai 8 byte (64 bit).
  • FLOAT, untuk menyimpan bilangan pecahan negatif  presisi tunggal dan positif , bernilai 4 byte (32bit).
  • DOUBLE, untuk menyimpan bilangan pecahan negatif  presisi ganda  dan positif , bernilai 8 byte (64bit).
  • DECIMAL, untuk menyimpan bilangan pecahan positif dan negatif bernilai 8 byte (64 bit)

2. TEKS (STRING)

Tipe data ini digunakan untuk menyimpan data teks/string pada database MySQL. Beberapa tipe data yang sering digunakan antara lain :

  • CHAR, untuk menyimpan data string berukuran tetap, yakni 0-255 karakter
  • VARCHAR, untuk menyimpan data string berukuran dinamis sesuai jumlah karakter 0 – 65.535
  • TINYTEXT, menyimpan data teks dalam ukuran yang kecil yakni 0 – 255 karakter
  • TEXT, menyimpan data teks s/d 65.535  karakter
  • MEDIUMTEXT, menyimpan data teks berukuran medium 0 s/d 224 – 1 karakter
  • LONGTEXT, menyimpan data teks berukuran panjang 0 s/d 232 – 1 karakter

3. DATE TIME

    Tipe data ini digunakan untuk menyimpan data tanggal dan waktu. Biasanya pada tipe data ini memiliki model waktu yang berbeda-beda sesuai kebutuhan. Beberapa tipe data ini yang sering digunakan antara lain :

  • DATE, menyimpan data tanggal antara 1000-01-01 s/d 9999-12-31 (YYYY-MM-DD) dan berukuran 3 byte.
  • TIME, menyimpan data waktu -838:59:59 s/d +838:59:59 (HH:MM:SS) berukuran 3 byte
  • DATETIME, menyimpan data gabungan tanggal beserta waktu, yakni 1000-01-01 00:00:00′ s/d ‘9999-12-31 23:59:59’ dan bernilai 8 byte.
  • YEAR, digunakan untuk menyimpan data tahun, jangkauan 1900 s/d 2155 bernilai 1 byte.

4. BLOB

Merupakan singkatan dari Binary Large Object. Digunakan untuk menyimpan data biner pada database.

5. ENUM

Singkatan dari Enumerasi, tipe data ini khusus digunakan untuk menyimpan beberapa kumpulan data. Saya biasanya menggunakan untuk pilihan  beberapa data (option) pada aplikasi web. Misalnya data agama yang bersifat tetap di Indonesia : ‘Islam’, ‘Kristen’, ‘Katolik’, ‘Hindu’ , ‘Budha’

6. SET

Digunakan untuk mengisi data berupa himpunan data.

 

Selain tipe-tipe data, ada pula yang dimaksud dengan tipe table database ,  yakni tipe yang digunakan pada table. Pada MySQL jika kita tidak men setting tipe table secara manual, maka MySQL akan mengeset nya secara otomatis di konfigurasi pada variabel default-table-type. Berikut beberapa tipe table MySQL yang umum digunakan :

  1. MyISAM, merupakan tipe table yang sederhana, stabil, dan mudah digunakan, sehingga menjadi default pada MySQL. Tipe table ini mampu mengcover semua tipe data mysql yang ada. hanya saja belum mendukung relasi table.
  2. InnoDB, merupakan tipe table yang mendukung transaksi dan hubungan / relasi antar table
  3. HEAP, merupakan tipe table temporary yang disediakan untuk menyimpan data sementara pada proses pengelolaan data di MySQL

 

Demikian beberapa tipe data/field dan table yang umum digunakan pada MySQL, semoga mengingatkan kita kembali dalam merancang database dengan baik ya!

By : Adji Hendrawan
Pondok Aren, 23 Juni 2017, 2 hari menjelang lebaran 🙂

 

 

Apa itu Normalisasi Database ?

Normalisasi database bagi saya merupakan suatu bentuk pengaplikasian / cara dalam memetakan suatu informasi data menjadi beberapa bagian / entitas agar menjadi lebih mudah dalam pengelolaan data.

Hubungan tiap entitas tersebutlah yang dimaksud sebagai sebuah normalisasi, biasanya normalisasi database terbagi menjadi beberapa tingkatan bergantung dengan seberapa kompleksnya data tersebut, seperti bentuk normalisasi pertama (1NF) , normalisasi kedua (2NF), 3NF dan BCNF. Sebelum melangkah lebih jauh, saya ingin menjelaskan bahwa dalam konteks RDBMS istilah-istilah normalisasi tersebut merujuk kepada:

  • Entitas , yakni sebuah table, hubungan antar entitas berarti hubungan antara tiap table
  • Atribut, yakni kelengkapan sebuah table, dalam database hal ini berarti adalah sebuah field yang tentu saja beragam
  • Identifier, yakni atribut pengidentifikasian setiap entitas, dalam Bahasa mudahnya kita mengenalnya sebagai ID
  • Relasi/Hubungan tiap table yang menjadi sebuah nilai foreign key

Oke langsung saja pada prakteknya (dalam hal ini saya menggunakan database MySQL) kita memiliki sebuah data sebagai berikut :

Data diatas masih berupa bentuk Normal Data, yang tentunya dapat membuat fungsi DML (Data Manipulation Language) tidak berjalan sempurna, karena adanya redudansi/duplikasi data. Sehingga misalkan saya ingin mengubah salah satu buku berdasakan jenis buku IT, maka ada 2 row yang akan terupdate.

Bentuk 1NF (First Normal Form)

Sehingga kita perlu mengubahnya dalam bentuk 1NF (First Normal Form), yakni memetakan data redudansi tersebut menjadi beberapa entitas. Berikut hasil 1NF nya :

Table Normalisasi Database - 1NF

 

Dapat kita lihat data normal form sebelumnya dapat kita pecah menjadi 3 entitas baru beserta atributnya. Dan perlu diperhatikan bahwa setiap entitas memiliki identifier / ID masing, masing sehingga menghindarkan lagi terjadinya redudancy data.

Bentuk 2NF (Second Normal Form)

Jika data sudah bisa dibentuk dalam bentuk 1NF, jika kita perlu melakukan hubungan/relasi antara entitas tersebut, (pada contoh nyata : membuat table transaksi untuk menyimpan order) nah bentuk 2NF ini sudah mengakomodir hal tersebut berdasarkan identifier dari masing-masing entitas. Lihat table 2NF nya sebagai berikut :

contoh Table Normalisasi database 2NF

Bentuk 3NF (Third Normal Form)

Bentuk ini adalah pengembangan dari 2NF, Hal ini yakni dengan membuang field/atribut yang tidak bergantung pada identifier / Primary key ID. Itu artinya kita masih bisa menambahkan field jika itu sesuai/berhubungan dengan primary key  Misalkan sebagai berikut :

Demikian penjelasan singkat tentang normalisasi sampai bentuk 3 tingkat, insya allah di trit saya berikutnya saya akan menjelaskan lebih detail. Okay

by: adji hendrawan