Tutorial Belajar MySQL Part 4: Pengertian Relational Database

Posted on

Kalau di panduan sebelumnya, kita membahas mengenai pengertian database secara umum, di Tutorial Belajar MySQL: Pengertian Relational Database ini kita akan secara khusus membahas mengenai relational database, melingkupi beberapa istilah seperti primary key, candidate key, foreign key, referential integrity, dan index.


Pengertian Database di Relational Database

Di relational database model, sebuah database yakni kumpulan relasi yang saling terhubung satu sama lainnya. Relasi yakni istilah di relational database, tapi kita lebih familiar seandainya menyebutnya selaku tabel. Selayaknya tabel yang mempunyai kolom dan baris, di relational database, kolom (column) disebut attribute, sedangkan baris (row) disebut tuple. Hal ini hanya sekedar penamaan, dan agar lebih gampang, kita hanya akan menggunakan istilah tabel, kolom dan baris di panduan ini, namun seandainya kamu menemui istilah relation, attribut dan tuple, itu hanya penamaan lain dari tabel, kolom, dan baris.


Candidate Key (Kunci Kandidat)

Database di relational database dapat di sederhanakan selaku sekumpulan tabel yang saling terhubung. Setiap baris dari di tabel setidaknya mesti mempunyai sebuah kolom yang unik. Unik disini maksudnya tak boleh sama. Contohnya, di tabel 4.1 : tabel data_mahasiswa, kolom NIM (Nomor Induk Mahasiswa) akan menjadi kandidat yang bagus, karena tak mungkin ada 2 mahasiswa yang mempunyai NIM yang sama. NIM disini disebut pun dengan Candidate Key (Kunci Kandidat)Candidate Key yakni satu atau beberapa kolom di tabel yang dapat mengidentifikasi tiap baris dari tabel tersebut.

NIM Nama Tanggal Lahir No KTP Tempat Lahir Kode Jurusan
101401030 Alex Ferdinand 29 Juni 1992 1373022906870002 Padang Ilmu Komputer
120502045 Joko Suprianto 4 Maret 1994 3173020403940004 Jakarta Managemen
110901033 Susi Sulastri 17 September 1993 1273024709930001 Medan Kedokteran
100301021 Suparman 23 Februari 1992 3173022302920006 Jakarta Teknik Elektro
121401074 Tania Mutia 5 Oktober 1993 1373024510930006 Padang Ilmu Komputer
110501023 Aprilia Susanti 7 Oktober 1993 1693024710930002 Pekanbaru Managemen

Tabel 4.1 : Tabel data_mahasiswa

Nomor KTP pun yaitu candidate key yang bagus, setidaknya setiap orang akan mempunyai Nomor KTP yang berbeda-beda. Namun di beberapa kasus, nomor KTP tak selalu ada, karena dapat saja seseorang belum mempunyai KTP karena sesuatu dan lain hal. Beberapa karakteristik Candidate key : unik (tak boleh berulang), tak boleh mempunyai nilai null (kosong), nilai dari candidate key akan betul-betul jarang berubah.


Primary Key (Kunci Utama)

Di sebuah tabel, akan terdapat beberapa candidate key, namun hanya ada 1 Primary key (kunci utama)Primary key yakni diantara candidate key yang kita nobatkan selaku kolom unik untuk identifikasi baris di tabel. Kolom ini tak boleh berulang, dan tak boleh kosong (null). Dari tabel data_mahasiswa, NIM dapat kita tetapkan selaku primary key.


Foreign Key (Kunci Tamu)

Di sebuah database, biasanya akan terdapat beberapa tabel. Tabel-tabel ini dapat dihubungkan satu dengan yang lainnya dengan kolom yang yaitu bagian dari tabel lain. Foreign Key (Kunci Tamu) yakni Primary key dari tabel lainnya yang terdapat di tabel dikala ini. Di di contoh tabel 4.2 : Tabel data_mahasiswa dapat terlihat bahwa NIM yakni primary key dari tabel data_mahasiswa, dan kode_jurusan yakni primary key di tabel_jurusan. Kedua tabel tersebut dihubungkan oleh kolom kode jurusan.


NIM Nama Tanggal Lahir No KTP Tempat Lahir Kode Jurusan
101401030 Alex Ferdinand 29 Juni 1992 1373022906870002 Padang 14
120502045 Joko Suprianto 4 Maret 1994 3173020403940004 Jakarta 05
110901033 Susi Sulastri 17 September 1993 1273024709930001 Medan 09
100301021 Suparman 23 Februari 1992 3173022302920006 Jakarta 03
121401074 Tania Mutia 5 Oktober 1993 1373024510930006 Padang 14
110501023 Aprilia Susanti 7 Oktober 1993 1693024710930002 Pekanbaru 05

Tabel 4.2 : Tabel data_mahasiswa

Kode Jurusan Jurusan Domisili
01 Teknik Mesin Jl. Teknik No.01
02 Teknik Arsitektur Jl. Teknik No.02
03 Teknik Elektro Jl. Teknik No.03
04 Akuntansi Jl. Ekonomi No. 01
05 Managemen Jl. Ekonomi No. 02
06 Ekonomi Pembangunan Jl. Ekonomi No. 03
07 Medis Masyarakat Jl. Medis No.01
08 Psikologi Jl. Medis No.02
09 Kedokteran Jl. Medis No.03
10 Matematika Jl. MIPA No. 01
11 Kimia Jl. MIPA No. 02
12 Fisika Jl. MIPA No. 03
13 Farmasi Jl. MIPA No. 04
14 Ilmu Komputer Jl. MIPA No. 05

Tabel 4.3 : Tabel kode_jurusan

Di tabel_mahasiswa, kolom NIM yakni primary key, dan kolom kode jurusan yakni foreign key. Kenapa tabel tersebut mesti dipisah? Jawabannya yakni agar tak ada data yang redundan (ganda). Redundansi data yakni diantara kelemahan dari desain database yang kita bikin. Seandainya dari contoh tabel, nama Jurusan Ilmu Komputer berubah menjadi Teknik Informatika, kita hanya tinggal merubah tabel_jurusan.


Referential Integrity

Referential Integrity berkaitan erat dengan foreign key. Di dasarnya Referential Integrity yakni penerapan aturan bahwa untuk setiap foreign key yang terdapat di suatu tabel, mesti ada nilainya di tabel asal kolom tersebut. Di contoh kita, di tabel 4.2 dan 4.3 setiap kode_jurusan di tabel data_mahasiswa mesti ada nilainya di tabel kode_jurusan. Di di tabel data_mahasiswa kita tak dapat memasukkan nilai 20, karena di tabel kode_jurusan, kode jurusan 20 belum diinput. Dan seandainya kita ingin menghapus suatu jurusan dari tabel_jurusan, semua mahasiswa mesti terlebih dahulu telah tak ada yang mempunyai kode jurusan tersebut.


Index

Index di database yakni sebuah struktur data yang diimplementasikan oleh RDBMS untuk mempercepat proses pembacaan data. Index lebih kepada penerapan algoritma dari masing-masing program database, dan digunakan ke di kolom dari tabel yang kita inginkan. Mirip Index yang terdapat di belakang buku, index seolah-olah daftar cepat untuk mencari sesuatu oleh RDBMS. Kita dapat mendeklarasikan kolom mana saja yang akan di index.

Untuk MySQL, kolom yang ditetapkan selaku primary key akan otomatis di-index. Tetapi di satu tabel, dapat saja terdapat beberapa kolom yang di index. Pertanyaannya, seandainya index digunakan untuk mempercepat proses pembacaan, kenapa tak semua kolom saja kita index? Jawabannya, karena index sendiri pun mempunyai kelemahan.

Ketika data baru ditambahkan atau terdapat data yang akan dirubah, index yang tersimpan untuk tabel tersebut mesti dikerjakan ulang, sehingga memperlama proses penambahan data. Namun untuk tabel yang jarang bertambah, index menawarkan perfoma yang cepat untuk pembacaan data.


Normalisasi Database

Normalisasi database (Database normalization) yakni proses penyusunan kolom dan tabel untuk meminimalkan redundansi data (data yang berulang). Normalisasi biasanya akan membagi tabel besar menjadi beberapa tabel kecil yang saling terhubung. Hal ini dilakukan agar gampang di mengatur, dan mengorganisasi data yang terdapat.

Contohnya, untuk tabel data_mahasiswa, seandainya terjadi perubahan nama jurusan, misalnya dari Ilmu Komputer menjadi Teknik Informatika, karenanya kita mesti merubah satu-satu  tiap mahasiswa. Namun seandainya di bagi menjadi 2 tabel, kita hanya tinggal merubah baris no urut 14 dari tabel  kode_jurusan menjadi Teknik Informatika. Dan otomatis setiap mahasiswa yang mempunyai kode_jurusan 14, yakni mahasiswa Teknik Informatika.

Normalisasi database mempunyai beberapa tahapan. Dari wikipedia, normalisasi database setidaknya mempunyai 9 tahapan. Di setiap tahapan, ada syarat yang mesti dipenuhi, hingga sebuah tabel tak lagi mempunyai kolom yang redundant. Kita tak mesti mengikuti semua tahap, biasanya hanya dibutuhkan 3 tahapan normalisasi untuk membangun sebuah desain database sederhana. Proses normalisasi database tak akan kita bahas disini, namun setidaknya kita mengetahui bahwa normalisasi database yakni proses untuk mendesain database agar terorganisir.


Entity Relationship Diagram (ERD)

Entity Relationship Diagram yakni diagram untuk menggambarkan desain database yang akan dikerjakan. Di di ERD akan terlihat semua tabel yang akan dirancang, primary key masing-masing tabel, serta foreign key, dan kolom-kolom apa saja yang nantinya terdapat. ERD mempunyai pelbagai versi, bagus yang berbentuk balon, maupun tabel. ERD inilah selaku blueprint dari database yang akan dirancang.


Demikianlah beberapa istilah yang sering di temui untuk pembahasan mengenai relational database, yang dapat digunakan selaku basic untuk mempelajari MySQL dan meningkatkan penggunaannya. Berikutnya kita akan membahas mengenai SQL (Structured Query Language), bahasa wajib yang dimengerti bersama untuk mempelajari MySQL.

Sumber:

  1. http://en.wikipedia.org/wiki/Relational_database
  2. http://en.wikipedia.org/wiki/Database_normalization
  3. Michael J. Hernandez : Database Design for Mere Mortals, Addison Wesley, 2003

  4. Clare Churcher: Beginning Database Design From Novice to Professional, Apress,  2007


eBook MySQL Uncover Duniailkom

MySQL dan MariaDB telah menjadi standar database untuk web programming. Duniailkom telah menyusun eBook MySQL Uncover yang membahas MySQL/MariaDB dengan lebih detail dan lebih komplit, mulai dari query basic hingga View, Stored Procedure dan Trigger. Penjelasan lebih lanjut dapat ke eBook MySQL Uncover Duniailkom.


Sumber https://www.duniailkom.com/