PRAKTIKUM DESAIN BASIS DATA
Pembuatan dan Manajemen Tabel
Dibimbing oleh :
Aziz Musthafa, S.Kom
Oleh :
Achsin Muflichuddin 11650036
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAN NEGERI MAULANA MALIK IBRAHIM
MALANG
2014
2.1 Bahasan dan Sasaran
2.1.1 Bahasan
- Pembuatan tabel
- Pengelolaan tabel
2.1.2 Sasaran
1. Mahasiswa dapat memahami cara pembuatan maupun penghapusan tabel
2. Mahasiswa dapat memahami cara mengedit struktur dari tabel
3. Mahasiswa mampu memanipulasi tabel sesuai dengan kebutuhan
2.2 Dasar Teori
SQL adalah Bahasa standar dalam basisdata yang digunakan untuk melakukan manipulasi data (merupakan bahasa pemrograman/query standart yang digunakan untuk mengakses basis data relasional). Standarisasi bahasa ini dilakukan oleh ANSI (American National Standarts Institution) tahun 86, 89, 92 dan 99, dimana tiap perubahan tahun dilakukan peningkatan kemampuan SQL. Pada perkembangan saat ini standar yang paling banyak digunakan adalah standar ANSI 92. Hampir semua DBMS menggunakan SQL sebagai fasilitas untuk memanipulasi data seperti Oracle, SQLServer, MySQL, PostgreSQL, Foxpro dsb.
Meskipun awalnya hanya merupakan bahasa untuk memanipulai data, pada perkembangannya SQL juga dapat digunakan untuk melakukan definisi data mauppun control (security) terhadap data. Sehingga bahasa query ini dibagi menjadi 3 bagian :
1. DDL (Data Definition Language)
- Membuat database (CREATE DATABASE)
- Menghapus database (DROP CATABASE)
- Manciptakan tabel (CREATE TABLE)
- Menghapus tabel (DROP TABLE)
- Mengubah tabel (ALTER TABLE)
2. DML (Data Manipulation Language)
- Menambah record (INSERT INTO)
- Melihat isi tabel (SELECT)
- Mengganti isi record (UPDATE)
- Menghapus record (DELETE)
3. DCL (Data Control Language)
Kelompok perintah yang dipakai untuk melakukan otorisasi terhadap pengaksesan data dan pengalokasian ruang. Misal suatu data bisa diaksess si A, tetapi tidak bisa dakses oleh si B
- Membuka hak akses (GRANT)
- Menutup hak akses (REVOKE)
- COMMIT
- ROLLBACK
TIPE DATA
- CHAR atau CHARACTER : Menyatakan deretan karakter (huruf, bil, tanda baca, karakter khusus (contoh: enter)) atau string
- Biasanya lebarnya ttt / tetap, maka biasanya dipakai sebagai kunci primer (NIP, NIM) tetap tidak sebagai kunci primer juga bisa (Jurusan, lebarnya 2 digit: MI, TI)
- Cara penulisannya diapit tanda petik bisa tunggal '_' atau ganda "_"
- VARCHAR : Menyatakan string dengan panjang tidak tetap (nama, alamat, dll)
- Lebih boros penyimpanan di memori
- Cara penulisannya diapit tanda petik bisa tunggal '_' atau ganda "_"
- DECIMAL atau DEC bilangan pecahan, tetap formatnya lebih jelas, contoh : 5,2 (-,-) sehingga tampilan dilayar lebih rapi dibanding float dan double (tergantung nilainya)
- INTEGER atau INT : Menyatakan tipe data bilangan bulat, defaultnya max 11 karakter
- Bisa dipakai untuk operasi matematis
- Tidak operasi matematis juga bisa (contoh : tinggi badan)
- SMALLINT : Menyatakan tipe data bilangan bulat yang jangkauannya lebih kecil daripada INTEGER
- FLOAT : Tipe data bilangan real atau pecahan, lebar dibelakang koma 17 karakter
- DOUBLE : Tipe data bilangan real/pecahan dengan presisi/teliti lebih tinggi daripada FLOAT, lebar dibelakang koma sampai 30 digit
- DATE : Menyatakan tanggal (tahun_bulan_tanggal)
- TIME : Menyatakan waktu, contoh : jam check in, check out dihotel
- TIMESTAMP : Menyatakan tanggal dan waktu
- BLOP : Menyatakan data biner yang berguna untuk menyimpan gambar atau suara
- AUTO-INCREMENT : Menyatakan data yang akan dinaikkan sebesar satu secara otomatis
- BOOLEAN : Menyatakan tipe nalar yaitu benar atau salah
- ENUM : Mendefinisikan data yang mempunyai kemungkinan nilai tertentu
- KONSTANTA : Menyatakan nilai yang tetap, contoh :
- Konstanta Numerik : 145, -145, 27.5 (tanda pecahan pada suatu angka berupa titik)
- Konstanta String : 'Jl. Solo km.14, Kalasan, DIY' (ditulis dengan awalan dan akhiran petik tunggal)
- Didalam konstanta string, tanda \ diikuti dengan karakter tertentu mempunyai makna khusus
- OPERATOR :
- * = Perkalian
- / = Pembagian
- % = Sisa pembagian (hanya digunakan untuk bilangan bulat)
- + = Penjumlahan
- - = Pengurangan
Tabel adalah Daftar yang berisi ikhtisar sejumlah data-data informasi yang biasanya berupa kata-kata maupun bilangan yang tersusun dengan garis pembatas. Dalam suatu tabel sendiri terdiri dari baris (row) serta kolom (column), dimana jumlah dan nama kolom harus didefinisikan terlebih dahulu di awal. Sedangkan baris merupakan sebuah variabel yang dapat dihapus dan diisi kapanpun, sehingga jumlahnya selalu berubah sesuai dengan jumlah data didalamnya. Setiap kolom dalam tabel mempunyai tipe data, yang digunakan untuk membatasi jenis data yang bisa dimasukkan, sehingga akan mempermudah dalam menggunakannya dan melakukan pengelolaan selanjutnya. Disarankan pada saat akan membuat tabel, sebaiknya membuat aturan khusus dalam penentuan tabel-tabel yang akan dibuat dan memberikan nama kolom maupun tipe datanya.
2.2.1 Membuat Tabel
Primary key adalah Atribut (field) yang dipilih untuk menentukan struktur storage pada organisasi file multy key, adapun key lainnya disebut dengan Secondary key. Atau dengan kata lain, Primary key merupakan suatu nilai dalam basis data yang digunakan untuk mengidentifikasi suatu baris dalam tabel, nilai dari primary key adalah unik. Tabel harus memiliki primary key, artinya dalam pembuatan tabel haruslah terdapat sekelompok kolom (field) yang menyebabkan setiap baris (record) dalam tabel tersebut tidak sama dan juga digunakan untuk mempercepat dalam pencarian. Deklarasi primary key tidak boleh kosong (null), jadi kita harus mendeklarasikan sebagai not null. Namun secara default PostgreSQL menganggapnya sebagai nullable (boleh kosong), jika waktu pengisian tidak menyebutkan null atau not null.
Struktur query yang digunakan untuk membuat tabel dengan dua kolom :
create table namatabel (namakolom tipedata keterangan, namakolom tipedata keterangan);
Catatan :
\d : Untuk melihat struktur tabel yang telah dibuat
\z : Untuk melihat semua tabel
Struktur query yang digunakan untuk menghapus tabel :
drop table namatabel;
2.2.2 Manipulasi Tabel
Dalam pembuatan tabel sebaiknya direncanakan field dan tipe datanya untuk meminimalisir kesalahan saat tabel telah berisi data. Namun meskipun begitu bukan berarti tabel tidak bisa dirubah dan dihapus. PostgreSQL telah menyediakan utilitas untuk manipulasi ini dan perlu diingat hal ini bukan manipulasi data melainkan manipulasi struktur tabelnya.
Struktur query yang digunakan untuk menghapus kolom :
alter table namatabel drop column"namakolom";
Struktur query yang digunakan untuk menambah kolom :
alter table namatabel add column"namakolom"tipedata;
Struktur query yang digunakan untuk mengubah nama tabel :
alter table namatabelasal rename to namatabelbaru;
Struktur query yang digunakan untuk mengubah nama kolom :
alter table namatabel rename column"namakolomasal" to namakolombaru;
Struktur query yang digunakan untuk menambahkan primary key pada tabel :
alter table namatabel add primary key (namakolom);
2.2.3 Temporary Tabel
Temporary tabel sifatnya hanya sementara artinya akan aktif hanya ketika kita sedang berada atau login ke database namun ketika kita logout dari psql database maka secara otomatis temporary tabel akan terhapus .
Struktur query yang digunakan membuat tabel dengan dua kolom :
create temporary table namatabel (namakolom tipedata keterangan, namakolom tipedata keterangan);
2.2.4 GRANT and REVOKE
Pada saat membuat tabel pada user tertentu maka hanya user tersebut dan user postgres yang dapat mengakses tabel itu. Namun jika kita ingin agar tabel yang telah dibuat pada user kita dapat diakses oleh user tertentu atau semua user yang berada pada PostgreSQL, maka semua itu dapat dilakukan dengan perintah GRANT. Jika ingin mencabut hak akses kita bisa menggunakan perintah REVOKE.
Struktur query penggunaan GRANT untuk semua hak akses :
grant all on table namatabel to namauser;
Struktur query penggunaan REVOKE untuk semua hak akses :
revoke all on table namatabel from namauser;
Struktur query untuk menghapus salah satu hak akses, misalnya UPDATE :
revoke update on table namatabel from namauser;
Struktur query untuk memberi salahsatu hak akses, misalnya DELETE :
grant delete on table namatabel to namauser;
2.2.5 TURUNAN (INHERITANCE)
Inheritance dipergunakan jika kita ingin membuat sebuah tabel baru yang berhubungan dengan tabel yang ada, dengan kata lain turunan tabel pertama. Struktur penggunaan query INHERITANCE :
create temporary table namatabel (namakolom tipedata keterangan, namakolom tipedata keterangan) inherits (namatabelinduk);
Contoh :
create table pariwisata (wisata character varying(20)) inherits (kabupaten);
2.3 Hasil Percobaan
Setelah dalam percobaan sebelumnya memulai instalasi software serta membuat user dan database, pada percobaan kali ini kita membuat dan mengelola tabel. Adapun langkah-langkahnya sebagai berikut :
1. Membuat tabel beserta fieldnya
2. Menghapus kolom "alamat_idn" pada tabel pegawai
3. Menambahkan kolom "pekerjaan_idn" dengan tipe data "varchar" pada tabel pegawai
4, Merubah nama tabel "pegawai" menjadi "pekerjaNIM" serta merubah nama kolom "pekerjaan_idn" menjadi "alamat_idn"
5. Memberikan "primary key" pada tabel "pekerjaNIM" dan merubah tipe data pada kolom "alamat_idn" menjadi "text"
6. Menghapus tabel "pekerjaNIM"
7. Membuat temporary table
8. Menghapus dan menambahkan hak akses tabel tertentu pada salah satu user
9. Menghapus hak akses "select" tabel tertentu pada salah satu user
10. Membuat temporary tabel turunan dari tabel nomer 1
2.5 Evaluasi perbandingan DBMS MySQL dengan PostgreSQL
- Pengembangan : Pengembangan MySQL diatur secara sentral oleh perusahaan komersial di Swedia bernama MySQL AB (sebelumnya TcX AB). Perusahaan ini memperoleh pemasukan utamanya dari menjual layanan support dan konsultasi MySQL. PostgreSQL dikembangkan secara lebih terdesentralisasi dan merakyat, namun tetap diatur oleh sebuah kelompok online bernama PostgreSQL Development Group. MySQL dirilis dalam satuan yang lebih sering (sebulan bisa lebih dari satu kali), sementara PostgreSQL sekitar 4–6 bulan sekali.
- Arsitektur dan Portabilitas : MySQL memiliki arsitektur multithreading, sementara PostgreSQL multiproses (forking). Ini berarti PostgreSQL potensial memiliki stabilitas yang lebih tinggi, sebab satu proses anak yang mati tidak akan menyebabkan seluruh daemon mati—meskipun pada kenyataannya, dulu ini sering terjadi. Di sisi lain, arsitektur dengan forking ini sulit diterapkan ke Windows, sebab Windows amat thread-oriented. Karena itulah, baru MySQL yang memiliki port natif ke Windows. PostgreSQL sendiri saat ini bisa dijalankan di Windows, tapi melalui lapisan emulasi Cygwin.
- Lisensi : Lisensi PostgreSQL lebih liberal. Inilah sebabnya ada banyak produk closed-source dan komersial yang bisa dikembangkan dari source code PostgreSQL. MySQL, karena dilisensi di bawah GPL, tidak boleh dimodifikasi menghasilkan produk turunan yang closed-source.
- Kecepatan : Soal kecepatan ini relatif dan kadang juga jadi isu sensitif. Baik kedua pihak, maupun pihak ketiga, pernah menerbitkan benchmark yang lalu ditepis atau dicibir karena tidak objektif. Pada dasarnya perbandingan kecepatan keduanya seperti ini: MySQL terkenal cepat dalam melakukan query sederhana. Dengan kata lain, dapat memroses lebih banyak SQL per satuan waktu. Tapi dalam kondisi load tinggi (jumlah koneksi simultan besar), PostgreSQL sering mengalahkan MySQL untuk query dengan klausa JOIN yang kompleks, seperti dialami Tim Perdue saat mencoba kedua database untuk diimplementasikan di SourceForge.net. Penyebab utamanya adalah karena MySQL menggunakan locking level table dalam, sehingga koneksi yang lain tidak bisa membaca table ybs sama sekali. Locking inilah juga sebabnya mengapa pada banyak benchmark, MySQL menunjukkan penurunan kinerja yang cukup drastis untuk kondisi jumlah klien simultan tinggi. PostgreSQL mendukung locking di level yang lebih rendah, yaitu row. Table handler baru di MySQL, InnoDB, juga mendukung row level locking. Benchmark InnoDB pada jumlah koneksi tinggi menunjukkan hasil yang cukup menjanjikan (www.innodb.com/bench.html). Masalah locking tabel bisa diakali dengan membelah-belah tabel, agar satu kelompok row dapat dilock tanpa mengganggu kelompok row lain. Bahkan ada pengguna MySQL yang membelah sebuah tabel besar berisi jutaan record menjadi ribuan tabel kecil-kecil.
- Stabilitas : Keduanya sudah bisa dibilang cukup hingga amat stabil. Tapi perlu diingat bahwa database manapun, bahkan Oracle sesekali dapat menyebabkan kerusakan data. Karena itu backup/history periodik dan incremental tetap diperlukan.
- Fungsi Built-In : MySQL terkenal kaya fungsi built-in, seperti modifikasi string (REPLACE, RIGHT, LTRIM, LCASE), matematika (LOG, LOG10), tanggal, dsb. Dalam hal ini MySQL lebih unggul.
- Interface : Keduanya sudah amat solid. Mulai dari API C/C++, driver database Perl/Python/PHP/Tcl, ODBC, JDBC telah didukung. Anda tidak akan kesulitan menggunakan database ini dari berbagai sistem dan bahasa pemrograman. MySQL juga mendukung OLEDB dan memiliki versi embedded untuk dilink bersama aplikasi buatan Anda sendiri.
- Tipe Data : PostgreSQL lebih kaya dalam hal tipe data (terutama yang domain-specific seperti tipe data geometris dan MONEY), tapi MySQL sudah mendukung semua tipe data umum. Di PostgreSQL sebelum 7.1, masih ada keterbatasan yang cukup menyesakkan yaitu ukuran data BLOB maksimum adalah 8–32KB. Sejak 7.1, PostgreSQL juga dapat menyimpan data BLOB besar. CHAR dan VARCHAR di PostgreSQL dapat menampung hingga 8 juta karakter (bandingkan dengan MySQL yang hanya 255).
- Modifikasi Tabel : MySQL lebih fleksibel dalam ALTER TABLE. PostgreSQL sendiri terbatas hanya bisa melakukan penambahan kolom, penggantian nama kolom, dan penggantian nama tabel. MySQL mendukung penambahan/penghapusan kolom, penggantian definisi kolom, dsb.
- Fitur Unik : MySQL memiliki arsitektur yang memungkinkan sebuah database terdiri dari beberapa jenis tabel, misalnya: yang transaksional dan tidak, yang berbasis di memori atau di disk, yang terkompresi dan yang read-only. MySQL mendukung protokol terkompresi yang bisa menghemat bandwidth dan mengurangi latensi. PostgreSQL memiliki tipe data array, pewarisan tabel dan tipe data, serta sistem rule. PostgreSQL memiliki tipe-tipe data “antik.” Di PostgreSQL Anda dapat menulis stored procedure (atau procedural language, istilah di PostgreSQL) dalam beberapa bahasa: PL/Perl, PL/Tcl, atau PL/PgSQL. PostgreSQL mendukung set/himpunan.
2.6 Kesimpulan dan Penutup
2.6.1 Kesimpulan
Berdasarkan hasil percobaan pada praktikum kali ini kita mulai mempelajari tentang tabel, bagaimana bentuk dan cara membuat serta mengelola tabel hingga tabel tersebut sesuai dengan apa yang kita inginkan. Dalam materi ini diajarkan berbagai macam struktur query mulai dari membuat tabel awal hingga proses menambah, mengurangi dan membuat tabel turunan dari tabel sebelumnya. Juga dijelaskan dan dipraktekkan tentang bagaimana memanupulasi tabel apakah akan menghapus atau menambah kolom baru dalam suatu tabel. serta mengenal apa saja jenis dari tipe data yang digunakan dalam DBMS PostgreSQL.
2.6.2 Penutup
Demikian laporan praktikum ini dibuat, yang membahas tentang pembuatan serta pengelolaan tabel pada PostgreSQL. Penulis sadar jika dalam penyusunan serta penulisan laporan ini masih banyak kekurangan dan kelemahan, dan berharap kepada pembaca dalam mempelajari bahasan diatas agar sekreatif mungkin untuk mencoba query-query lain serta banyak mempelajari dari sumber-sumber lain. Semoga laporan ini berguna bagi penulis pada khususnya juga para pembaca pada umumnya.
Daftar Pustaka
