Tuesday, February 16, 2021

Membahas Unique, Check dan Indeks

Membahas Unique, Check dan Indeks


UNIQUE

Pada dasarnya fungsi unique sama fungsinya seperti primary key, yaitu sebagai validasi agar tidak terdapat data yang sama atau ganda pada sebuah tabel, memastikan kolom yang ditandai sebagai primary key atau uniqe benar-benar data yang unik (berbeda satu sama lain). Yang membedakan antara keduanya yaitu primary key tidak mentoleransi adanya nilai NULL sedangkan uniqe dapat diisi dengan nilai NULL.

CHECK

Check adalah jenis constraint yang berfungsi untuk menyaring nilai yang hanya dapat diinput kedalam kolom tertentu di dalam sebuah tabel berdasarkan nilai yang sudah ditentukan, contohnya pada kolom golongan_darah yang dibatasi hanya boleh diinput nilau A, B, AB dan O. Maka jika kita coba memasukkan nilai selain A, B, AB dan O otomatis akan server akan menolak.

Namun MYSQL sendiri tidak mendukung pengoperasian dari tipe constraint Check, sebagai gantinya kita dapat menggunakan fungsi Enum pada sebuah kolom untuk menangai permasalah seperti yang tadi kita contohkan.

INDEX

Di dalam database yang memiliki banyak tabel dan saling berelasi, index menjadi suatu objek yang sangat penting. Index dapat membantu kita untuk mempercepat proses pengambilan, pengurutan dan pencarian data di dalam sebuah database. Jika kita mengatur sebuah kolom pada suatu tabel sebagai primary key, maka kolom tersebut sudah otomatis diidentifikasi sebagai index, namun kita juga masih bisa membuat index di kolom yang lain.

Data yang sudah ditandai sebagai index akan diurukan sesuai kolom index, dengan demikian proses pencarian dapat dilakukan lebih cepat jika dibandingkan tanpa menggunakan index. Pada dasarnya index harus terhubung dengan suatu kolom dalam sebuah tabel, atau dapat kita pahami bahwa sebuah tabel hanya dapat diindex jika terdapat kolom tertentu yang sudah ditandai sebagai index. Penggunaan index sangat dirasa manfaatnya pada terutama saat kita menggunakan query JOIN yang menghimpun data dari banyak tabel.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
Praktek : Mohammad Fazlurrahman

Tuesday, November 24, 2020

Procedure dan Function

 Procedure dan Function

Pada dasarnya, function dan stored procedure database adalah hal yang sama, yaitu kumpulan peritah atau query yang disimpan dan dijalankan di dalam server database. Function dan stored procedure diikat dengan sebuah nama, sehingga kita hanya perlu memanggil nama dari function dan stored procedure yang ingin dieksekusi.

Perbedaan mencolok antara keduanya terletak di CRUD (create, read, update dan delete) data, dimana function hanya bisa melakukan select data atau task sederhana lainnya, tanpa bisa menggunakan perintah insert, edit dan delete data. Sedangkan stored procedure dapat melakukan task yang lebih kompleks yang tidak bisa diakomodir oleh function, sehingga stored procedure banyak digunakan sebagai alternatif pengolahan data dalam bahasa pemrograman.

Contoh function :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
DROP FUNCTION IF EXISTS hari;

CREATE FUNCTION hari() RETURNS DATETIME
BEGIN
DECLARE hari DATETIME;
SET hari = NOW();
RETURN (hari);
END;

SELECT hari();

Script di atas menjelaskan pembuatan function dengan nama hari yang bertujuan untuk menampilkan tanggal dan waktu saat ini, adapun penjelasan singkat dari beberapa sourcode code di atas :

- DROP FUNCTION IF EXISTS hari : menghapus function jika terdapat function dengan nama yang sama.

- RETURNS DATETIME : menjelaskan tipe data yang akan ditampilkan function tersebut, dapat juga menggunakan tipe data lain seperti INT, VARCHAR dan tipe data lainnya.

- DECLARE hari DATETIME : mentapkan tipe data yang digunakan pada variabel hari.

- SET hari = NOW() : membuat variabel bernama hari yang berisi nilai NOW() atau tanggal dan jam sekarang, dapat juga menyimpan nilai lain sesuai tipe data yang ditentukan.

- RETURN hari : memanggil variabel hari untuk ditampilkan.

- SELECT hari() : memangil function hari.

Contoh di atas merupakan implementasi sederhana dari sebuah function, kita dapat membuat function yang lebih rumit lagi seperti membut sebuah rumus atau menampilkan data dari sebuah tabel berdasarkan pencarin dari variabel tertentu, perlu diingat bahwa function hanya bisa sebatas melakukan perintah SELECT data tanpa bisa melakukan CREATE, UPDATE atau DELETE.

Berikut contoh pembuatan function untuk menampilkan data dari kolom nama_provinsi di dalam tabel lokasi berdasarkan id_lokasi 'LOK01' :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
DROP FUNCTION IF EXISTS lokasi;

CREATE FUNCTION lokasi(kode VARCHAR(5)) RETURNS VARCHAR(100)
BEGIN
DECLARE cari VARCHAR(100);
SELECT nama_lokasi INTO cari FROM lokasi WHERE id_lokasi=kode;
RETURN (cari);
END;

SELECT lokasi('LOK01');

Contoh procedure :

1
2
3
4
5
6
7
8
9
DROP PROCEDURE IF EXISTS savelokasi;

CREATE PROCEDURE savelokasi(kode VARCHAR(5), nama VARCHAR(100)) 
SQL SECURITY INVOKER
BEGIN
INSERT INTO lokasi(id_lokasi, nama_lokasi) VALUES(kode, nama);
END;

CALL savelokasi('LOK03', 'Surabaya');

Script di atas menjelaskan pembutan procedure dengan nama savelokasi, berikut penjelasan beberapa source code penting di atas :

- DROP PROCEDURE IF EXISTS savelokasi : menghapus procedure jika terdapat procedure dengan nama yang sama.

- SQL SECURITY INVOKER : security code dari MYSQL.

CREATE PROCEDURE savelokasi(kode VARCHAR(5), nama VARCHAR(100)) : membuat procedure dengan nama savelokasi dengan kebutuhan variabel kode dan nama berdasarkan tipe data dan panjang data yang ditentukan.

- INSERT INTO lokasi(id_lokasi, nama_lokasi) VALUES(kode, nama) : perintah untuk menambahkan data sesuai nama kolom dengan nilai dari variabel yang dipanggil.

- CALL savelokasi('LOK03', 'Surabaya') : memanggil procedure savelokasi.

Semua pembahasan di atas dapat kita praktekan kembali berdasarkan contoh kasus yang berbeda, serta dapat dikembangkan menjadi lebih kompleks lagi.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
Praktek : Mohammad Fazlurrahman

Monday, November 23, 2020

Event Scheduler di Mysql

Event Scheduler di Mysql

Event mysql adalah sekumpulan query atau perintah yang dijalankan dan diberhentikan pada periode waktu tertentu atau sesuai jadwal yang telah dibuat. Event sangat membantu kita untuk melakukan tugas-tugas yang bersifat rutin seperti check data atau melakukan CRUD (Create, Read, Update dan Delete) pada kondisi tertentu, konsep ini mirip dengan cron job service yang ada di Linux dan schedule task yang ada di Windows.

Bagi yang menggunakan XAMPP dan phpMyadmin dapat dilihat saat kita membuka salah satu database, sudah tersedia panel Events pada pojok kanan atas, untuk lebih jelasnya dapat dilihat pada gambar di bawah ini :


Berikut penjelasan dari setiap nomor yang ada di gambar atas :

1. Events, tombol ini berfungsi untuk menampilkan data event scheduler yang sudah kita buat. Pada panel ini kita dapat membuat, mengedit dan menghapus event, termasuk melakukan export sourcode dari sebuah event.

2. Events scheduler status, tombol ini berfungsi untuk mengaktifkan dan menonaktifkan semua events yang ada, pastikan statusnya ON agar semua event yang kita buat berjalan sesuai fungsinya. Usahakan juga service database kita tetap berjalan, karena status events scheduler akan OFF jika service database kita tidak berjalan.

3. Add event, tombol ini berfungsi untuk membuat event baru.

Kali ini kita akan mempraktekan pembuatan event yang sederhana yang bernama Rekap_Bulanan, yaitu event untuk menyimpan semua tanggal pada bulan berjalan, jika hari ini adalah tanggal 11 november 2020 maka kita akan menyimpang tanggal dari 2020-11-01 sampai 2020-11-30 (bulan berjalan) yang akan di jelaskan pada gambar di bawah ini.


Kita cukup menuliskan query pada panel SQL, berikut query yang bisa kita coba berdasarkan gambar di atas :
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
DROP EVENT IF EXISTS Rekap_Bulanan;
CREATE EVENT Rekap_Bulanan ON SCHEDULE EVERY 1 DAY STARTS '2019-01-01 10:10:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
    DECLARE  BOOL DEFAULT 0;
    DECLARE period VARCHAR(40);
    SET period	= DATE_FORMAT(CURDATE(),'%Y-%m');
    -- Hari Kerja
    INSERT INTO rekap_absensi(id_ra,id_pegawai,periode,created_at)
    SELECT '' AS kode, idpegawai, period, NOW() FROM pegawai WHERE tgl_resign IS NULL AND alasan IS NULL AND idpegawai NOT IN('1', '2', '3') AND idpegawai NOT IN(SELECT rekap_absensi.id_pegawai FROM rekap_absensi WHERE rekap_absensi.periode=period);
IF  THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;
END

Fungsi Drop Event di atas berfungsi untuk menghapus event jika ada event dengan nama yang sama, hal ini untuk menghindari error. Event Rekap_Bulanan dijalankan setiap hari pada pukul 10:10:00 untuk menginput semua tanggal pada tabel rekap_absensi dengan struktur tabel seperti keterangan di bawah ini :
    
Tabel rekap_absensi
1. id_ra INT(11) Auto Increment (PK)
2. idpegawai VARCHAR(10)
3. periode DATE()
4. created_at DATETIME()

Jika sudah mengeksekusi query event di atas, jangan lupa untuk memastikan status events scheduler adalah ON atau kita bisa menggunakan query seperti di bawah ini :
1
SET GLOBAL event_scheduler = 1;

Untuk status ON :
Untuk status OFF :
1
SET GLOBAL event_scheduler = 0;
Sumber referensi :
Website : https://dev.mysql.com/
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
Praktek : Mohammad Fazlurrahman

Wednesday, September 30, 2020

MYSQL Database

MySql Database


Dalam pemahaman umum MYSQL database adalah perangkat lunak sistem manajemen basis data SQL (Structured Query Language) yang merupakan implementasi dari RDBMS (Relational Database Management System) yang pertama kali dikembangkan oleh seorang programmer asal Swedia yang bernama Michael Monty Widenius pada tahun 1979. MYSQL sendiri adalah pengembangan lanjutan dari sebuah sistem database sederhana yang bernama UNIREG yang mengunakan low-level ISAM.

Monty yang saat itu bekerja di perusahaan yang bernama TcX sedang berusaha membangun aplikasi berbasis website dan berencana menggunakan UNIREG sebagai basisdatanya. Namun UNIREG dianggap kurang mumpuni untuk disandingkan dengan aplikasi website yang sangat dinamis. Merekapun berencana untuk menggabungkan UNIREG dengan mSQL (mini SQL), mSQL sendiri memiliki kekurangan yaitu belum mendukung indexing sehingga performanya kurang maksimal, hal ini yang ingin diperbaiki oleh Monty dengan cara menghubungan mSQL dengan UNIREG agar tercipa sistem database yang lebih baik, namun niatan tersebut ditolak oleh programmer yang mengembangkan mSQL yaitu David Huges.

Akhirnya Monty dan TcX mulai mengembangkan sendiri sistem database baru yang berlandaskan konsep penggabungan UNIREG dan mSQL, hingga pada pada tahun 1995 dirilislah sebuah RDBMS baru yang sekarang kita kenal dengan nama MYSQL. Pada tahun itu juga TcX berubah nama menjadi MYSQL AB (Aktiebolag atau istilah PT di Swedia) dengan pendirinya yaitu Michael Widenius, David Axmark dan Allan Lasrsson.

MYSQL sendiri didistribusikan secara gratis di bawah naungan GPL (General Public Lisence), membuat nama perangkat lunak ini melambung tinggi dan dikenal oleh banyak pengguna di seluruh dunia. Untuk meraih keuntungan MYSQL AB menyediakan jasa atau service bagi perusahaan yang menggunakan MYSQL sebagai basis datanya, di Indonesia sendiri Mysql memiliki banyak komunitas, dan digunakan oleh banyak perusahaan dan kalangan pelajar.

Dukungan terhadap banyak bahasa pemrograman seperti C, C# (C sub), C++, PHP, Java, Phyton dan lainnya membuat Mysql menjadi perangkat lunak yang digandrungi oleh banyak developer terutama web developer seperti PHP. Terbukti banyak layanan hosting yang menggandeng MYSQL sebagai basis datanya karena mudah digunakan dan tangguh, apalagi pengembangan MYSQL yang open source masih terus berlanjut sampai saat ini.

Namun pada tanggal 16 januari 2008 Sun Microsystems, Inc mengumumkan bahwa mereka telah mengakusisi MYSQL yang otomatis menjadikan mereka sebagai salah satu perusahaan yang memiliki banyak paltform open source terbesar di dunia seperti Java, Open Solaris dan tentunya Mysql. Namun selang satu tahun, yaitu pada tanggal 20 April 2009 perusahaan raksasa Oracle melakukan akusisi terhadap Sun Mucrosystems sehingga muncul wacana bahwa Oracle akan menghapus MYSQL karena MYSQL adalah kompetior terbesar bagi Oracle.

Perpindahan hak milik MYSQL kepada Oracle menjadikan MYSQL tidak lagi leluasa untuk dikembangkan oleh developernya, sehingga banyak dari mereka yang memilih keluar dan membuat sistem database baru yang tentunya beersifat open source yang bernama MARIADB, untuk pembahasan MARIDB akan kita ulas di artikel selanjutnya

Friday, July 17, 2020

Definisi Tabel

Definisi Tabel

Data di dalam database akan diklasifikasikan berdasarkan jenisnya dan disimpan di dalam suatu wadah tersendiri yang disebut tabel. Oleh karena itu, banyak yang mendefinisikan database sebagai suatu kumpulan tabel. Tabel itu sendiri adalaha suatu entitas yang tersusun atas kolom dan baris, dalam pengetahuan internasional mengenai database kolom disebut sebagai field dan baris disebut sebagai record.

Berikut adalah contoh gambar yang mempresentasikan sebuah tabel dan penjelasan tentang kolom dan barisnya :


Tabel pada gambar di atas terdiri dari dua buah kolom (field) yaitu : KODE NIK dan NAMA, sedangkan untuk baris (record) sendiri terdapat 4 buah.

Dalam model relasional, sebuah database akan tersusun atas beberapa tabel yang salin berelasi atau memiliki keterkaitan satu sama lain. Oleh karena itu secara sederhana database juga dapat diilustrasikan lewat contoh gambar di bawah ini.


Pada gambar di atas terlihat bahwa database tersusun dari 3 buah tabel, dalam model database relasional, masing-masing tabel tersebit harus memiliki relasi. Relasi antara tabel satu dengan tabel lainnya daapt dibentuk melaui kolom kunci yang terdapat pada tabel yang berkaitan, melalui pendefinisian constraint (primary key dan foreign key) seperti contoh : Tabel siswa memiliki kolom (id_siswa, id_kelas dan nama_siswa) berelasi dengan tabel kelas yang memiliki kolom (id_kelas dan nama kelas). Kolom kunci bagi relasi kedua tabel adalah id_kelas, id_kelas menjadi primary key di tabel kelas dan menjadi foreign key di tabel siswa.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung

Mengenal Constaint, Primary Key dan Foreign Key

Mengenal Constaint, Primary Key dan Foreign Key


Constraint mengizinkan kita untuk menjaga integritas data dan untuk menyaring data yang tersimpan di dalam database, dengan kalimat lain yang lebih sederhana, constraint adalah aturan atau batasan yang mendefinisikan nilai atau data yang tersimpan di dalam database, baik melalui operasi insertupdate, select ataupun delete.

Di dalam SQL standar ANSI, constraint dibedakan menjadi empat, yaitu :

1. Primary key

2. Foreign key

3. Unique

4. Check

Primary Key

Primary key adalah suratu aturan yang berguna untuk memastikan bahwa setiap baris data yang ada di suatu tabel bersifat unik (unik atau berbeda dengan baris data lainnya). Primary key diteriapkan pada kolom-kolom yang dijadikan sebagai pembeda, sebagai contoh pada tabel regional provinsi di bawah ini :


Semua baris pada tabel di atas dibedakan oleh satu kolom yaitu kolom ID PROVINSI yang berarti isi data kolom ID PROVINSI harus unik atau tidak boleh sama dengan baris data lainnya. Pada contoh tabel di atas kolom ID PROVINSI dapat dijadikan sebagai primary key, artinya jika kita menyimpan data yang sama atau sudah ada pada kolom ID PROVINSI, maka secara otomatis sistem database akan menolak karena karakter primary key sendiri yang harus unik dan tidak boleh sama.

Pada titik ini kita dapat memahami bahwa primary key yang terdiri dari beberapa kolom (memungkinkan lebih dari satu kolom), dimana kolom yang kita jadikan primary key harus memiliki nilai yang berbeda dari setiap baris datanya. Adapun beberapa aturan yang dapat mendefiniskan primary key :

- Suatu tabel tidak dapat memiliki lebih dari satu primary key
- Kolom yang dijadikan primary key tidak boleh bertipe data BLOB
- Nilai pada kolom yang didefinisikan sebagai primary key harus bersifat unik dan tidak boleh NULL

Foreign Key

Foreign key berguna untuk mendefinisikan kolom-kolom pada suatu tabel yang nilainya mengacu pada tabel lain. Dengan kata lain, kolom-kolom yang didefinisikan sebagai foreign key nilainya harus diambil dari nilai kolom lain yang berupa primary key atau unique. Penggunaan foreign key bertujuan untuk menciptakan relasi tabel data, contoh nya antara tabel kabupaten dengan tabel provinsi, dimana baris data kabupaten membutuhkan id data provinsi. Berikut contoh di bawah ini untuk memperjelas penjabaran tersebut :


Pada contoh di atas tampak bahwa nilai kolom ID PROVINSI yang terdapat di tabel KABUPATEN mengacu atau berelasi pada nilai kolom ID PROVINSI di tabel PROVINSI. Dapat kita pahami bahwa ID PROVINSI di tabel KABUPATEN disebut foreign key, sedangankan ID PROVINSI pada tabel PROVINSI disebut primary key. Untuk terciptanya sebuah relasi data pada kedua tabel, maka nilai primary key dengan foreign key harus berkaitan.

Perlu diperhatikan bahwa nilai yang diisikan ke dalam kolom foreign key pada suatu tabel harus mengacu atau diambil dari kolom primary key tabel lain. Jika anda mencoba untuk memasukan suatu nilai ke dalam kolom foreign key di mana nilai tersebut tidak terdapat pada tabel yang diacu, maka server database akan otomasi menolak dan memberi pesan error.

Adapun beberapa aturan untuk mendefinisikan foreign key adalah sebagai berikut :

- Suatu tabel dapat memiliki lebih dari satu jaringan foreign key

- Kolom harus mengacu pada kolom primary key atau unique di tabel lain
Foreign key tidak bersifat unik

Pembahasan pada artikel ini mencangkup penjelasan mengenai constraintprimary key dan foreign key, sedangakan unuk pembahasan mengenai penjelasan lainnya (uniquecheck dan indeks) akan dibahas pada artikel selanjutnya.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung

Apa Itu Database

Apa Itu Database


Di tahun 2020 dailymomori.com membuat beberapa sub konten menarik, salah satunya ialah kategori Pengetahuan. Dalam hal ini penulis merangkum materi dari beberapa referensi di bidang terkait yaitu Teknologi Informasi. Mungkin bagi beberapa pembaca sedikit familiar dengan brand software pengolahan data, seperti MS. Access, MySQL, SQL Server, MariaDB dan lain-lain. Sebelum mempelajari itu semua, alangkah baiknya kita sedikit mengenal apa itu database.

Semua berawal di era tahun 1960, dimana penyimpanan dan manipulasi data adalah fokus utama dibutanya aplikasi. Pada awal tahun itu juga pria yang bernama Charles Bachman berhasil mendesain generasi pertama DBMS atau disebut Penyimpanan Data Terintegrasi (Integrated Data Store). Baru pada akhir 1960 IBM selaku perusahaan komersil mengembangkan sistem manajen informasi (Information Management System) berbasi DBMS yang dibentuk dari representasi data pada kerangka kerja yang disebul model hierarki.

Istilah database memiliki banyak definisi. Untuk sebagian kalangan, secara sederhana database diartikan sebagai kumpulan data (buku, nomor telepon, kartunama, daftar pegawai dan lain-lain). Ada juga yang menyebut database dalam istilah yang lebih formal dan tegas. Database sendiri dapat kita definisakan sebagai suatu kumpulan tabel yang berisi data, dimana data tersebut dapat saling terhubung satu sama lain di dalam sebuah sistem dan memungkinkan untuk dapat melakukan manipulasi data, penyajian data dan aktivitas data seperti : create, read, updated dan delete (CRUD).



Ilustrasi database

Selain berisi data, database juga berisi metadata. Metadata adalah data yang menjelaskan tentang struktur dari data itu sendiri. Sebagai contoh anda dapat memperoleh informasi nama-nama kolom dan tipe data yang ada pada sebuah tabel. Data nama kolom dan tipe yang ditampilkan tersebut disebut sebagai metadata. Sebagai contoh data siswa yang memiliki kolom bernama nama_siswa dengan tipe data varchar dengan panjang data 50.

Database memiliki beberapa model yang akan dibahas pada artikel-artikel selanjutnya, diantaranya adalah model relasional. Dalam model relasional, model-model yang terdapat dalam suatu database idealnya harus saling berelasi. Tujual dari relasi di dalam database adalah untuk mempermudah pengolahan dan penyajian data, misalkan terdapat data siswa, data kelas dan data sekolah. Karena ketiganya saling berkaitan maka harus memungkinkan terjadinya relasi, contoh : Siswa bernama Andi adalah murid kelas 5 di SD N 1 Malang.

Dari contoh di atas kita dapat melihat ada sebuah relasi yang terjadi antara 3 data, yaitu data siswa (Andi) yang berelasi dengan data kelas (Kelas 5), dan data kelas yang berelasi dengan data sekolah (SD N 1 Malang). Relasi seperti contoh tersebut akan memudahkan kita untuk mengolah data, terlebih jika data yang ada di dalam database sudah banyak.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung