Basis data adalah penyimpanan data yang terstruktur (database). Seharusnya, kamu juga sudah familier dengan istilah itu, tetapi mungkin belum tahu kenapa kita membutuhkannya. Nah, simak analogi di bawah ini untuk lebih mengerti tentang basis data.
Pernah tidak kamu menyimpan pakaian di lemari dengan rapi? Tentu pernah ‘kan, ya. Menyimpan pakaian dengan rapi, nantinya akan mempermudah kita ketika ingin memakainya kembali.
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangBayangkan jika kamu menyimpan pakaian seperti ini dan ada acara penting 10 menit lagi.
Jangan sampai kamu terlambat datang ke acara penting karena tidak bisa menemukan celana keren berwarna hitam yang sudah kamu beli dengan promo tahun ini.
Nah, penyimpanan yang rapi tidak hanya bermanfaat di dunia nyata. Di dunia software pun sangat bermanfaat terutama untuk menyimpan data.
Tiap harinya, tentu berjuta-juta data yang dikirimkan lewat internet saat ini. Oleh karena itulah data menjadi komoditas mahal yang tentu perlu dikelola dengan baik.
Nah, kali ini kita akan membahas salah satu konsep untuk penyimpanan data yang terstruktur, yakni menyimpan data di dalam relational database.
Apa itu Relational Database
Dalam relational database, kumpulan data disimpan dalam suatu tabular (tabel). Lalu, dalam suatu tabel terdapat baris & kolom (row & column). Misalnya, kita memiliki kumpulan data mahasiswa suatu universitas, jika disimpan ke dalam tabel seperti ini bentuknya.
Pada tabel di atas, tiap barisnya mewakili banyaknya data mahasiswa. Bisa dilihat, ada tiga baris yang berarti kita memiliki tiga data. Adapun kolom mendefinisikan banyak nilainya. Bisa dilihat ada tiga kolom, yakni nim (nomor induk mahasiswa), nama, dan no telepon.
Jika kita ingin membuat aplikasi yang ada hubungannya dengan suatu universitas, tentu data mahasiswa saja tidaklah cukup. Ada banyak data-data lainnya, misalnya, dosen, fakultas, mata kuliah, semester, dan yang lainnya.
Nah, pertanyaannya, apakah data tersebut dimasukkan dalam satu tabel yang sama dengan mahasiswa? Jika kamu pernah memakai aplikasi seperti Excel maka bisa saja kamu menjawab, “Iya, dimasukkan ke dalam satu tabel, harusnya bisa dan gak ada masalah.”
Dalam relational database, jikalau kita berurusan dengan banyak data, menyimpannya dalam satu tabel adalah hal yang sangat dilarang. Menyimpan banyak data dalam satu tabel akan menyebabkan problem yang bernama duplikasi data. Perlu kamu ketahui pula bahwa salah satu manfaat dari relational database adalah untuk mengurangi adanya duplikasi data. Oleh karena itulah, kita tidak boleh hanya menggunakan satu tabel.
Coba perhatikan implementasi data mahasiswa dan jurusan dalam satu tabel di bawah ini.
Tabel di atas ada duplikasi data di dalamnya, yang manakah? Mari kita perjelas data mana saja yang terjadi duplikat.
Solusi yang ditawarkan oleh relational database adalah dengan memecah kumpulan data tersebut menjadi beberapa tabel. Perhatikan gambar berikut, Bisa dilihat bahwa sudah tidak ada duplikasi data lagi.
Dari tadi, kita berbicara duplikasi data dan seakan penting banget, sengeri itukah sebenarnya?
Perlu diketahui bahwa data itu sifatnya dinamis atau berubah-ubah, contohnya adalah data alamat. Si penulis termasuk orang yang sering berpindah alamat karena urusan keluarga dan wajar kalau data di KTP juga ikut berubah. Bahkan nama pun bisa berubah, meskipun kejadian seperti ini terbilang jarang.
Dengan fakta data yang berubah-ubah, tentu data yang disimpan dalam database juga harus diubah (update) juga. Jika kita memiliki 1000 data yang duplikat, perubahan data juga akan terjadi pada 1000 data tersebut. Bayangkan jika duplikasi datamu sampai jutaan. Seharusnya proses update cukup satu detik, tapi karena banyak duplikasi, jadinya memakan waktu sepuluh detik.
Pertanyaannya, mengapa kecepatan dalam pemrosesan database itu penting? Penting karena ini berkaitan dengan performa. Jika kita memiliki aplikasi yang butuh waktu sangat lama hanya untuk melakukan suatu aktivitas, pengguna pun akan malas menggunakannya, alhasil aplikasi akan ditinggalkan.
Primary Key & Foreign Key
Ada dua hal yang belum sempat dibahas pada gambar tadi, yakni Primary Key (PK) & Foreign Key (FK). Mari kita bahas.
Primary key pada dasarnya adalah nilai unik yang mewakili suatu data. Contoh dari primary key adalah nomor KTP. Nomor KTP setiap warga Indonesia pastilah berbeda, anak kembar sekalipun pasti memiliki nomor KTP yang berbeda.
Jika kita lihat kembali pada contoh data mahasiswa dan jurusan, nim adalah primary key dari tabel mahasiswa dan kode jurusan adalah primary key dari tabel jurusan.
Lalu, apa itu FK (foreign key)? Dengan FK-lah suatu tabel mampu memiliki relasi dengan tabel lainnya. Pada dasarnya, FK adalah nilai yang mereferensikan data dari tabel lain.
Pada tabel mahasiswa bisa dilihat bahwa ada FK kode jurusan di sana, ini menandakan bahwa data mahasiswa memiliki relasi dengan data jurusan. Bisa diartikan, “Karena mahasiswa dengan nim ‘mhs001’ memiliki kode jurusan ‘j01’ maka mahasiswa dengan nim ‘mhs001’ adalah mahasiswa jurusan Teknik Informatika”.
Nah, dengan adanya primary key dan foreign key, dapat terjadi relasi antar tabel dengan baik. Tergantung dari relasinya, bisa jadi satu tabel memiliki lebih dari satu FK. Akan tetapi satu tabel pasti hanya memiliki satu primary key.
Ngomong-ngomong tentang relasi tabel, sebenarnya data mahasiswa dan jurusan adalah relasi one to many, yang berarti satu jurusan bisa memiliki banyak mahasiswa. Masih ada relasi lainnya seperti one to one dan many to many, tetapi itu tidak akan kita bahas sekarang, mungkin di lain kesempatan, ya.
SQL structured query language
Setelah sedikit membahas tentang relational database, kurang rasanya kalau tidak membahas SQL (Structured Query Language), yakni bahasa kueri untuk mengoperasikan database. Menurut KBBI, kueri adalah sekumpulan instruksi khusus untuk mengekstraksi data dari pangkalan data.
SQL pada dasarnya adalah bahasa terstruktur yang fungsinya untuk mengoperasikan database. Semua operasi yang ada di relational database bisa dilakukan dengan menggunakan SQL, mulai dari proses pembuatan tabel hingga update data.
Operasi dalam database menggunakan SQL biasa disebut dengan CRUD, yakni Create Read Update Delete. Mari kita bahas satu per satu.
Create
Operasi create adalah proses penambahan data dalam suatu tabel. Operasi create biasanya dilakukan dengan perintah insert.
Misalnya, kita ingin menambahkan data baru ke tabel mahasiswa, maka kita bisa menuliskan kueri seperti ini.
1 |
insert into mahasiswa values (“mhs001”,”Ahmad Imaduddin”,”Batik Kumeli No 50”) |
Untuk mengerti maksud dari operasi insert di atas sangatlah mudah. Bisa dilihat bahwa penulisan kuerinya sangat eksplisit, coba kita telaah satu per satu.
- insert into mahasiswa: artinya tambahkan data baru ke tabel yang bernama mahasiswa.
- values (“10001”,”Ahmad Imaduddin”,”Batik Kumeli No 50 Bandung”): artinya data yang dimasukkan dalam tabel Mahasiswa adalah mhs001, Ahmad Imaduddin, dan Batik Kumeli No 50, sesuai urutan pada kolom tabel mahasiswa yakni nim, nama, dan alamat.
Mudah bukan operasi insert? Selanjutnya, mari bahas operasi read.
Read
Read adalah operasi untuk mengambil data yang ada di dalam database. Tergantung dari kebutuhannya, operasi ini bisa digunakan untuk mengambil satu data, lebih dari satu, atau bahkan semua datanya.
Kita semua tahu untuk mencari rumah seseorang harus tahu alamatnya terlebih dahulu, nah, itu berlaku juga untuk operasi read. Biasanya kita sudah siapkan terlebih dahulu parameternya.
Perhatikan tabel mahasiswa ini.
Misal, kita ingin mencari tahu informasi lengkap mahasiswa dengan nomor induk mahasiswa mhs001, maka kita bisa menuliskan kueri select di bawah ini.
1 |
select nim, nama, alamat from mahasiswa where nim = “mhs001” |
Nantinya, database akan mengembalikan data seperti ini.
Jika kita ingin mengambil semua data di tabel mahasiswa, kita menuliskan seperti ini tanpa parameter apa pun.
1 |
select * from mahasiswa |
Bintang (*) artinya tampilkan semua kolomnya.
Hasilnya akan muncul tabel seperti ini.
Mudah, bukan? Lanjut ke operasi update, yuk.
Update
Operasi update adalah kueri untuk mengubah nilai dari suatu data. Operasi ini juga bisa dilakukan untuk meng-update satu data atau banyak data tergantung dari kebutuhannya.
Misalnya, kita ingin mengganti alamat mahasiswa dengan nim “mhs001” ke alamat baru, yakni “Jalan Ninjaku No 1 Jakarta”, kita bisa menuliskan kueri seperti di bawah ini.
1 |
update mahasiswa set alamat = “Jalan Ninjaku No 1 Jakarta” where nim = ‘mhs001’ |
Lalu, semisal kita ingin mengubah lebih dari satu nilai, maka kita menuliskan seperti di bawah ini.
1 |
update mahasiswa set nama = "Ahmad Imaduddin Updated", alamat = "Jalan Ninjaku No 1 Jakarta" where nim = "mhs001"; |
Ingat bahwa data sifatnya adalah dinamis. Operasi update-lah kunci utamanya.
Delete
Terakhir, operasi delete yang digunakan untuk menghapus suatu data. Sama halnya dengan operasi yang lain, operasi delete bisa untuk satu atau banyak data tergantung dari kebutuhannya.
Misalnya, kita ingin menghapus data dengan nim “mhs001”, maka kita bisa menuliskan kueri seperti di bawah ini.
1 |
delete mahasiswa where nim = “mhs001” |
Ketika kueri di atas dieksekusi, datanya akan terhapus dengan sempurna.
Sebenarnya, kueri delete sangatlah berisiko. Sebab data sangatlah penting, proses penghapusan data biasanya tidak dilakukan dalam suatu sistem. Biasanya yang dilakukan adalah dengan mengimplementasikan safe delete. Apa itu? Mari kita bahas di lain kesempatan.
Okay, kita sudah membahas sedikit tentang analogi penyimpanan data, relational database, dan juga Structured Query Language. Semoga blog ini membantu kamu yang sedang mulai belajar terkait database. Tetap semangat dan sampai bertemu di blog lainnya.