BASIS DATA MY SQL
TEORI DASAR DATABASE MYSQL
A. Alasan Menggunakan MySQL
1.
MySQL sebagai
RDBMS
Bagi mahasiswa maupun web developer, kalau bicara database,
kemungkinan besar akan membicarakan MySQL. Tapi, kenapa harus MySQL? Bagaimana
dengan Oracle? Jawaban singkat, padat dan tepat adalah: gratis dan user
friendly. MySQL adalah salah satu aplikasi RDBMS (Relational Database Management System).Pengertian sederhana
RDBMS adalah aplikasi database yang menggunakan prinsip relasional. Apa itu prinsip relasional? Kita akan
membicarakannya dalam tutorial berikutnya. MySQL juga bukan satu-satunya RDBMS,
list lengkapnya ada di wikipedia. Diantaranya yang
banyak dikenal: Oracle, Sybase,
Microsoft Access, Microsoft SQL Server, dan PostgreSQL. MySQL bersifat
gratis dan open source. Artinya setiap orang boleh menggunakan dan
mengembangkan aplikasi ini. Namun walaupun gratis, MySQL di support oleh ribuan
programmer dari seluruh dunia, dan merupakan sebuah aplikasi RDBMS yang
lengkap, cepat, dan reliabel.
Berikut
beberapa keunggulan MySQL dibandingkan dengan RDBMS lainnya:
a. Speed
Sebuah
studi dari eWeek di February 2002 yang membandingkan performa kecepatan MySQL
dengan RDBMS lainnya, seperti Microsoft SQL Server 2000, IBM DB2, Oracle 9i
dan Sybase :
“MySQL
has the best overall performance and that MySQL scalability matches Oracle …
MySQL had the highest throughput, even exceeding the numbers generated by
Oracle.”
Yang
terjemahan bebasnya, MySQL memiliki kecepatan yang lebih dibandingkan pesaing
yang berbayar. Bagi anda ingin membaca paper tersebut, tersedia di situs MySQL
b.
Reliability
Biasanya
sesuatu yang gratis susah diandalkan, bahkan banyak bug dan sering hang. Tidak
demikian dengan MySQL, karena sifatnya yang open source, setiap orang dapat
berkontribusi memeriksa bug dan melakukan test case untuk berbagai skenario
yang memerlukan sistem 24 jam online, multi-user dan data ratusan GB. Hasilnya,
MySQL merupakan RDBMS yang reliabel namun memiliki performa diatas rata-rata.
c.
Skalability
MySQL
dapat memproses data yang sangat besar dan kompleks, tanpa ada penurunan
performa yang berarti, juga mendukung sistem multi-prosesor. MySQL juga dipakai
oleh perusahaan-perusahaan besar di dunia, seperti Epson, New York Times,
Wikipedia, Google, Facebook, bahkan NASA.
d.
User Friendly
Instalasi
dan mempelajari MySQL cukup mudah dan tidak dipusingkan dengan banyak
settingan. Cukup download aplikasi MySQL
dan install, kita dapat menggunakan MySQL dalam waktu kurang dari 5 menit
(dengan asumsi tidak mati lampu).
e.
Portability
and Standard Compliance
Database
MySQL dapat dengan mudah berpindah dari satu sistem ke sistem lainnya. Misalkan
dari sistem Windows ke Linux. Aplikasi MySQL juga dapat berjalan di sistem Linux (RedHat, SuSE, Mandrake,
Debian), Embedded Linux (MontaVista,
LynuxWorks BlueCat),Unix (Solaris,
HP-UX, AIX), BSD (Mac OS X, FreeBSD), Windows (Windows 2000, Windows NT) dan RTOS (QNX).
f.
Multiuser Support
Dengan
menerapkan arsitektur client-server.
Ribuan pengguna dapat mengakses database MySQL dalam waktu yang bersamaan.
g.
Internationalization
Atau
dalam bahasa sederhananya, mendukung beragam bahasa. Termasuk bahasa bagi yang
merasa berwajah oriental.
h.
Wide
Application Support
Biasanya
database RDBMS tidak digunakan sendirian, namun ditemani dengan aplikasi atau
bahasa pemograman lainnya untuk menyediakan interface, seperti C, C++, C#,
Java, Delphi, Visual Basic, Perl Python dan PHP. Kesemua itu di dukung
oleh API (Application Programming Interface) oleh MySQL.
i.
Open Source
Code
Kitapun bisa (jika
mampu dan mengerti), mengembangkan MySQL dengan mempelajari kode programmnya.
MySQL di kembangkan dengan bahasa C and C++. Bahkan sudah terdapat berbagai
variasi rasa RDBMS baru yang dikembangkan dari code MySQL, diantaranya: Drizzle,
MariaDB, Percona Server dan OurDelta.
B. Sejarah dan Masa Depan MySQL
1. Kisah tentang UNIREG dan Tcx
Cerita bermula pada tahun 1979, ketika Michael Widenius (a.k.a. Monty),
seorang programmer asal Swedia,
mengembangkan sebuah sistem database sederhana yang dinamakan UNIREG
(tidak ada hubungannya dengan UNIKOM, UNIMED, ataupun UNILEVER). UNIREG ini
menggunakan koneksi low-level
ISAM database engine dengan indexing (baca : sistem database
sederhana yang mendukung index).Monty bekerja pada perusahaan bernama TcX di
Swedia. TcX pada tahun 1994 mulai mengembangkan aplikasi berbasis web, dan
berencana menggunakan UNIREG
sebagai sistem databasenya. Namun malang bagi Monty, UNIREG dianggagap
tidak cocok untuk database
yang dinamis seperti web.
TcX
mencoba mencari alternatif sistem database lainnya, salah satunya adalah mSQL (miniSQL),
sebuah RDBMS
yang tidak terlalu mahal dan hampir open source, maksudnya jika anda membeli
aplikasi ini, anda juga akan mendapatkan source code nya juga. Namun mSQL versi
1 ini juga memiliki kekurangan, yaitu tidak mendukung indexing, sehingga
performanya tidak terlalu bagus.
Dengan
hasutan petinggi-petinggi TcX, Monty mencoba menghubungi David Hughes
(programmer yang mengembangkan mSQL) untuk menanyakan apakah ia tertarik
mengembangkan sebuah konektor di mSQL yang dapat dihubungkan dengan UNIREG ISAM
sehingga mendukung indexing. Namun saat itu Hughes menolak, dengan alasan
sedang mengembangkan teknologi indexing yang independen untuk mSQL 2.
Dikarenakan
penolakan David Hughes, TcX (dan juga Monty) akhirnya memutuskan untuk
merancang dan mengembangkan sendiri konsep sistem database baru. Sistem ini
merupakan gabungan dari UNIREG dan mSQL (yang source codenya dapat bebas
digunakan). Sehingga pada May 1995, sebuah RDBMS baru, yang dinamakan MySQL
dirilis.
David Axmark dari Detron
HB, rekanan TcX
mengusulkan agar MySQL di ‘jual’ dengan model bisnis baru. Ia mengusulkan agar
MySQL dikembangkan dan dirilis dengan gratis. Pendapatan perusahaan selanjutnya
di dapat dari menjual jasa “support” untuk perusahaan yang ingin
mengimplementasikan MySQL. Konsep bisnis yang juga diterapkan
perusahaan-perusahaan Open Source lainnya.
Asal Penamaan MySQL
Asal
penamaan MySQL sendiri agak unik. Monty berkata :
“It is not perfectly clear where the name MySQL
derives from. TcX’s base directory and a large amount of their libraries and
tools have had the prefix ‘My’ for well over ten years. However, my daughter
(some years younger) is also named My. So which of the two gave its name to
MySQL is still a mystery.”
Berbagai
sumber menyatakan, bahkan juga di situs MySQL sendiri bahwa “My” dari
MySQL berasal dari nama anak perempuan Monty. Namun seperti kutipan diatas,
Monty pun mengakui bahwa selama ia di TcX, library dan aplikasi yang
dikembangkan perusahaan itupun juga banyak dimulai dengan awalan “My”.
Logo
lumba-lumba dalam lambang MySQL di namai Sakila, yang berasal dari sebuah kontest
“Name the Doplhin” yang diadakan MySQL AB.
Nama Sakila ini diajukan oleh Ambrose Twebaze, seorang programmer open
source dari Swaziland, Afrika. ‘Sakila‘
memiliki akar dari bahasa Siswati, bahasa yang digunakan di Swaziland.
Kembali
ke kisah MySQL, Pada tahun 1995 itu juga, TcX berubah nama menjadi MySQL AB, dengan Michael Widenius, David Axmark dan Allan
Larsson sebagai pendirinya. Titel “AB” dibelakang MySQL, adalah
singkatan dari “Aktiebolag”, istilah PT (Perseroan
Terbatas) bagi perusahaan Swedia.
MySQL AB menjadi perusahaan di belakang MySQL,
menyediakan jasa dan bertanggung jawab dalam mengembangkan, memasarkan, dan
menyediakan dukungan untuk MySQL. MySQL sendiri dirilis dengan “dual licencing“,
atau dengan dua lisensi, gratis dan berbayar.
Lisensi
pertama di rilis dibawah GNU GPL
(General Public License – atau dikenal juga dengan Gak Pakai Lisensi).
Lisensi GPL ini membebaskan anda menggunakan MySQL tanpa membayar loyalti
kepada MySQL AB, dengan beberapa syarat tertentu. Misalnya, jika anda
menggunakan MySQL dalam aplikasi yang anda buat, aplikasi tersebut juga harus
bersifat gratis dan berada di bawah lisensi GPL.
Lisensi
kedua di peruntukkan bagi perusahaan-perusahaan komersil, maupun pengembang
software yang berniat menjual aplikasinya, dan menggunakan MySQL sebagai
databasenya. Untuk keperluan ini, anda diharuskan membeli lisensi komersial
dari MySQL AB. Lebih lanjut tentang permasalahan seputar lisensi MySQL, dapat
mengunjungi situs MySQL.
MySQL
AB juga memegang hak copyright dari
source code MySQL dan pemilik hak merk dagang “MySQL”. Dengan kata lain, walaupun
kita memiliki source code MySQL, namun sistem database maupun aplikasi yang
kita buat tidak boleh menggunakan merk “MySQL” tanpa membayar loyalti kepada
pihak MySQL AB. Hal ini pula yang menjelaskan mengapa salah satu aplikasi
administasi MySQL berbasis web PhpMyAdmin, tidak menggunakan kata “MySQL” pada
nama programnya.
Sang Penguasa pasar database mulai mendekat
Pada
tahun-tahun berikutnya, MySQL AB semakin berkembang. Di tahun 2002, MySQL AB
telah memiliki kantor pusat baru di Cupertino,
California, Amerika Serikat, selain di negara asalanya, Swedia. Perkiraan
pengguna aktif setidaknya sudah mencapai 3 juta pengguna.
Tahun
2005 MySQL AB merilis MySQL
5. MySQL versi 5 ini menargetkan pengguna-pengguna perusahaan,
dengan meyediakan fasilitas-fasilitas tambahan baru, seperti stored procedures, triggers,
views, cursors, distributed transactions, dan federated storage
engines. Dengan model bisnis dan aplikasi yang sudah lengkap, MySQL
mulai menjadi ancaman bagi raksasa industri database lainnya, terutama
Microsoft SQL Server dan Oracle.
Mårten Mickos, CEO MySQL, menkonfirmasi
bahwa di tahun 2006,
Oracle pernah berniat membeli MySQL, namun Larry Ellison, CEO
Oracle saat itu, berkomentar :
“We’ve spoken to them, in fact we’ve spoken to
almost everyone. Are we interested? It’s a tiny company. I think the revenues
from MySQL are between $30 million and $40 million. Oracle’s revenue next year
is $15 billion.”
Sebuah
pernyataan yang ditutup-tutupi, karena pada tahun itu juga Oracle telah membeli
Sleepycat,
sebuah perusahaan yang mengembangkan Berkeley
DB transactional storage engine bagi MySQL, bahkan sebelumnya
Oracle juga telah membeli Innobase,
perusahaan di balik InnoDB
storage engine MySQL.
Akuisisi MySQL AB oleh Sun Micosystem
Tahun
2008 merupakan akhir bagi MySQL AB sebagai perusahaan yang berdiri sendiri,
ketika Sun
Microsystems membeli MySQL AB seharga US $1 Milliar.
Selayaknya proses akuisisi, seluruh manajemen MySQL AB, menjadi bagian dari
ribuan karyawan SUN lainnya, termasuk Michael Widenius (Monty) dan David Axmark
(2 orang pendiri MySQL AB). Namun tak berapa lama kemudian, keduanya mulai
merasa tidak nyaman dan sering mengkritisi kebijakan SUN, dan keluar dari
perusahaan itu. Mårten Mickos, CEO MySQL AB yang selama ini memimpin MySQL juga
meninggalkan SUN tahun 2009. Sehingga MySQL praktis telah kehilangan pemimpin
bisnis dan pendiri yang telah membuat MySQL sesukses sekarang. Dan akhirnya
April 2009, raksasa di industri database, Oracle, mulai mendekati Sun
Microsystems untuk mengakuisisinya.
Gerakan “Save MySQL“
Kabar
akuisisi ini seolah-olah menjadi kiamat untuk MySQL. Sebuah gerakan “Save MySQL” didirikan untuk menolak
akuisisi ini. Gerakan ini di prakarsai oleh Monty
Widenius sendiri (pendiri MySQL), dan didukung oleh sekitar 50.000
lebih pengembang serta programmer dari seluruh dunia. Gerakan ini mendesak
Komisi Ekonomi Eropa untuk menolak proses akuisisi SUN Microsystem oleh Oracle. Berbagai
pemimpin organisasi Free Software juga ikut dalam gerakan ini.
Akuisisi Sun Microsystem (dan juga MySQL) oleh Oracle Corporation
Gerakan
ini setidaknya berhasil membujuk komisi anti monopoli eropa, untuk menyetujui
proses akuisisi dengan syarat Oracle meneruskan proyek MySQL setidaknya sampai
2015. Namun banyak pengamat mengatakan bahwa berbagai tekanan juga di lakukan
oleh pihak Oracle agar akuisisi ini berlangsung mulus, sehingga Oracle Corporation secara
resmi mengakuisisi Sun Microsystem (dan juga MySQL) seharga US $ 7,4 Triliun
pada 27 Januari 2010.
Masa Depan MySQL
Akhir
kisah, setidaknya kita masih bisa menggunakan MySQL sampai dengan 2015, sesuai
dengan janji Oracle. Tetapi, apakah kedepannya MySQL masih dirilis dengan
gratis, atau dijadikan salah satu produk berbayar oleh Oracle? kita hanya bisa
berharap.
Namun
Monty Widenius, diam-diam telah memulai sebuah proyek baru, MariaDB, yang
memiliki kode dasar yang sama dengan MySQL
5.1. Apakah MariaDB merupakan “the next generation” dari RDBMS
gratis penerus MySQL? atau MariaDB nantinya akan tenggelam diantara RDBMS
lainnya yang juga banyak bermunculan? hanya waktu yang akan menjawab.
Kisah
ini setidaknya juga menjadi gambaran, bagaimana perusahaan raksasa, seperti
Oracle, menggunakan kakuatan kapitalisnya untuk “mencaplok” saingan-saingan
untuk tumbuh lebih besar lagi
C. Pengertian Database, Database Model dan RDBMS
1.
Pengertian
Database
Banyak pendapat jika menyangkut tentang
pengertian database, berbagai textbook dan pendapat para expert di dunia
database. Namun agar tidak tertalu pusing, marilah kita ambil saja pendapat Wikipedia:
“A database is an organized collection
of data”. Dengan terjemahan bebasnya, Database adalah kumpulan data yang terorganisir.
Tidak peduli apakah data ini tersimpan
dalam bentuk kertas atau file komputer, selama data ini tersusun dalam aturan
dan untuk keperluan tertentu, dapat disebut sebagai database. Namun biasanya
jika kita menyebut database, hal ini merujuk kepada kumpulan data yang disimpan
secara elektronik dalam komputer.
Pengertian
Database Model
Sekali lagi, mari kita kutip Wikipedia : A database model is the theoretical
foundation of a database and fundamentally determines in which manner data can
be stored, organized, and manipulated in a database system. Artian
bebasnya, database model adalah
teori seputar bagaimana data itu akan disimpan, disusun, dan dimanipulasi dalam
sebuah sistem database.
Dari awal konsep database mulai banyak
digunakan (sekitar tahun 1960an – di amerika sana), berbagai teori dikemukakan
tentang bagaimana cara menyajikan data agar mudah digunakan. Mudah digunakan
disini mencakup: membuat, membaca, memperbaharui, dan menghapus data, atau
stilah kerennya : CRUD (Create,
Read, Update and Delete).
Mulailah berkembang berbagai database
model, dari Flat model, Hierarchical model, Network model, hingga Relational model.
Flat model adalah istilah lain dari tabel sederhana seperti di microsoft excel,
tanpa aturan dan cara penulisan tertentu. Dalam Hierarchical model, data
disusun seperti pohon terbalik, sehingga data terorganisasi dari atas ke bawah.
Model database ini digunakan pada sistem database awal, seperti Information
Management System (IMS) oleh IBM (1966). Network database model merupakan
pengembangan dari Hierarchical model. Pembahasan lebih lanjut tentang Database
Model, dapat dibaca di wikipedia-database
model.
Database
Model : Relation
Konsep Relational Database Model
diajukan pertama kali oleh peneliti IBM, Dr. Edgar F. Codd pada
tahun 1969, dan merupakan database model yang paling banyak digunakan saat ini.
Dr. Codd pada awalnya mencari cara baru
untuk menangani data dalam jumlah besar. Namun karena keterbatasan pada
Hierarchical dan Network model yang umum digunakan saat itu, ia menerapkan
prinsip matematis dalam menyusun data-data tersebut. Dan karena memang memiliki
keahlian di bidang matematika, Dr.Codd berusaha mencari cara untuk meyelesaikan
permasalahan yang sering timbul dalam database model saat itu, seperti
redudansi data, hubungan antar data, dan ketergantungan kepada urutan di media
penyimpanan.
Dr.Codd mengajukan ide tentang
relational model ini dalam sebuah paper berjudul “A Relational Model
of Data for Large Shared Databanks” pada Juni 1970.
Relational Database model berasal dari 2 cabang ilmu matematika : set theory dan first-order predicate logic.
Sebuah relational database menyimpan
data dalam ‘relasi’, atau yang
disebut juga tabel. Setiap tabel terdiri dari tuple atau record dan attribut atau field. Urutan penyusunan dalam media
penyimpanan fisik tidak berpengaruh dalam model ini, dan setiap record di dalam
tabel diidentifikasi dengan sebuah field unik.
Relational Database Model inilah yang
paling populer dan banyak diimplementasi dalam berbagai aplikasi database saat
ini, termasuk Oracle dan MySQL. Aplikasi database untuk
relational model, dikenal juga dengan Relational Database Management Systems (RDBMS).
RDBMS :
Relational Database Management Systems
Relational
Database Management Systems (RDBMS) adalah software/aplikasi yang menggunakan
relational database model sebagai dasarnya. Sejak 1970an, RDBMS
sudah banyak digunakan oleh berbagai vendor, dan dalam berbagai sistem
hardware. Dua RDBMS pertama adalah System
R, yang dikembangkan oleh IBM, dan INGRES (Interactive Graphics Retrieval System) yang
dikembangkan oleh University of California di Berkeley. Keduanya pada awal
1970an.
Setelah keunggulan Relational Database
banyak dikenal, berbagai perusahaan mulai berlalih dari hierarchical dan
network database model ke relational database model. Pada tahun 1980an, Oracle
RDBMS lahir, dan diikuti oleh pesaingnya saat itu, IBM DB2 RDBMS.
Jika pada tahun 1980an RDBMS hanya
dapat digunakan dalam sistem mainframe perusahaan besar, namun saat ini dengan
semakin majunya perkembangan teknologi di sisi hardware, PC-based RDBMS sudah
banyak tersedia. MySQL RDBMS dapat diinstall di komputer/laptop biasa.
Client-Server
RDBMS Arsitektur
Kebutuhan akan database yang dapat
diakses bersama-sama oleh banyak pengguna mulai muncul di sekitar awal 1990an.
Sebuah database terpusat, namun dapat diakses dari tiap komputer yang
berjauhan, membuat banyak RDBMS dikembangkan dengan arsitektur
Client-Server.
Dalam arsitektur Client-Server, sebuah
komputer bertindak sebagai Database
Server pusat. Server inilah yang akan melayani segala permintaan dari
komputer (Client) yang
membutuhkan akses ke database. Namun fisik database itu sendiri juga tidak
harus di dalam Server, bisa saja berada di tempat lain, namun terhubung ke
Database Server untuk memprosesnya.
MySQL juga menggunakan arsitektur
Client-Server. Namun nantinya dalam tutorial ini, kita akan menjalankan
aplikasi server dan client di komputer yang sama. Namun pada dasarnya, jika
kita menjalankan MySQL Server di komputer, setiap komputer yang terhubung
kedalam jaringan dapat mengaksesnya dengan menggunakan MySQL Client. Lebih
lanjut tentang hal ini akan kita pelajari dalam tutorial selanjutnya.
Setelah
Relational Database Model : Object-Oriented Database Model
Walaupun RDBMS sudah populer, dan
digunakan pada hampir semua keperluan seperti bisnis, inventory, bank, dll,
namun untuk kasus-kasus tertentu, Relational Database Model dianggap masih
kurang mendukung, khususnya untuk aplikasi baru seperti sistem informasi
geografis, dan multimedia. Sehingga mulailah dikembangkan berbagai model
database lainnya, seperti Object-Oriented Database dan Object-Relational Database.
Konsep Database Objek Model ini berasal
dari dunia programming: OOP (Object Oriented Programming), dimana setiap data dikaitkan
dengan objek dari data tersebut. ODBMS (Object Database Management System) juga
sudah banyak beredar, seperti Versant
ODBMS oleh Versant Corporation, UniData dari IBM, dan VelocityDB.
Namun konsep Object Oriented Database
ini belum terlalu populer digunakan, dan mungkin saja nantinya hanya sebagai
pelengkap dari relational database, yang untuk kasus per kasus memerlukan
sistem database khusus.
Demikian
pembahasan singkat kita tentang pengertian database, database model dan
perkembangan RDBMS. Dalam tutorial selanjutnya, kita akan bahas lebih mendalam konsep Teori
Relational Database,
sebelum mempraktekkannya dengan MySQL.
D. Pengertian Relational Database
Pengertian Database dalam Relational Database
Dalam
relational database model, sebuah database adalah kumpulan relasi yang saling terhubung
satu sama lainnya. Relasi adalah istilah dalam relational database,
tapi kita lebih familiar jika menyebutnya sebagai tabel.
Selayaknya tabel yang memiliki kolom dan baris, dalam 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 dalam tutorial ini, namun jika anda menemui istilah relation, attribut
dan tuple, itu hanya penamaan lain dari tabel, kolom, dan baris.
Candidate Key (Kunci Kandidat)
Database
dalam relational database dapat diserhanakan sebagai sekumpulan tabel yang saling
terhubung. Setiap baris dari dalam tabel setidaknya harus memiliki
sebuah kolom yang unik.
Unik disini maksudnya tidak boleh sama. Contohnya, dalam tabel 4.1 : tabel
data_mahasiswa, kolom NIM (Nomor Induk Mahasiswa) akan menjadi kandidat yang
bagus, karena tidak mungkin ada 2 mahasiswa yang memiliki NIM yang sama. NIM
disini disebut juga dengan Candidate
Key (Kunci Kandidat). Candidate
Key adalah
satu atau beberapa kolom dalam tabel yang bisa mengidentifikasi tiap baris dari
tabel tersebut.
Nomor
KTP juga merupakan candidate key yang bagus, setidaknya setiap orang akan
memiliki Nomor KTP yang berbeda-beda. Namun dalam beberapa kasus, nomor KTP
tidak selalu ada, karena bisa saja seseorang belum memiliki KTP karena sesuatu
dan lain hal. Beberapa karakteristik Candidate key : unik (tidak boleh berulang),
tidak boleh memiliki nilai null (kosong), nilai dari candidate key akan sangat
jarang berubah.
Primary Key (Kunci Utama)
Dalam
sebuah tabel, akan terdapat beberapa candidate key, namun hanya ada 1 Primary key (kunci utama). Primary key adalah salah satu candidate
key yang kita nobatkan sebagai kolom unik untuk identifikasi baris dalam tabel.
Kolom ini tidak boleh berulang, dan tidak boleh kosong (null). Dari tabel
data_mahasiswa, NIM dapat kita tetapkan sebagai primary key.
Foreign Key (Kunci Tamu)
Dalam sebuah database,
biasanya akan terdapat beberapa tabel. Tabel-tabel ini dapat dihubungkan satu
dengan yang lainnya dengan kolom yang merupakan bagian dari tabel lain. Foreign Key (Kunci Tamu) adalah Primary key dari
tabel lainnya yang terdapat di tabel saat ini. Di dalam contoh
tabel 4.2 : Tabel data_mahasiswa dapat terlihat bahwa NIM adalah primary key
dari tabel data_mahasiswa, dan kode_jurusan adalah primary key pada tabel_jurusan.
Kedua tabel tersebut dihubungkan oleh kolom kode jurusan.
Dalam
tabel_mahasiswa, kolom NIM adalah primary
key, dan kolom kode jurusan adalah foreign key. Kenapa tabel tersebut
harus dipisah? Jawabanya adalah agar tidak ada data yang redundan (ganda). Redundansi data
adalah salah satu kelemahan dari desain database yang kita buat. 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. Pada dasarnya Referential
Integrity adalah
penerapan aturan bahwa untuk setiap foreign key yang terdapat pada suatu tabel,
harus ada nilainya di tabel asal kolom tersebut. Dalam contoh kita,
pada tabel 4.2 dan 4.3 setiap kode_jurusan dalam tabel data_mahasiswa harus ada
nilainya dalam tabel kode_jurusan. Di dalam tabel data_mahasiswa kita tidak
bisa memasukkan nilai 20, karena di tabel kode_jurusan, kode jurusan 20 belum
diinput. Dan jika kita ingin menghapus suatu jurusan dari tabel_jurusan, semua
mahasiswa harus terlebih dahulu sudah tidak ada yang memiliki kode jurusan
tersebut.
Index
Index dalam database adalah
sebuah struktur data yang diimplementasikan oleh RDBMS untuk mempercepat proses
pembacaan data.
Index lebih kepada penerapan algoritma dari masing-masing aplikasi database,
dan diterapkan ke dalam kolom dari tabel yang kita inginkan. Mirip Index yang
ada di belakang buku, index seolah-olah daftar cepat untuk mencari sesuatu oleh
RDBMS. Kita dapat mendeklarikan kolom mana saja yang akan diindex.
Untuk MySQL, kolom yang ditetapkan sebagai
primary key akan otomatis di-index.
Tetapi dalam satu tabel, bisa saja terdapat beberapa kolom yang di index.
Pertanyaanya, jika index digunakan untuk mempercepat proses pembacaan, kenapa
tidak semua kolom saja kita index? Jawabannya, karena index sendiri juga
memiliki kelemahan.
Ketika
data baru ditambahkan atau terdapat data yang akan dirubah, index yang
tersimpan untuk tabel tersebut harus dibuat 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) adalah proses penyusunan
kolom dan tabel untuk meminimalkan redudansi data (data yang berulang). Normalisasi biasanya akan
membagi tabel besar menjadi beberapa tabel kecil yang saling terhubung. Hal ini
dilakukan agar mudah dalam mengatur, dan mengorganisasi data yang ada.
Contohnya,
untuk tabel data_mahasiswa, jika terjadi perubahan nama jurusan, misalnya dari
Ilmu Komputer menjadi Teknik Informatika, maka kita harus merubah satu-satu
tiap mahasiswa. Namun jika 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 memiliki kode_jurusan 14,
adalah mahasiswa Teknik Informatika.
Normalisasi
database
memiliki beberapa tahapan. Dari wikipedia, normalisasi database setidaknya
memiliki 9 tahapan. Pada setiap tahapan, ada syarat yang harus dipenuhi, sampai
sebuah tabel tidak lagi memiliki kolom yang redundant. Kita tidak harus
mengikuti semua tahap, biasanya hanya dibutuhkan 3 tahapan normalisasi untuk
membuat sebuah desain database sederhana. Proses normalisasi database tidak
akan kita bahas disini, namun setidaknya kita mengetahui bahwa normalisasi database
adalah proses untuk mendesain database agar terorganisir.
Entity Relationship Diagram (ERD)
Entity Relationship Diagram adalah diagram untuk menggambarkan
desain database yang akan dibuat. Didalam ERD akan terlihat
semua tabel yang akan dirancang, primary key masing-masing tabel, serta foreign
key, dan kolom-kolom apa saja yang nantinya tersedia. ERD memiliki berbagai
versi, baik yang berbentuk balon, maupun tabel. ERD inilah sebagai blueprint
dari database yang akan dirancang.
E. Pengertian SQL (Structured Query Language)
Pengertian Structured Query Language (SQL)
SQL (Structured Query Language) adalah bahasa pemograman
khusus yang digunakan untuk memanajemen data dalam RDBMS. SQL biasanya berupa
perintah sederhana yang berisi instruksi-instruksi untuk manipulasi data.
Perintah SQL ini sering juga disingkat dengan sebutan ‘query‘.
Sejarah SQL
Bersamaan
dengan paper Dr. Edgar F. Codd pada tahun 1969 tentang Teori Database Relational, ia pun mengajukan sebuah
bahasa yang disebut DSL/Alpha untuk memanajemen data
dalam relational database. Berdasarkan ide Dr.Codd ini, beberapa saat setelah
itu IBM mencoba merancang bahasa prototype sederhana DSL/Alpha yang
disebut SQUARE.
Pada
tahun 1970, team yang beranggotakan peneliti IBM Donald D. Chamberlin dan
Raymond F. Boyce, mengembangkan SQUARE lebih
lanjut menjadi SEQUEL
(Structured English Query Language). SEQUEL digunakan
untuk mengoperasikan prototipe RDBMS pertama IBM, System R.
Dikemudian hari, SEQUEL berubah nama menjadi SQL karena
permasalahan merk dagang (trademark)
dengan sebuah perusahaan pesawat di inggris yang terlebih dahulu telah memakai
nama SEQUEL.
Pada akhir 1970an,
perusahaan Relational
Software, Inc. (sekarang Oracle Corporation)
melihat potensi bahasa SQL dan mengembangkan sendiri versi SQL untuk RDBMS
mereka. Oracle
V2 (versi 2) yang dirilis Juni 1979 adalah RDBMS komersial
pertama yang mengimplementasikan SQL.
Dengan
kemudahan yang ditawarkan, SQL mulai diimplementasikan oleh berbagai RDBMS
dengan versi SQL mereka masing-masing. Namun hal ini menimbulkan permasalahan
karena perbedaan penerapan SQL dari satu aplikasi dengan aplikasi database
lainnya yang tidak seragam.Sehingga pada tahun 1986, badan standar
amerika, ANSI (American
National Standards Institute) merancang
sebuah standar untuk SQL. Satu tahun setelahnya, ISO (International
Organization for Standardization) juga
mengeluarkan standar untuk SQL. Versi terakhir standar SQL dirilis pada 2011,
yang dinamakan SQL 2011. Dengan standar ini diharapkan ada keseragaman SQL
antar aplikasi RDBMS.
Akan
tetapi walaupun sudah ada standar tentang SQL, banyak perusahaan RDBMS yang
menambahkan ‘fitur’
SQL selain standar yang ada. MySQL juga memiliki SQL yang tidak standar, yang
tidak ada pada Oracle, begitu juga sebaliknya. Namun setidaknya bahasa SQL
hampir sama untuk perintah-perintah dasar antar RDBMS. Perintah SQL untuk membuat
tabel misalnya, dapat digunakan baik di Oracle maupun MySQL.
Jenis-jenis perintah SQL
Perintah
atau instruksi SQL dapat dikelompokkan berdasarkan jenis dan fungsinya.
Terdapat 3 jenis perintah dasar SQL : Data
Definition Language, Data Manipulation Language dan Data Control Language.
Data Definition Language (DDL) adalah jenis instruksi SQL
yang berkaitan dengan pembuatan struktur tabel maupun database.
Termasuk diantaranya : CREATE, DROP, ALTER, dan RENAME.
Data Manipulation Language (DML) adalah jenis instruksi SQL
yang berkaitan dengan data yang ada dalam tabel, tentang bagaiman menginput,
menghapus, memperbaharui serta membaca data yang tersimpan di dalam database.
Contoh perintah SQL untuk DML : SELECT, INSERT, DELETE, dan UPDATE.
Data Control Language (DCL) adalah jenis instruksi SQL
yang berkaitan dengan manajemen hak akses dan pengguna (user) yang dapat
mengakses database maupun tabel. Termasuk diantaranya : GRANT dan
REVOKE.
Selain
ketiga jenis perintah SQL, terdapat juga 2 jenis SQL tambahan : Transaction Control
Language, dan Programmatic
SQL.
Transaction Control Language (TCL) adalah perintah SQL untuk
proses transaksi. Proses transaksi ini digunakan untuk perintah
yang lebih dari 1, namun harus berjalan semua, atau tidak sama sekali. Misalnya
untuk aplikasi critical seperti transfer uang dalam sistem database perbankan.
Setidaknya akan ada 2 perintah, yaitu mengurangi uang nasabah A, dan menambah
uang nasabah B. Namun jika terjadi kesalahan sistem, kedua transaksi ini harus
dibatalkan. Tidak bisa hanya satu perintah saja. Termasuk ke dalam TCL adalah
perintah : COMMIT, ROLLCABK, dan SET TRANSACTION.
Programmatic SQL berkaitan dengan sub
program (stored procedure) maupun penjelasan mengenai struktur database. Contoh
perintah seperti : DECLARE, EXPLAIN, PREPARE, dan DESCRIBE
No comments: