Header Ads

test

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:

Powered by Blogger.