A. Dasar Teori

Pada post kali ini saya akan membahas tentang pembuatan dan pengelolaan tabel.  Dalam sebuah database terdapat tabel-tabel yang menyediakan sebuah struktur untuk menyimpan dan mengamankan data. Semua data berada di dalam struktur tabel, dan semua tabel berada dalam struktur database. Tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Masing-masing kolom memiliki nama yang spesifik dan unik.Tabel disebut juga kumpulan baris(row) dan kolom (column), dimana jumlah dan nama kolom harus didefinisikan terlebih dahulu di awal. Nah hal ini akan dijelaskan lebih lanjut nantinya. Baris merupakan sebuah variable yang dapat diisi data kapanpun sehingga jumlahnya bisa berubah. Sedangkan kolom dalam tabel memiliki tipe data yang membatasi jenis data apa yang dapat dimasukkan.
Dalam sebuah tabel, biasanya terdapat primary key yaitu 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.Kita dapat mengelola tabel serta memanipulasinya. 
Kita dapat membuat, menghapus serta mendefinisikan kerangaka tabelnya. Hal ini disebut Data Definition Language atau DDL. Dalam post ini, saya akan membahas pengelolaan tabel dengan dua DBMS (Database Management System) yaitu PostgreSQL dan MySQL     
1. Membuat  dan Menghapus Tabel
         Untuk membuat tabel terlebih dulu kita harus masuk ke database mana yang akan kita tambahkan tabel. Berikut ini adalah struktur query untuk membuat tabel. 
Create table namatabel (namakolom1 tipedata keterangan, namakolom2 tipedata keterangan); 
Syntax di atas untuk 2 kolom. 
Jika kita ingin menambah lagi kita tinggal menambahkannya setelah tanda koma.Untuk mengapus tabel, berikut ini adalah perintah querynya. 
Drop table namatabel;
              2.   Memanipulasi Tabel atau Mengubah Struktur Tabel

Dalam pembuatan database, kita harus memperhatikan struktur tabel-tabel yang ada dalam database. Perintah dasar untuk mengubah struktur tabel adalah alter table. Kita dapat mengahpus kolom, menambah kolom, mengubah nama tabel, mengubah nama kolom, mengubah tipe data serta menambahkan primary key.
Secara umum, berikut ini adalah perintah query untuk alter
Alter table namatabel alter_option;
            Yang dimaksud alter_option di atas adalah perintah pilihan apa yang akan digunakan untuk mengubah struktur tabel. Contoh alter option adalah drop, add, rename dan lain-lain. Contoh penerapannya akan saya bahas di bagian selanjutnya.

Dalam pembuatan database, kita harus memperhatikan struktur tabel-tabel yang ada dalam database. Perintah dasar untuk mengubah struktur tabel adalah alter table. Kita dapat mengahpus kolom, menambah kolom, mengubah nama tabel, mengubah nama kolom, mengubah tipe data serta menambahkan primary key.
Secara umum, berikut ini adalah perintah query untuk alter
Alter table namatabel alter_option;
            Yang dimaksud alter_option di atas adalah perintah pilihan apa yang akan digunakan untuk mengubah struktur tabel. Contoh alter option adalah drop, add, rename dan lain-lain. Contoh penerapannya akan saya bahas di bagian selanjutnya.
         3.  Membuat Temporary Tabel
Temporary tabel adalah tabel yang sifatnya hanya sementara artinya akan aktif hanya ketika kita sedang berada atau login ke database namun ketika kita logout dari database maka secara otomatis temporary tabel akan terhapus.
Berikut ini adalah perintah query untuk membuat temporary tabel untuk 2 kolom.
     Create temporary table namatabel (namakolom1 tipedata keterangan, namakolom2 tipedata keterangan); 
              4. Mengatur Hak Akses dalam Database
                Untuk alasan keamanan, biasanya sebuah tabel atau database hanya bisa dibuka oleh user tertentu. Hal tersebut dapat diatur dalam hak akses atau privileges. Hak akses tersebut dapat diatur dengan perintah Grant dan Revoke. Perintah Revoke digunakan untuk mencabut hak akses, sedangkan perintah Grant digunakan untuk mengembalikan hak akses. Hak akses yang dimaksud dapat hak akses untuk seluruh  fungsi tabel maupun hak akses untuk salah satu fungsi misalnya select, update dan lain-lain. Contoh penerapannya akan saya bahas di bagian selanjutnya. 
           5. Inheritance
Inheritence dipergunakan jika ingin membuat sebuah tabel baru yang berhubungan dengan tabel yang ada, dengan kata lain tabel tersebut merupakan turunan tabel pertama. Berikut ini adalah perintah query Inheritence :
Create temporary table namatabel (namakolom1 tipedata keterangan , namakolom2 tipedata keterangan) inherits (namatabelinduk);

            Sumber : http://achmatim.net
                        http://www.duniailkom.com
 B. Hasil Praktikum
Dalam bagian ini, saya akan menjawab soal praktikum di kelas praktikum saya di praktikum desain basis data.
Berikut ini adalah tugas praktikum saya.
1.      Buatlah sebuah tabel dengan nama identitasNIM dan dengan nama fieldnya
Nama
Tipe Data
Keterangan
Id_idn
Integer
Not Null
namaDepan_idn
Varchar(10)

namaBelakang_idn
Varchar(10)

Tgl_lahir_idn
Date

Status_idn
Boolean

Alamat_idn
Text


2.      Buatlah sebuah tabel lagi dengan nama pegawai dan nama field sama dengan tabel identitas.
3.      Hapus kolom “alamat_idn” dan tampilkan struktur dari tabel pegawai tadi.
4.      Tambahkan kolom “pekerjaan_idn” dengan type data varchar dan tampilkan struktur tabel pegawai.
5.      Ubah nama tabel pegawai menjadi pekerjaNIM kemudian ubah nama kolom “pekerjaan_idn” menjadi “alamat_idn” dan tampilkan.
6.      Berikan Primary key pada tabel pekerjaNIM dan ubah type data pada kolom “alamat_idn” menjadi text. Kemudian tampilkan struktur tabel.
7.      Hapus tabel pekerjaNIM.
8.      Buat temporary tabel dengan nama mahasiswa_sementara dengan 3 kolom yaitu id, nama, tanggal lahir dan tampilkan tabel atau strukturnya.
9.      Hapus semua hak akses tabel tertentu kepada salah satu user yang telah dibuat dan lakukan pengecekan. Kemudian berikan semua hak akses kembali dan lakukan pengecekan kembali. Hapus hak akses SELECT tabel tertentu kepada salah satu user dan lakukan pengecekan.
10.  Buat tabel baru dengan nama Gaji, dengan catatan pembuatan tabel berasal dari turunan tabel number 1 dan tambahkan kolom gaji kotor, pajak, dan gaji bersih. Kemudian tampilkan strukturnya. 

Untuk menyelesaikan tugas di atas saya akan menggunakan 2 DBMS yaitu dengan SQL Shell dari PostgreSQL dan Xampp Shell dari MySQL.
  • Menggunakan SQL Shell dari PostgreSQL
      1. Pertama, kita harus masuk ke SQL Shell terlebih dahulu. Kemudian ketikkan perintah query create table identitasNIM (id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir_idn date, status_idn boolean, Alamat_idn text); seperti di bawah ini. 


Setelah CREATE TABLE sukses, selanjutnya ketikkan \z untuk mengecek daftar tabel. Untuk melihat struktur tabelnya, ketikkan \d identitasNIM seperti gambar di atas.
2. Untuk membuat tabel pegawai, gunakan perintah create table pegawai (id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir_idn date, status_idn boolean, Alamat_idn text);  seperti di bawah ini.

Setelah muncul CREATE TABLE berarti pembuatan tabel pegawai sukses.
3.      Untuk menghapus kolom alamat_idn, kita gunakan perintah alter table pegawai drop column “alamat_idn”; seperti di bawah ini.

Setelah itu, untuk mengecek apakah kolom alamat_idn sudah terhapus dari tabel pegawai, gunakan perintah \d pegawai seperti di atas.
4.      Untuk menambahkan kolom di tabel pegawai ketikkan perintah alter table pegawai add column “pekerjaan_idn” varchar(10);

Setelah itu, untuk mengecek struktur tabel pegawai setelah ditambah kolomnya, gunakan perintah \d pegawai seperti di atas.
5.      Untuk mengubah nama tabel pegawai menjadi tabel pekerjaNIM gunakan perintah alter table pegawai rename to pekerjaNIM; seperti di bawah ini. Kemudian untuk mengubah nama kolom pekerjaan_idn menjadi alamat_idn gunakan perintah alter table pekerjaNIM rename column “pekerjaan_idn” to “alamat_idn”; seperti di bawah ini.

Lalu untuk menampilkan struktur tabelnya, gunakan perintah \d pekerjaNIM seperti di atas.
6.      Untuk meambah primary key pada tabel pekerjaNIM, kita dapat menggunakan kolom id_idn sebagai primary key nya karena id biasanya memiliki cirri yang unik dan cocok digunakan sebagai primary key. Gunakan perintah alter table pekerjaNIM add primary key (id_idn); seperti di bawah ini. 
      Kemudian untuk mengubah tipe data alamat_idn menjadi text gunakan perintah alter table pekerjaNIM alter column alamat_idn type text; seperti di atas.
Kemudian untuk menampilkan struktur tabelnya ketikkan perintah \d pekerjaNIM.
7.      Untuk menghapus tabel pekerjaNIM gunakan perintah drop table pekerjaNIM;
Kemudian cek di daftar tabel dengan perintah \z sehingga akan muncul daftar tabel dan tabel pekerjaNIM sudah terhapus.
8.      Untuk membuat temporary tabel mahasiswa_sementara gunakan perintah create temporary table mahasiswa_sementara (id integer, nama varchar(25), tanggal_lahir date); seperti di bawah ini.

Kemudian menampilkan struktur tabelnya dengan perintah \d mahasiswa_sementara seperti di atas.
9.      Untuk menghapus hak akses pada salah satu user misalnya baiti gunakan perintah  revoke all on table identitasNIM from baiti; seperti di bawah ini,.

      Kemudian cek dengan membuka psql baru dan masuk sebagai user baiti. Lalu gunakan perintah select *from identitasNIM; dan akan muncul pesan error karena user tidak memiliki hak akses.

Kemudian pasang kembali hak akses untuk user baiti dengan perintah grant all on table identitasNIM to baiti; di psql dengan user pertama seperti di bawah ini.

Lalu cek kembali di psql user baiti seperti di bawah ini.

Setelah mengetikkan perintah yang sama seperti sebelumnya, sekarang user bisa membuka struktur tabel identitasNIM.
Untuk mencabut salah satu hak akses misalnya select dari user gunakan perintah revoke select on table identitasNIM from baiti; seperti di bawah ini.

Lalu cek kembali di user baiti dengan perintah seperti sebelumnya.

Sehingga muncul pesan error seperti di atas.
10.      Untuk membuat tabel gaji dari turunan tabel pertama gunakan perintah create table Gaji (gaji_kotor integer, pajak integer, gaji_bersih integer) inherits (identitasNIM); seperti di bawah ini.
Kemudian gunakan perintah \d gaji untuk,elihat struktur tabelnya.
  •   Menggunakan XAMPP Shell dari MySQL
1.      Pertama, kita harus masuk ke XAMPP Shell terlebih dahulu. Lalu gunakan database baiti13650070.  Kemudian ketikkan perintah query create table identitasNIM (id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir_idn date, status_idn boolean, Alamat_idn text); seperti di bawah ini.

Untuk menampilkan daftar tabel guanakan perintah show tables; dan untuk melihat struktur tabelnya gunakan perintah desc identitasnim; seperti dibawah ini.

2.      Untuk membuat tabel pegawai, gunakan perintah create table pegawai (id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir_idn date, status_idn boolean, Alamat_idn text);  seperti di bawah ini.

3.   Untuk menghapus kolom alamat_idn, kita gunakan perintah alter table pegawai drop alamat_idn; seperti di bawah ini.

Setelah itu, untuk mengecek apakah kolom alamat_idn sudah terhapus dari tabel pegawai, gunakan perintah desc pegawai; seperti di atas.
4.      Untuk menambahkan kolom di tabel pegawai ketikkan perintah alter table pegawai add pekerjaan_idn varchar(10);

Setelah itu, untuk mengecek struktur tabel pegawai setelah ditambah kolomnya, gunakan perintah desc pegawai; seperti di atas.
      5. Untuk mengubah nama tabel pegawai menjadi tabel pekerjaNIM gunakan perintah alter table pegawai rename to pekerjaNIM; seperti di bawah ini. Kemudian untuk mengubah nama kolom pekerjaan_idn menjadi alamat_idn gunakan perintah alter table pekerjaNIM change pekerjaan_idn alamat_idn varchar(10); seperti di bawah ini.


Lalu untuk menampilkan struktur tabelnya, gunakan perintah desc pekerjaNIM; seperti di atas.
6.      Untuk menambah primary key pada tabel pekerjaNIM, kita dapat menggunakan kolom id_idn sebagai primary key nya karena id biasanya memiliki cirri yang unik dan cocok digunakan sebagai primary key. Gunakan perintah alter table pekerjaNIM add primary key (id_idn); seperti di bawah ini. Kemudian untuk mengubah tipe data alamat_idn menjadi text gunakan perintah alter table pekerjaNIM modify alamat_idn type text; seperti di bawah ini.

Kemudian untuk menampilkan struktur tabelnya ketikkan perintah desc pekerjaNIM;  seperti di atas.
7.      Untuk menghapus tabel pekerjaNIM gunakan perintah drop table pekerjaNIM;

Kemudian cek di daftar tabel dengan perintah show tables; sehingga akan muncul daftar tabel dan tabel pekerjaNIM sudah terhapus.
8.      Untuk membuat temporary tabel mahasiswa_sementara gunakan perintah create temporary table mahasiswa_sementara (id integer, nama varchar(
25), tanggal_lahir date); seperti di bawah ini.

Kemudian menampilkan struktur tabelnya dengan perintah desc mahasiswa_sementara; seperti di atas.
9.      Untuk menghapus hak akses pada salah satu user misalnya baiti gunakan perintah  revoke all on baiti13650070.identitasNIM from ‘baiti’@’localhost’; seperti di bawah ini.

Kemudian cek dengan membuka xampp shell baru dan masuk sebagai user baiti. Lalu gunakan perintah select *from identitasNIM; dan akan muncul pesan error karena user tidak memiliki hak akses.

Kemudian pasang kembali hak akses untuk user baiti dengan perintah grant all on baiti13650070.identitasNIM to ‘baiti’@’localhost’;; di psql dengan user pertama seperti di bawah ini.
Lalu cek kembali di xampp shell user baiti seperti di bawah ini.

Setelah mengetikkan perintah yang sama seperti sebelumnya, sekarang user bisa membuka struktur tabel identitasNIM.
Untuk mencabut salah satu hak akses misalnya select dari user gunakan perintah revoke select on baiti13650070.identitasNIM from ‘baiti’@’localhost’; seperti di bawah ini.

Lalu cek kembali di user baiti dengan perintah seperti sebelumnya.

Sehingga muncul pesan error seperti di atas.
10.      Untuk membuat tabel baru yang berasal dari turunan tabel nomor 1, MySQL tidak mempunyai fasilitas inheritance seperti yang dimiliki oleh PostgreSQL.
Jadi, untuk membuat tabel gaji sepert yang dimaksudkan soal, kita harus membuat tabel seperti membuat tabel biasa. Lalu kita bisa menggunakan tabel 1 sebagai tabel referensinya.
Struktur querynya yaitu create table gaji (id_idn integer not null, namaDepan_idn varchar(10), namBelakang_idn varchar(10), tgl_lahir_idn date, status_idn Boolean, alamat_idn text, gaji_kotor integer, pajak integer, gaji_bersih integer); 
Kemudian kita dapat menampilkan struktur tabelnya dengan desc gaji;


 C. Tugas di Rumah

Membuat database dan tabel sistem pada pertemuan 1 menggunakan query dan dilengkapi dengan tampilan strukturnya.
Judul Sistem Informasi : Movie Rental “Fiction” 
Berikut ini adalah rancangan tabel system informasi yang saya buat minggu lalu.

Untuk membuat database ini, saya akan menggunakan XAMPP Shell dari MySQL
         1. Saya akan menggunakan user root dan membuat database baru dengan nama fiction.



         2. Lalu saya akan membuat tabel Film beserta struktur tabelnya dengan primary key dari tabel film adalah id_film. Seperti terlihat di bawah ini.
3.      Kemudian saya akan membuat tabel Anggota dengan primary key id_anggota. Berikut ini adalah struktur tabelnya.

4. Tabel ketiga yaitu tabel Pegawai dengan primary key id_pegawai. Berikut ini adalah struktur tabelnya.

5.      Selanjutnya, saya akan membuat tabel transaksi Penyewaan. Berikut ini adalah struktur tabelnya.
6. Tabel yang terakhir yaitu tabel transaksi Pengembalian. Berikut ini adalah struktur tabelnya.

D.    Evaluasi Perbandingan DBMS MySQL dan DBMS PostgreSQL
Setelah mengerjakan tugas praktikum di atas dengan dua DBMS yaitu PostgreSQL dan MySQL, saya akan mencoba menjabarkan perbandingan di antara keduanya. Dalam hal struktur query terkadang diantara keduanya memiliki persamaan secara umum. Namun terkadang terdapat beberapa perbedaan pada struktur query nya.
Berikut ini adalah beberapa perbedaan struktur query nya.
1.      Pada soal nomor 1 yaitu membuat tabel identitasNIM terdapat perbedaan dalam menampilkan tabelnya setelah tabel tersebut dibuat. Meskipun dengan struktur query berbeda, fungsi keduanya tetap sama.
  •  Menampilkan daftar tabel di database:
 PostgreSQL = \z
  
MySQL = show tables;
 
  •   Menampilkan struktur tabel
PostgreSQL = \d identitasNIM

MySQL = desc identitasnim;


Pada bagian ini, PostgresSQL memiliki kemudahan berupa struktur query lebih pendek dibandingkan dengan MySQL.
2.      Pada soal nomor 3, menghapus kolom alamat idn.
PostgerSQL = alter table pegawai drop column “alamat_idn”;
   

MySQL = alter table pegawai drop alamat_idn;


Pada bagian ini, perbedaan keduanya hanya terletak pada tanda petik saja.
3.      Pada soal nomor 4, menambahkan kolom di tabel pegawai.
            PostgreSQL = alter table pegawai add column “pekerjaan_idn” varchar(10);

MySQL = alter table pegawai add pekerjaan_idn varchar(10);
Pada bagian ini MySQL memiliki struktur query lebih pendek dibandingkan PostgreSQL.
4.      Kemudian pada soal nomor 5 juga terdapat perintah untuk mengubah nama kolom pekerjaan_idn menjadi alamat_id.
            PostgreSQL = alter table pekerjaNIM rename column “pekerjaan_idn” to “alamat_idn”;

MySQL = alter table pekerjaNIM change pekerjaan_idn alamat_idn varchar(10);

Pada bagian ini, postgreSQL menggunakan rename, sedangkan MySQL menggunkan change.
5.      Pada soal nomor 6, mengubah tipe data alamat_idn menjadi text.
            PostgreSQL = alter table pekerjaNIM alter column alamat_idn type text;
           

MySQL = alter table pekerjaNIM modify alamat_idn type text;

6.      Pada soal nomor 9, mencabut hak akses (revoke) salah satu user dan mengembalikan hak akses (grant) kembali.
  •  Revoke untuk user baiti
PostgreSQL = revoke all on table identitasNIM from baiti; 
MySQL = revoke all on baiti13650070.identitasnim from ‘baiti’@’localhost’;

  •  Grant untuk user baiti 
 PostgreSQL = grant all on table identitasNIM to baiti;

             MySQL = grant all on baiti13650070.identitasnim to ‘baiti’@’localhost’; 


  •  Revoke salah satu hak akses, yaitu select
         PostgreSQL = revoke select on table identitasNIM from baiti;



        MySQL = revoke select on baiti13650070.identitasnim from ‘baiti’@’localhost’;


Pada bagian ini, PostgreSQL memiliki kemudahan berupa struktur query lebih pendek, dan tidak perlu mengetik database dan lokasi user seperti di MySQL. 
Untuk mengecek di user baiti, keduanya memiliki struktur query yang sama.
7.      Pada soal nomor 10, yaitu pembuatan tabel berasal dari turunan tabel 1 dengan penambahan beberapa kolom, PostgreSQL lebih unggul, karena fasilitas inheritance atau pewarisan/turunan tabel merupakan salah satu keunggulannya dibanding DBMS lain (termasuk MySQL) dalam membuat tabel tabel turunan. Keunggulan ini merupakan salah satu wujud atau implementasi konsep berorientasi objek didalam pengelolaan basis data.

E.    Kesimpulan, Saran, Kritik dan Manfaat bagi Pembaca
1.      Kesimpulan
  Setelah melakukan praktikum ini, saya dapat mengambil kesimpulan bahwa dalam pembuatan database, tabel memiliki peran sebagai tempat menyediakan sebuah struktur untuk menyimpan dan mengamankan data. Tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Kita dapat mengelola tabel serta memanipulasinya. Kita dapat membuat, menghapus serta mendefinisikan kerangaka tabelnya. Hal ini disebut Data Definition Language atau DDL. Pada DBMS yang berebeda yaitu PostgreSQL dan MySQL, terkadang memiliki query yang berbeda dalam mendefinisikan maupun memanipulasi tabelnya.
2.      Saran
Diperlukan pembelajaran lebih lanjut mengenai pembuatan dan pengelolaan tabel database menggunakan PostgreSQL maupu MySQL agar praktikan dapat menguasai kedua DBMS tersebut dalam membuat database yang lebih baik.

3.      Kritik
Dalam laporan ini, masih banyak terdapat kekurangan karena terbatasnya pengetahuan saya dalam menguasai 2 DBMS yang digunakan dalam praktikum ini.        
4.      Manfaat 
            Manfaat yang akan didapat pembaca dalam laporan ini antara lain dapat mengetahui pengertian tabel secara umum, serta dapat mengetahui proses pembuatan dan pengelolaan tabel menggunakan 2 DBMS yang berbeda. Pembaca juga dapat mengetahui perbedaan dan perbandingan struktur query dari 2 DBMS tersebut dalam manajemen tabel.