MODUL PRAKTIKUM BASIS DATA
PENYUSUN TIM LABORAN
FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUMATERA UTARA MEDAN 2017
MODUL PRAKTIKUM
Mata Kuliah Praktikum Kode Mata Kuliah Praktikum SKS Program Studi Semester
: Praktikum Basis Data : 010701015 :1 : Ilmu Komputer : 3 (Ganjil)
DISAHKAN OLEH
DIPERIKSA OLEH
DISUSUN OLEH
DEKAN FAKULTAS SAINS DAN TEKNOLOGI UIN SUMATERA UTARA MEDAN :
KEPALA LABORATORIUM
LABORAN LABORATORIUM FAKULTAS SAINS DAN TEKNOLOGI UIN SUMATERA UTARA MEDAN :
Dr. H.M. Jamil, MA
Rakhmat Kurniawan R, M.Kom
Ibnu Rusydi, M. Kom
2
KATA PENGANTAR Assalamu’alaikum warahmatullahi wabarakatuh. Alhamdulillahirabbil’alamin, Puji syukur kehadirat Allah SWT atas limpahan rahmat dan karunianya sehingga modul praktikum basis data ini telah dapat diselesaikan. Modul ini merupakan panduan bagi mahasiswa Program Studi Ilmu Komputer dalam proses pembelajaran serta memberikan petunjuk praktis agar mahasiswa mendapatkan gambaran secara jelas dalam melaksanakan praktikum Jaringan Komputer. Kami mengucapkan terima kasih kepada dosen bidang studi yang telah memberikan arahan kepada kami sehingga modul ini dapat terselesaikan dengan baik. Kami juga mengucapkan terima kasih sebanyak-banyaknya kepada tim penyusun yang sudah ikut berpartisipasi meluangkan waktunya untuk membantu kami. Kami menyadari masih terdapat kekurangan dalam modul ini untuk itu kritik dan saran terhadap penyempurnaan modul ini sangat diharapkan. Semoga modul ini dapat memberi manfaat bagi mahasiswa Program Studi Ilmu Komputer khususnya dan bagi semua pihak yang membutuhkan. Akhir kata penulis berharap agar modul ini bermanfaat meningkatkan pemahaman mahasiswa. Wassalamu’alaikum warahmatullahi wabarakatuh.
Medan,
Januari 2017
Tim Penyusun
3
DAFTAR ISI
COVER ................................................................................................................................. 1 LEMBAR PENGESAHAN .................................................................................................. 2 KATA PENGANTAR .......................................................................................................... 3 DAFTAR ISI ........................................................................................................................ 4
Praktikum 1 : Basic File System............................................................................................ 5 Praktikum 2 : ERD (Entity Relationship Diagram) ............................................................. 13 Praktikum 3 : Functional Dependency ................................................................................ 31 Praktikum 4 : Normalisasi ................................................................................................... 39 Praktikum 5 : Aljabar Relasional......................................................................................... 46 Praktikum 6 : Query Processing .......................................................................................... 56 DAFTAR PUSTAKA ......................................................................................................... 82
4
Praktikum 1 : Basic File System
A. Tujuan 1. Mengetahui jenis dari file dalam basis data 2. Mengetahui propertis dari basis data
B. Teori
Basis data (Database) adalah kumpulan data yang tersimpan secara sistematis didalam komputer yang dapat diolah dan dimanipulasi menggunakan perangkat lunak untuk menghasilkan informasi. Basis data (Database) menurut para ahli : 1. Chou (1987), Basis data (database) adalah kumpulan informasi bermanfaat yang diorganisasikan dalam tata cara khusus. 2. Pabbri dan Schwab (1992), Basis data adalah sistem-sistem berkas terpadu yang dirancang terutama untuk meminimalkan pengulangan data. Basis data dapat dianggap sebagai tempat untuk sekumpulan berkas data yang terkomputeriasasi. Jadi system basis data pada dasarnya adalah system terkomputerisasi yang tujuan utamanya memelihara informasi dan membuat informasi tersebut tersedia saat dibutuhkan. 3. Date
(1995),
Basis
data
dianggap
sebagai
tempat
sekumpulan berkas
tekomputeriasasi. Maka dari itu dapat disimpulkan Basis data adalah sekumpulan data yang terintegrasi yang diorganisasikan untuk memenuhi kebutuhan para pemakai dalam suatu organisasi. MySQL adalah system managemen database SQL yang bersifat open source dan paling popular saat ini. Sistem database MySQL mendukung beberapa fitur seperti multithreaded, multiuser, dan SQL database management sistem (DBMS). Database ini dibuat untuk keperluan sistem database yang cepat, handal dan mudah digunakan. MySQL mempunyai kelebihan, diantaranya : 1. Portabilitas. MySQL bisa jalan stabil pada beragam system operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, serta ada banyak lagi. 2. Perangkat lunak sumber terbuka (Open Source). MySQL didistribusikan juga sebagai piranti lunak sumber terbuka, di bawah lisensi GPL hingga bisa dipakai secara gratis.
5
3. Multi-user. MySQL bisa dipakai oleh sebagian pengguna dalam kurun waktu yang bersamaan tanpa ada alami permasalahan atau perseteruan. 4. 'Performance tuning', MySQL mempunyai kecepatan yang mengagumkan dalam mengatasi query simpel, dengan kata lain bisa mengolah semakin banyak SQL per unit saat. 5. Macam jenis data. MySQL mempunyai macam jenis data yang sangatlah kaya, seperti signed/unsigned integer, float, double, char, text, date, timestamp, dan sebagainya. 6. Perintah serta Manfaat. MySQL mempunyai operator serta manfaat secara penuh yang mensupport perintah Select serta Where dalam perintah (query). 7. Keamanan. MySQL mempunyai
sebagian
susunan
keamanan
seperti
level
subnetmask, nama host, serta izin akses user dengan system perizinan yang mendetail dan sandi terenkripsi. 8. Skalabilitas serta Pembatasan. MySQL dapat mengatasi basis data dalam taraf besar, dengan jumlah rekaman (records) kian lebih 50 juta, 60 ribu tabel dan 5 miliar baris. Diluar itu batas indeks yang bisa ditampung mencapai 32 indeks pada setiap tabelnya. 9. Konektivitas. MySQL bisa lakukan koneksi dengan client memakai protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT). 10. Lokalisasi. MySQL bisa mendeteksi pesan kekeliruan pada client dengan memakai lebih dari dua puluh bahasa. Walau juga demikian, bahasa Indonesia belum termasuk di dalamnya. 11. Antar Muka. MySQL mempunyai antar muka (interface) pada beragam aplikasi serta bhs pemrograman dengan memakai manfaat API (Application Programming Interface). 12. Client serta Peralatan. MySQL dilengkapi dengan beragam peralatan (tool) yang bisa dipakai untuk administrasi basis data, serta pada tiap-tiap peralatan yang ada diikutkan panduan on-line. 13. Susunan tabel. MySQL mempunyai susunan tabel yang lebih fleksibel dalam mengatasi ALTER TABLE, dibanding basis data yang lain sejenis PostgreSQL maupun Oracle. Tabel adalah kumpulan dari suatu field dan record. Dalam hal ini biasanya field ditunjukkan dalam bentuk kolom dan record ditunjukkan dalam bentuk baris. Secara sederhana, kolom dan baris dipakai sebagai tempat untuk menampung data. Database
6
digunakan sebagai tempat menampung suatu atau beberapa table berikut struktur querynya. Operasi tabel adalah suatu aktivitas melakukan pengolahan, perubahan, dan pengaturan tabel sehingga suatu tabel dapat dioperasikan sesuai dengan ketentuan data. Tabel digunakan untuk menyimpan data, baik data yang berbentuk angka maupun bentuk huruf atau karakter. Aturan dalam penamaan tabel: -
Penggunaan “_” (underscore)
-
Penggunaan “karakter” (huruf besar dan huruf kecil)
-
Penggunaan “karakter dan angka”
-
Penggunaan “karakter, angka dan underscore”
Tipe data adalah jenis data yang mempunyai batasan tempat dan karakteristik sesuai dengan interprestasi data dan dapat diolah computer untuk memenuhi kebutuhan dalam pemrograman Komputer. MySQL (My Structure Query Language) merupakan salah satu DBMS dari sekian banyak DBMS lain seperti Oracle, MS SQL, PostgresSQL dan banyak lagi. Semuanya mempunyai fungsi dan manfaat yang hampir sama namun dalam kelebihan dan kekurangan masing masing. MySQL menggunakan bahasa SQL dan dapat dikatakan sebagai DBMS. DBMS (Database Manajemen System) merupakan salah satu sistem dalam mengakses database dengan menggunakan bahasa SQL. MySQL juga merupakan aplikasi Open source artinya memungkinkan untuk semua orang untuk menggunakan dan memodifikasi aplikasi tersebut. Sehingga siapapun bisa mendapatkan aplikasi MySQL secara gratis dan bebas digunakan. Alasan menggunakan MySQL ?
Database MySQL mempunyai performance sangat cepat, dapat dipercaya
Reliable,
MySQL telah banyak menangani pembuatan software besar,
Bersifat open source,
Mudah digunakan,
Dapat dijalankan diberbagai sistem operasi (multiplatform) → Linux, Windows, Mac OS,
Server multithread (dapat menangani beberapa permintaan (request) secara bersamaan),
Metode enkripsi-nya bagus,
Menggunakan autentikasi user & password
7
C. Praktikum 1) Instalasi MySQL Untuk instalasi MySQL lebih mudah bila anda sekalian melakukan instalasi my sql dan php my admin sekaligus dalam paket xampp . xampp bisa di download di https://www.apachefriends.org/index.html. Sejak XAMPP 5.5.30 dan 5.6.14, XAMPP menggunakan MariaDB bukan MySQL. Perintah dan tool nya sama untuk keduanya. 2) Aplikasi Server MySQL Di dalam MySQL terdapat sebuah database yang ada sejak awal setelah anda menginstal MySQL, nama database tersebut adalah mysql. Pada database tersebut tersimpan namanama pengguna yang dapat mengakses MySQL secara lengkap dengan opsi otoritas yang dapat dilakukan oleh pengguna tersebut. Secara default user dengan nama root adalah pengguna yang menguasai secara utuh dan dapat membuat user lainnya (termasuk membatasi user– user lain). Untuk dapat menggunakan MySQL anda harus memasukan user dan password yang sama dengan apa yang dideklarasikan dalam database (MySQL). Dalam penerapan sistem sebenarnya, MySQL Server dan MySQL Client biasanya dijalankan pada komputer yang berbeda. Komputer Server berada pada sebuah ruangan tersendiri dan terhubung melalui jaringan dengan beberapa komputer Client. Namun kali ini kita akan menjalankan keduanya di dalam sebuah komputer saja. Untuk MySQL Server, kita telah menjalankannya baik sebagai service dari control panel xammp, atau manual dengan mysqld.exe . Dengan MySQL server yang telah berjalan, kita akan mengaksesnya menggunakan MySQL Client dari Command Promt Windows (selanjutnya akan kita singkat dengan cmd), menggunakan aplikasi mysql.exe dari folder bin MySQL. 3) Akses MySQL Untuk mengakses MySQL dengan mode text dari Console (Command Prompt = Microsoft Windows), dapat dilakukan dengan cara : a. Buka Command Promp dan berikan perintah (jika MySQL terinstall di direktori C:\) :
b. Login. Berikan perintah (jika MySQL terinstall di direktori C:\)
cd c:\xampp\mysql\bin
login, ketikkan
mysql -u root –h localhost root -p
lalu enter, akan muncul perintah enter password: , biarkan kosong lalu tekan enter
8
username : root
password : (maksudnya password kosong)
Keterangan :
-u = root Opsi ini menunjukkan nama User yang digunakan
-h = localhost Opsi ini menunjukkan nama Host/IP (localhost/127.0.0.1)
-p = Opsi ini menunjukkan password yang digunakan (jika opsi ini digunakan), jika tidak menggunakan password maka opsi ini tidak perlu dicantumkan. Opsi ini juga dapat digunakan untuk mendeklarasikan nama database yang digunakan.
Jika menggunakan XAMPP di Linux dapat diakses dengan : dnd@namahost:~$ /opt/lampp/bin/mysql –u root Jika menggunakan XAMPP di Microsoft Windows dapat diakses dengan : C:\xampp\mysql\bin\ Lalu ketikan mysql –u root –p
c. Keluar dari mysql mysql> \q bye
4) Tipe Data Beberapa tipe data yang disediakan oleh MySQL antara lain :
9
5) Database Relational Database Relational atau kita sering kita sebut database, merupakan kumpulan dari tabeltabel. Sedangkan tabel merupakan kumpulan dari beberapa Field/ baris atau column. Untuk membuat suatu tabel maka seorang user harus membuat database terlebih dahulu. Kemudian mengaktifkan database yang dibuat tersebut.
10
D. Tugas Praktikum a. Apakah instalasi My SQL anda berhasil ? cobalah login ke mysql pada komputer anda ! b. Buatlah sebuah database dengan nama “Prak_NIM” c. Operasikan perintah SQL untuk : i. Membuat database ii. Melihat seluruh database pada mysql server iii. Mengakses database/ menggunakan database iv. Menghapus database d. Pilih tema dalam perancangan database (ditentukan oleh asisten), e. Buatlah laporan praktikum dengan ketentuan sebagai berikut : i. Nama file laporan : PrakDB_Bab1-NIM.odt ii. Isi file laporan : 1. Source SQL 2. Screenshot CMD
11
3. Tema yang ditentukan iii. Simpan di directory “PrakDB-NIM” yang telah dibuat tadi
12
Praktikum 2 : ERD (Entity Relationship Diagram) A. Tujuan 1. Memahami hubungan data 2. Memahami model konseptual dari suatu data
B. Teori 1. ERD (Entity Relationship Diagram) Menurut salah satu para ahli, Brady dan Loonam (2010), Entity Relationship Diagram (ERD) merupakan teknik yang digunakan untuk memodelkan kebutuhan data dari suatu organisasi, biasanya oleh System Analys dalam tahap analisis persyaratan proyek pengembangan system. Sementara seolah-olah teknik diagram atau alat peraga memberikan dasar untuk desain database relasional yang mendasari sistem informasi yang dikembangkan. ERD bersama-sama dengan detail pendukung merupakan model data yang pada gilirannya digunakan sebagai spesifikasi untuk database.
Atau pengertian sempitnya adalah sebuah konsep yang mendeskripsikan hubungan antara penyimpanan (database) dan didasarkan pada persepsi dari sebuah dunia nyata yang terdiri dari sekumpulan objek yaitu disebut sebagai entity dan hubungan atau relasi antar objekobjek tersebut
13
Selain dari simbol diatas, sebenarnya ada simbol lain lagi yaitu entitas asosiatif, atribut derivat, dan lainnya. Akan tetapi secara garis besar ERD terdiri dari atas tiga komponen, yaitu entitas (entity), atribut (attribute), dan relasi atau hubungan (relation). Entitas merupakan dasar yang terlibat dalam sistem. Atribut atau field berperan sebagai penjelas dari entitas, dan relasi atau hubungan yang terjadi antara dua entitas. Dalam pembentukan ERD terdapat 3 komponen yang akan dibentuk yaitu :
Entitas : Entitas merupakan mengenai basis data yaitu suatu obyek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data. Pengertian lainnya menurut Brady dan Loonam (2010), entitas adalah objek yang menarik di bidang organisasi yang dimodelkan. Contoh : Mahasiswa, Kartu Anggota Perpustakaan (KAP), dan Buku.
Hubungan (relasi/relationship) : Suatu hubungan adalah hubungan antara dua jenis entitas dan direpresentasikan sebagai garis lurus yang menghubungkan dua entitas. Contoh : Mahasiswa mendaftar sebagai anggota perpustakaan (KAP), relasinya adalah mendaftar.
Atribut : Atribut memberikan informasi lebih rinci tentang jenis entitas. Atribut memiliki struktur internal berupa tipe data. Jenis-jenis atribut :
14
Atribut Key = adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data ( Row/Record ) dalam tabel secara unik. Dikatakan unik jika pada atribut yang dijadikan key tidak boleh ada baris data dengan nilai yang sama. Contoh : Nomor pokok mahasiswa (NPM), NIM dan nomor pokok lainnya
Atribut simple = Atribut yang bernilai atomic, tidak dapat dipecah/ dipilah lagi Contoh : Alamat, penerbit, tahun terbit, judul buku.
Atribut Multivalue = Nilai dari suatu attribute yang mempunyai lebih dari satu (multivalue) nilai dari atrribute yang bersangkutan. Contoh : dari sebuah buku, yaitu terdapat beberapa pengarang.
Atribut Composite = Atribut composite adalah suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih bisah dipecah lagi atau mempunyai sub attribute. Contoh : dari entitas nama yaitu nama depan, nama tengah, dan nama belakang
Atribut Derivatif = Atribut yang tidak harus disimpan dalam database Ex. Total. atau atribut yang dihasilkan dari atribut lain atau dari suatu relationship. Atribut ini dilambangkan dengan bentuk oval yang bergaris putus-putus
Contoh Kasus 1:
Pada saat mendaftar menjadi anggota perpustakaan Fakultas, dicatatlah nama, nomor mahasiswa dan alamat mahasiswa. Setelah itu mereka baru bisa meminjam buku di perpustakaan. Buku-buku yang dimiliki perpustakaan banyak sekali jumlahnya. Tiap buku memiliki data nomor buku, judul, pengarang, penerbit, tahun terbit. Satu buku bisa ditulis oleh beberapa pengarang. Tentukan entitas, atribut dan relasi dari deskripsi di atas, dengan menggambar ERDnya.
Jawab:
Entitas : Mahasiswa, KAP (Kartu Anggota Perpustakaan), Buku
Atribut : Nama, no.mahasiswa, Alamat mahasiswa, No.buku, Judul, Pengarang, Penerbit dan tahun terbit.
Relasi : Daftar dan Pinjam
15
Contoh Kasus 2:
Seperti deskripsi soal kasus nomor 1, namun ada beberapa tambahan penjelasan seperti berikut: Seorang mahasiswa boleh meminjam beberapa buku. Satu buku boleh dipinjam beberapa mahasiswa. Semua mahasiswa sangat pelu buku sehingga tidak ada yang tidak pernah meminjam ke perpustakaan. Setiap peminjam akan dicatat tanggal peminjamannya. Semua mahasiswa disiplin mengembalikan buku tepat satu minggu setelah peminjaman. Gambarkan ERDnya. MODEL ENTITY – RELATIONSHIP Model Entity Relationship : Suatu penyajian data dengan menggunakan Entity dan Relationship Entity : Objek secara fisik : Buku, Perpustakaan, Mahasiswa
16
Objek secara konsep : Meminjam Relationship :
Atribut :
Atribut Multivalue
Derajat dari Relationship :
Trenary degree (Derajat Tiga)
17
Cardinality Ratio Constraint
M:N
Participation Constraint
Partial Participation
Diagram ERD :
18
Contoh Kasus 3 : Seperti soal nomor 2, namun ada beberapa tambahan penjelasan seperti berikut : Mahasiswa kadang-kadang terlambat mengembalikan buku, sehingga dikenakan denda. Besarnya denda adalah Rp 500,- per hari keterlambatan. Mahasiswa dianggap terlambat jika mengembalikan buku lebih lama dari 1 minggu. Gambarkan ERDnya:
2. DDL (Data Defenition Language)
Merupakan perintah SQL yang berkaitan dengan pendefinisian suatu struktur database, dalam hal ini database dan table.
Perintah DDL adalah: CREATE, ALTER, RENAME, DROP
C. Praktikum 1) Microsoft Visio 2013 Entity Relationship Diagram (ERD) adalah sebuah diagram yang menunjukkan informasi yang dibuat, disimpan dan digunakan untuk bisnis. Ada banyak tools yang digunakan untuk membuat ERD, dan saya akan menjelaskan langkah untuk membuat ERD dengan menggunakan Microsoft Visio 2013. Berikut adalah dalam membuat entitiy relationship diagram : 1. Buka aplikasi Microsoft Visio 2013, pada tampilan home akan muncul semua diagram yang dapat dibuat dengan menggunakan Microsoft Visio
19
2 Jika ingin membuat ERD pilih Crow’s Foot Database Notation
3. Setelah memilih diagram yang ingin dibuat akan muncul page untuk menggambarkan ERD. 1. Bagian kiri tersedia shapes berupa notasi untuk menggambarkan ERD 2. Bagian Tengah merupakan lembar kerja unutk menggambarkan ERD
20
Membuat ENTITY 1. Pilih Entity pada diagram toolbar, drag ke lembar kerja maka akan muncul gambar entity
2. Mengubah nama entitas dengan cara klik kanan > Edit Text. Atau dengan cara klik 2x pada bagian entitas name
Membuat Primary Key dan Foreign Key
21
1. Mengubah attribute menjadi Primary Key, pilih attribute yang ingin dijadikan primary key klik kanan > Set Primary Key , pastikan bahwa Set Primary Key sudah tercentang
2. Mengubah attribute menjadi Foreign Key, pilih attribute yang ingin dijadikan foreign key klik kanan > Set Foreign Key, pastikan bahwa Set Foreign Key sudah tercentang
3. Membuat Attribute menjadi Foreign Key dan Primary Key sekaligus, pilih attribute klik kanan > Set Primary Key lalu klik kanan > Set Foreign Key, pastikan bahwa Set Primary Key dan Set Foreign Key nya sudah tercentang
22
4. Menambahkan Primary Key setelah atau sebelum attribute yang diinginkan, klik pada attribute yang mau diinsert, klik kanan > Set ‘Primary Key Attribute’ Before atau klik kanan > Set ‘Primary Key Attribute’ After
Menambahkan Data Type
1. Menapilkan data type untuk ERD. Klik pada entity yang ingin di tampilkan data typenya, klik kanan > Show Attribute Type
23
2. Mengubah data type. Klik pada data type yang ingin diubah, klik kanan > edit text
Membuat Relationship dan Cardinality 1. Pilih relationship pada diagram toolbar, drag dan letakkan pada entity yang ingin diberi relationship hingga muncul kotak hijau.
2. Mengubah Cardinality. Pilih Cardinality yang ingin diganti, klik kanan lalu pilih Set Begin Symbol atau Set End Symbol. Lalu pilih Cardinality yang diinginkan (Zero or More, 1 or More, 1 and only 1, Zero or 1)
24
3. Begin Symbol merupakan symbol yang untuk yang entitas yang pertama di letakkan relationshipnya atau ditandai dengan lingkaran hijau, End symbol Cardinality berikutnya
2) MySQL Setelah menciptakan suatu database dan mengaktifkan database tersebut maka dapat dilakukan perintah pembuatan tabel. a.
Create Table
Perintahnya : Create
Table
Nama_Table
(Nama_Field_1
Tipe_Data
(Size),
Nama_Field_2 Tipe_Data (Size));
Contoh : varchar(40),
mysql > Create Table Mahasiswa (NIM char(11),
Nama
Alamat varchar(100));
25
b. Melihat Table dan Struktur Table Untuk melihat seluruh table yang telah dibuat sebelumnya, (Dengan syarat : sudah berada di database yang mempunyai table tersebut).
perintahnya : mysql > Show Tables;
Sedangkan untuk melihat struktur dari masing-masing tabel,
perintahnya : Desc/Describe Nama_Table ;
Contoh : mysql > Desc Mahasiswa;
c. ALTER TABLE (Merubah Struktur Table) Ada empat macam perubahan yang dapat dilakukan terhadap struktur tabel, yaitu : 1. Perubahan terhadap nama field/kolom 2. Perubahan terhadap tipe data 3. Penambahan field 4. Penghapusan field
1. Merubah Nama Field
26
Perubahan yang terjadi hanya pada nama field/kolom saja. Nama field/kolom lama diganti dengan nama field/kolom yang baru. Untuk merubah nama field tersebut dapat digunakan perintah Change.
Perintahnya : Alter Table Nama_Table Change Nama_Field_Lama Nama_Field_Baru Tipe_Data (Size);
Contoh : mysql > Alter Table Mahasiswa Change Nama Nama_Mhs Char (40);
2. Merubah Tipe Data Perubahan yang terjadi hanya pada tipe data yang digunakan oleh field/kolom tertentu. Tipe data baru langsung disebutkan di belakang nama field/kolom, tanpa harus menyebutkan tipe data lama. Untuk merubah tipe data tersebut digunakan perintah Modify.
Perintahnya : Alter Table Nama_Table Modify Nama_Field Tipe_Data_Baru (Size);
Contoh : mysql > Alter Table Mahasiswa Modify NIM Char (8);
27
3. Menambah Field Struktur tabel akan berubah dengan bertambahnya field/kolom baru di dalamnya. Untuk menambahkan field baru dapat digunakan perintah Add.
Perintahnya : Alter Table Nama_Table Add Nama_Field_Baru Tipe_Data (Size);
Contoh : mysql > Alter Table Mahasiswa Add Fakultas Varchar(30);
4. Menghapus Field
28
Struktur
tabel
dapat
mengalami
perubahan
karena
berkurangnya
field/kolom tertentu. Untuk menghapus file dalam suatu table tersebut dapat dilakukan dengan perintah Drop Column.
Perintahnya : Alter Table Nama_Table Drop Column Nama_Field;
Contoh : mysql > Alter Table Mahasiswa Drop Column Fakultas;
d. DROP TABLE (Menghapus Table) Jika table yang dibuat tadi sudah tidak dibutuhkan, table bisa dihapus. Sehingga ingin menghapusnya maka dapat digunakan perintah Drop Table.
Perintahnya : Drop Table Nama_Table;
Contoh : mysql > Drop Table Mhs;
29
D. Tugas Praktikum 1. Buatlah ERD untuk kasus quiz online (seperti quiz online Basis data / Pemrograman). Dosen membuat soal yang kemudian akan dikerjakan oleh mahasiswa secara online. Gambarkan ERD dengan menggunakan Microsoft Visio. 2. Di dalam database “Order Entry” yang telah anda buat pada praktikum sebelumnya. Untuk nim ganjil gunakan tabel customer,orderitems,order Operasikan salah satu tabel dengan perintah SQLberikut ini : i. Perubahan terhadap nama field/kolom ii. Perubahan terhadap tipe data iii. Penambahan field iv. Penghapusan field 3. Buatlah tabel baru dengan nama contact_customer
Kemudian hapus table tersebut jika telah berhasil anda buat, jangan lupa menyimpan snapshot cmd nya. 4. Buatlah laporan praktikum dengan ketentuan sebagai berikut : a. Nama file laporan : PrakDB_Bab4-NIM.odt b. Isi file laporan : i. Source SSQL ii. Screenshot CMD b. Simpan di directory “PrakDB-NIM”.
30
Praktikum 3 : Functional Dependency
A. Tujuan 1. Mahasiswa memahami konsep functional dependency 2. Mahasiswa memahami sintaks yang termasuk ke dalam DML (data manipulation language)
B. Teori 1. Functional Dependency Functional Dependency (ketergantungan Fungsional) biasanya disebut dengan singkatan FD, fungsi dari FD sendiri adalah menggambarkan relationship atau hubungan, batasan, serta keterkaitan antara atribut-atribut dalam relasi. Suatu atribut dikatakan sebagai FD pada atribut yang lain jika harga dalam atribut tersebut digunakan akan menentukan atribut yang lain. Simbol mewakili bentuk FD dengan cara pembacaan “secara fungsional menentukan”. Contoh: A B, ini berarti bahwa A dan B atribut dari tabel. Secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A sama, maka nilai B juaga sama. Dalam sebuah tabel dapat digambarkan sebagai berikut.
Contoh 1 Tabel Pemasok No_Pemasok
Nama_Pemasok
P01
Imam
P02
Septi
P03
Hana
FD dari tabel Tabel Pemasok adalah No_PemasokNama_Pemasok
Contoh 2 Nilai Matakuliah
NIM
NamaMhs
NilaiHuruf
Struktur Data
5309998
Sefriani Nurrahilah
A
Struktur Data
5309991
Supai
A
31
SBD
5309992
Samina
B
PBO
5309991
Sembada
AB
FD dari tabel Nilai adalah -
NIMNamaMhs
-
{Matakuliah,NIM}NilaiHuruf
Hal ini dikarenakan atribut NilaiHuruf tergantung pada matakuliah dan NIM. Jika Matakuliah dan NIM yang sama, maka Nilai Huruf juga sama.
Macam-macam Dependency Functional dependency
1. Full functonal dependency Menunjukan jika terdapat atribut A dan B dalam suatu relasi, dimana: -
B memiliki ketergantungan fungsional secara penuh pada A,
-
B bukan memiliki dependensi terhadap subset A.
Contoh 1 NIM
Nama
Ipk
idRuang
Dosen
5309991
Setia
3.4
221
Suharjo
5309994
Sepya
3.2
201
Santi
5309996
Sela
3.7
110
Sefa
{NIM,nama}idRuang bukan Full Dependency Jika nama dihilangkan, maka NIMidRunga bisa Full dependency
Contoh 2 No_Dosen
Nama
Jk
Pendidikan
Th_Lulus
S12
Tri Supriati
Wanita
S1
2008
S32
Yusuf Widodo
Pria
S2
2006
S42
Suci Lasmini
Wanita
S1
2010
{No_Dosen,Pendidikan}Th_Lulus B tidak memiliki dependensi terhadap subset A.
2. Partially dependency
32
Merupakan ketergantungan fungsional, dimana beberapa atribut dapat dihilangkan dari A dengan tidak menghilangkan ketergantungan. B memiliki dependensi terhadap subset A.
Contoh NIM
Nama
Ipk
idRuang
Dosen
5309991
Setia
3.4
221
Suharjo
5309994
Sepya
3.2
201
Santi
5309996
Sela
3.7
110
Sefa
NIM,NamaidRuang Jika Nama dihilangkan, ketergantungan masih ada.
3. Transitive dependency Merupakan tipe FD, dimana kondisi A,B,C adalah atribut sebuah relasi dimana AB dan BC (C dikatakan sebagai transitive dependency terhadap A melalui B).
Contoh Nip
Nama
Jabatan
Gaji(jt)
kdCabang
almCabang
1112
Selama
Supervisor
7
05
Banjarnegara
1121
Sena
Supervisor
7
01
Semarang
1122
Senja
Quality Control
10
01
Wonosobo
Nip{Nama,Jabatan,Gaji,kdCabang,almCabang} kdCabangalmCabang
2. DML (Data Manipulation Language)
Merupakan perintah SQL yang berkaitan dengan manipulasi atau pengolahan data atau record dalam table.
Perintah DML antara lain: SELECT, INSERT, UPDATE, DELETE.
C. Praktikum 1) Insert Table Insert merupakan perintah yang dapat digunakan untuk melakukan input data ke dalam tabel
33
yang sudah ada.
Perintahnya : Insert Into Nama_Table Values ( Isi_Field_1, Isi_Field_2, … , Isi_Field_N) ;
Atau dengan perintah : Insert Into Nama_Table ( Nama_Field_1, Nama_Field_2, … , Nama_Field_N) Values (Isi_Field_1, Isi_Field_2, … , Isi_Field_N) ;
Contoh penggunaan pada skema order entry mysql> Insert Into Mahasiswa Values (,'05052652','Paijo', 'Jalan Wates km 11');
Contoh dengan sintaks lain
Untuk memperlancar entry data , isikan table customer sehingga datanya terisi seperti dibawah ini
2) Query Sederhana Select merupakan perintah yang dapat digunakan untuk : Menampilkan data secara keseluruhan yang terdapat di dalam table. Menampilkan data tertentu yang terdapat di dalam table. Menampilkan dan mengurutkan data secara ascending dan descending a. Menampilkan Data Secara Keseluruhan Jika ingin menampilkan data data secara keseluruhan yang terdapat di dalam table, misalnya table Mhs_2 secara keseluruhan.
34
Perintahnya: Select * from Nama_Table;
Contoh: mysql> Select * From Mahasiwa;
b. Menampilkan Kolom Data Tertentu Jika hanya ingin menampilkan beberapa field tertentu dalam suatu table. Misalkan dari data yang terdapat pada tabel Mahasiswa yang mempunyai Field (NIM, Nama_Mhs, Alamat) dan hanya akan menapilkan NIM dan Nama_Mhs. Perintahnya : Select Nama_Field_1, … , Nama_Field_N From Nama_Table;
Contoh : mysql> Select NIM, Nama_Mhs From Mahasiswa;
c. Menampilkan Baris Data Tertentu Jika hanya ingin menampilkan beberapa baris tertentu dalam suatu table. Misalkan dari data yang terdapat pada tabel Mahasiswa ingin menampilkan baris tertentu maka akan ditambahkan kondisi pada clause setelah where. Perintahnya : Select * from Nama_Table where Kondisi;
Contoh : mysql> Select NIM, Nama_Mhs From Mahasiwa Where Nim=05052652;
3) Update Table
35
Update merupakan perintah yang dapat digunakan untuk melakukan perubahan terhadap data yang sudah ada/dibuat. Latihan setelah sub bab ini kita gunakan skema order entry Perintahnya : Update Nama_Table Set Nama_Field = 'Data_Baru' Where Nama_Field_Key = 'Data_Key';
Contoh : mysql> Update customers Set cust_address = 'Gejayan Yogya',cust_country=‟INA‟ Where cust_id='10002';
4) Delete Table Delete merupakan perintah yang dapat digunakan untuk menghapus data yang terdapat di dalam tabel. Perintahnya : Delete From Nama_Table Where Nama_Field_Key; Contoh : mysql> Delete From Mhs_2 Where ID='5';
5) Query dengan Kondisi Query dengan perbandingan kondisi bentuk umumnya adalah sbb : Select * from Nama_Table where Kondisi; Pada bagian kondisi bisa diberikan berbagai value misalnya salah satunya dengan beberapa operator relasional
Operator Relasional Operator relasional merupakan operator yang membandingkan antara dua buah nilai dalam suatu table.
digunakan
untuk
36
Perintahnya : Select * From Nama_Table Where Nama_Field [Operator Relasional] Ketentuan; Contoh : select * from customer where cust_id = „10003‟ or cust_name =‟wascals;
Artinya menampilkan data customer yang mempunya id 10003 atau namanya wascals. select prod_name from products where prod_price >=20 ; artinya menampilkan data barang barang yang harganya lebih dari 20.
Bisa dicoba untuk query dengan berbagai kondisi yang lain. Silahkan tanya asisten untuk lebih lanjut. D. Tugas Praktikum
37
38
Praktikum 4 : Normalisasi
A. Tujuan Mahasiswa mampu memahami defenisi dan tujuan normalisasi
B. Teori 1. Defenisi Normalisasi Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam tabel-tabel untuk memenuhi kebutuhan pemakai di dalam suatu organisasi.
2. Tujuan Normalisasi
Untuk menghilangkan kerangkapan data
Untuk mengurangi kompleksitas
Untuk mempermudah pemodifikasian data
3. Proses Normalisasi
Data diuraikan dalam bentuk tabel, selanjutnya
dianalisis berdasarkan
persyaratan tertentu ke beberapa tingkat.
Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal.
4. Tahapan Normalisasi
39
a. Bentuk Normal Kesatu (1NF) Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kesatu bila setiap data bersifat atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data
40
b. Bentuk Normal Kedua (2NF) Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kedua bila relasi tersebut sudah memenuhi bentuk Normal kesatu, dan atribut yang bukan key sudah tergantung penuh terhadap keynya.
c.
Bentuk Normal Ketiga (3NF)
41
Suatu relasi dikatakan sudah memenuhi Bentuk Normal ketiga bila relasi tersebut sudah memenuhi bentuk Normal kedua dan atribut yang bukan key tidak tergantung transitif terhadap keynya.
C. Praktikum Normalisasi pada database perkuliahan Asumsi :
Seorang mahasiswa dapat mengambil beberapa mata kuliah ‰
Satu mata kuliah dapat diambil oleh lebih dari satu mahasiswa ‰
Satu mata kuliah hanya diajarkan oleh satu dosen ‰
Satu dosen dapat mengajar beberapa mata kuliah ‰
Seorang mahasiswa pada mata kuliah tertentu hanya mempunyai satu nilai
42
43
D. Tugas Praktikum Studi Kasus
44
45
Praktikum 5 : Aljabar Relasional
A. Tujuan Mahasiswa mampu memahami konsep aljabar relasional dan sintaks-sintaks dasar dalam basis data
B. Teori Relational Algebra (aljabar relasional) merupakan kumpulan operasi terhadap relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data.
Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena bahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel). Masing –masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi – relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator – operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query. SQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai spesifikasi algoritma (meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa pemrograman konvensional). Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai bahasa antara dalam spesifikasi algoritma query. Langkah – langkah dalam DBMS untuk pengolahan query adalah: 1. DBMS melakukan parsing terhadap string dari query SQL dan menerjemahkannya menjadi ekspresi aljabar relasional yang dapat menuntun kedalam algoritma sederhana yang tidak efisien. 2. Setelah itu, bagian query optimizer mengkonversi ekspresi aljabar relasional ini menjadi ekspresi lain yang ekvivalen nemun lebih efisien untuk dieksekusi. 3. Berdasarkan ekpresi aljabar relasional yang telah dioptimasi, query optimizer mempesiapkan rencana eksekusi query (query execution plan) yang kemudian ditransformasikan menjadi kode yang dapat dieksekusi pembangkit kode di DBMS.
46
4. Karena ekspresi aljabar mempunyai semantik matematika yang presisi maka sistem dapat memferifikasi ekvivalensi ekspresi yang dioptimasi yang dihasilkan dari manipulasi ekpresi asal. Semantiks ini juga memungkinkan pembandingan rencana – rencana evaluasi query yang berbeda.
C. Praktikum Operasi Aljabar Relasional Untuk mengimplementasikan kedalam operasi aljabar relasional, berikut ini diberikan relasi–relasi dari database Penjadwalan_mengajar_dosen. Relasi – relasi tersebut meliputi:
Tabel Dosen
Tabel Matakuliah
47
Tabel Jurusan
Tabel Mengajar
Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena bahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel). Masing –masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi – relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator – operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query. 1. Operasi Selection ( σ )
48
Selection / Select (σ ), adalah operasi untuk menyeleksi tupel – tupel yang memenuhi suatu predikat, kita dapat menggunakan operator perbandingan (<,>,>=,<=,=,#) pada predikat. Beberapa predikat dapat dikombinasikan menjadi predikat majemuk menggunakan penghubung AND ( ∧ ) dan OR ( ∨ ). Contoh operasi Select: Query : Tampilkan daftar dosen yang tempat lahirnya di „Bekasi‟. Aljabar relasional: σtempat_lhr=‟Bekasi‟ (Dosen)
2. Operasi Projection ( π ) Projection / Project ( π ), adalah operasi untuk memperoleh kolom – kolom tertentu. Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom – kolom tertentu. Karena relasi adalah himpunan, maka baris – baris duplikasi dihilangkan. Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut : π colum1,…,column ( tabel) Contoh operasi Project: Query : Tampilkan nid,nama_dosen,alamat,kota dari relasi Dosen Aljabar relasional: π nid,nama_d,alamat,kota (Dosen)
3. Operasi Cartesian-Product ( X ) Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesian. Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut : R X S = {(x,y) | x ϵ R dan y ϵ S}
49
Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi, operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus memilih atribut – atribut untuk relasi yang dihasilkan dari cartesian-product. Contoh operasi Cartesian-product: Query : Tampilkan nid, nama_dosen (dari relasi Dosen), nama_mk (dari relasi Matakuliah), thn_akademik, smt, hari, jam_ke, waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester „1‟. Aljabar relasional: π nid, nama_dosen, nama_mk, thn_akademik, smt, hari, jam_ke, waktu, kelas (σ smt=1 ∧ Dosen.nid = Mengajar.nid ∧ Mengajar.kdmk = Matakuliah.kdmk (Dosen x Matakuliah x Mengajar))
4. Operasi Union (∪), Union adalah operasi untuk menghasilkan gabungan table degan syarat kedua table memiliki atribut yang sama, yaitu domain atribut ke-i masing – masing table harus sama. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut : R ∪ S = {x | x ϵ R atau X ϵ S} Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga jumlah komponennya sama.
50
Query : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) . Aljabar relasional: π nid (Dosen) ∪ nid (Mengajar)
5. Set-difference ( --- ) Set-difference ( -- ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak ada pada relasi yang lainnya. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut : R – S = { x | x ϵ R dan X ϵ S} Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan, sedangkan atribut yang sama tidak ditampilkan. Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar). Aljabar relasional: π nid (Dosen) -- nid (Mengajar)
51
6. Rename (ρ) Rename (ρ), adalah operasi untuk menyalin table lama kedalam table yang baru. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut : ρ [nama_table] (table_lama) Query : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis kelaminnya adalah „Pria‟. Aljabar relasional: ρ DosenNew (σ jkelamin=‟Pria‟) (Dosen))
Untuk operasi rename ini hasil dari perintah tersebut adalah membentuk table baru dengan nama DosenNew beserta datanya dimana jenis kelaminnya adalah „Pria‟ 7. Set-Intersection (∩) Set-intersection / Intersection (∩) termasuk kedalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasar seperti berikut: A ∩ B =A - (A– B ), atauA ∩ B = B - ( B –A) Operasi ini merupakan operasi binary, yang digunakan untuk membentuk sebuah relasi baru dengan tuple yang berasal dari kedua relasi yang dihubungkan, misalkan:
52
Query : Tampilkan nid (dari relasi Dosen) Setintersection dari nid (dari relasi Mengajar). Aljabar relasional: π nid (Dosen) ∩ nid (Mengajar)
8. Theta-join (θ) / Equi-join (⋈) Theta-join ( ) dan equi-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar Aljabar relasional: Matakuliah ⋈ Mengajar.kdmk=Matakuliah.kdmk Mengajar
9. Natural-join (⋈) Natural-join (⋈) sama seperti operasi equi-join adalah operasi untuk menggabungkan operasi selection dan Cartesian-Product dengan suatu kriteria pada kolom yang sama. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar Aljabar relasional: Matakuliah ⋈ Mengajar.kdmk=Matakuliah.kdmk Mengajar
53
10. Outer-join (
)
Outer-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama. Query : Tampilkan nid_nama_d (dari relasi Dosen) dan thn_akademik, smt, hari, jam_ke, waktu (dari relasi Mengajar) dengan outer join, artinya adalah pada kolom nid, nama_d pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan transaksi mengajar. Aljabar relasional: π nid, nama_d (Dosen)
π thn_akademik, smt, hari, jam_ke,waktu
(Mengajar)
11. Devision (÷) Devision (÷) adalah operasi yang banyak digunakan dlam query yang mencakup frase “setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tuple – tuple dari dua relasi. Query : Tampilkan nid, hari, waktu (dari relasi Mengajar) dan nid (dari relasi Dosen) dimana dosen yang jenis kelaminnya „Pria‟ dan lakukan devision pada kedua relasi tersebut.
54
Aljabar relasional: π nid,hari,waktu (Mengajar)) † (π nid (σ jkelamin=‟Pria‟ (Dosen)))
D. Tugas Praktikum 1. Berdasarkan Tabel – Tabel Tugas Praktikum Kasus 2 pada Praktikum 4 buatlah sebuah query untuk masing masing : a. join 2 table clause where b. Query dengan join on dari 3 table c. Natural join d. Outer join e. Theta Join 2. Buatlah laporan praktikum dengan ketentuan sebagai berikut : a. Nama file laporan : PrakDB_Bab8-NIM.odt b. Isi file laporan : i. Source SSQL ii. Screenshot CMD b. Simpan di directory “PrakDB-NIM” .
55
Praktikum 6 : Query Processing
A. Tujuan Mahasiswa mampu menjelaskan konsep pemrosesan query
B. Teori Database Manajemen Sistem (DBMS) adalah kumpulan dari program-program yang membolehkan user untuk menciptakan dan memelihara sebuah database. DBMS sudah menjadi peralatan standar untuk melindungi pengguna komputer dari bagian-bagian kecil dalam pengelolaan secondary storage (harddisk). DBMS didesain untuk meningkatkan produktivitas dari aplikasi para programmer dan
untuk memberikan kemudahan
pengaksesan data oleh komputer. Pengaksesan data di dalam DBMS dapat dilakukan dengan berbagai macam cara. Dan tentunya dalam melakukan pengaksesan data ada hal-hal yang perlu diperhatikan seperti ketepatgunaan implementasi dari data itu sendiri serta waktu prosesnya. Ada banyak plan (rencana) yang dapat diikuti oleh database manajemen sistem dalam memproses dan menghasilkan jawaban sebuah query. Semua plan pada akhirnya akan menghasilkan jawaban (output) yang sama tetapi pasti mempunyai harga yang berbeda-beda, seperti misalnya total waktu yang diperlukan untuk menjalankan sebuah query. Optimisasi query mencoba memberikan suatu pemecahan untuk menangani masalah tersebut dengan cara menggabungkan sejumlah besar teknik-teknik dan strategi, yang meliputi transformasi-transformasi logika dari query-query untuk mengoptimisasi jalan akses dan penyimpanan data pada sistem file. Setelah ditransformasikan, sebuah query harus dipetakan ke dalam sebuah urut-urutan operasi untuk menghasilkan data-data yang diminta.
56
Gambar 1. Tahapan proses sebuah query Sebuah query yang diekspresikan dalam sebuah bahasa query tingkat tinggi seperti SQL mula-mula harus dibaca, diuraikan dan disahkan (scanning, parsing, validating). Query tersebut kemudian dibentuk menjadi sebuah struktur data yang biasa disebut dengan query tree. Dan kemudian DBMS (Database Manajemen Sistem) harus merencanakan sebuah strategi eksekusi untuk mendapatkan kembali hasil dari query dari file-file database. Tahapan-tahapan proses dari sebuah query di dalam sebuah sistem database ditunjukkan pada gambar 1. Berikut penjelasan dari masing-masing tahapan :
Scanner melakukan identifikasi (pengenalan) token-token seperti SQL keywords, attribute, dan relation name. Proses ini disebut dengan scanning.
Query Parser mengecek kevalidan query dan kemudian menterjemahkannya ke dalam sebuah bentuk internal yaitu ekspresi relasi aljabar atau parse tree. Proses ini disebut dengan parsing.
Query Optimizer memeriksa semua ekspresi-ekspresi aljabar yang sama untuk query yang diberikan dan memilih salah satu dari ekspresi tersebut yang terbaik
57
yang memiliki perkiraan termurah. Dengan kata lain, tugas dari query optimizer adalah menghasilkan sebuah rencana eksekusi. Proses ini disebut dengan optimisasi query.
Code Generator atau Interpreter mentransformasikan rencana akses yang dihasilkan oleh optimizer ke dalam kode-kode. Setelah itu, kode-kode tersebut dikirimkan ke dalam query processor untuk dijalankan.
Query Processor melakukan eksekusi query untuk mendapatkan hasil query yang diinginkan.
Bagian yang diarsir pada gambar 1 adalah merupakan komponen utama yang berperan penting dalam proses optimisasi query yang menjadi topik utama dari seluruh pembahasan ini. Alasan dibahasnya tahapan proses query pada gambar 1 adalah sematamata untuk memberikan gambaran yang jelas tentang bagaimana pada umumnya sebuah query diproses di dalam sebuah Database Manajemen Sistem (DBMS). Pengenalan Tentang Query Sebuah query adalah sebuah ekspresi bahasa yang menggambarkan data yang akan didapatkan kembali dari sebuah database. Dalam hubungannya dengan optimisasi query, seringkali diasumsikan bahwa query-query tersebut dinyatakan dalam sebuah dasar-dasar isi dan sekumpulan cara orientasi, yang memberikan optimizer pilihan-pilihan diantara alternatif prosedur-prosedur evaluasi. Query dapat digunakan pada beberapa keadaan. Kebanyakan aplikasi nyatanya adalah permintaan-permintaan secara langsung dari user yang memerlukan informasi tentang bentuk maupun isi dari database. Apabila permintaan user terbatas pada sekumpulan query-query standar, maka query-query tersebut dapat dioptimisasi secara manual oleh pemrograman prosedur-prosedur pencarian gabungan dan membatasi input dari user pada sebuah ukuran menu. Tetapi bagaimanapun juga, sebuah sistem optimisasi query otomatis menjadi penting apabila query-query khusus ditanyakan dengan menggunakan bahasa query yang digunakan secara umum seperti SQL. Aplikasi yang kedua dari query terjadi pada transaksi-transaksi yang mengubah data yang disimpan berdasarkan nilainya saat itu. Pada akhirnya, query seperti ekspresi-ekspresi dapat digunakan secara internal dalam sebuah DBMS, sebagai contoh adalah untuk mengecek kebenaran akses dan menyamakan kebenaran akses-akses yang terjadi. Membicarakan tentang query, sangat erat hubungannya dengan cara penulisan query tersebut ke dalam sebuah bentuk bahasa yang mudah dimengerti. Pada umumnya, bahasa
58
query yang digunakan untuk mengekspresikan sebuah pernyataan dari query adalah SQL (Structure Query Language). SQL adalah sebuah bahasa database yang
luas yang memiliki statement- statement
(pernyataan) untuk definisi data, query dan update data (memperbaharui data). SQL mempunyai satu statement dasar
untuk mendapatkan kembali informasi dari sebuah
database. Statement dasar dari SQL adalah SELECT. Bentuk dasar dari statement SELECT biasa disebut dengan blok select from where yang terbentuk dari tiga macam klausa yaitu SELECT, FROM dan WHERE yang mempunyai bentuk sebagai berikut : SELECT
FROM WHERE
Dimana adalah sebuah daftar dari nama-nama attribute yang nilainilainya didapatkan oleh query. Sedangkan adalah sebuah daftar dari namanama relasi yang diperlukan oleh proses sebuah query. adalah sebuah kondisi ekspresi boolean yang mengidentifikasikan tuple-tuple yang akan dikembalikan oleh query. Selanjutnya, statement Select-From-Where akan selalu digunakan dalam
pembahasan
mengenai proses dan teknik optimisasi query nanti dengan tujuan untuk lebih memudahkan pemahaman tentang proses dan teknik optimisasi query karena statement tersebut merupakan statement dasar yang mudah dimengerti dan umum digunakan.
Hubungan Database Dengan Pemrosesan Query Database adalah kumpulan dari data-data yang berhubungan satu sama lainnya yang digunakan untuk pencarian suatu data tertentu pada saat SQL query dijalankan. Sebuah database dirancang, dibuat dan ditempati oleh data dengan tujuan tertentu. Di dalam sistem database relasional, tabel-tabel dari database saling berhubungan satu sama lainnya. Dan sebuah tabel database akan selalu memiliki attribute names (nama-nama attribute), relation names (nama-nama relasi), dan tuples (record-record). Untuk lebih jelasnya, pada gambar 2 diberikan sebuah tabel database yang lengkap dengan attribute, relation name dan tuples.
59
Gambar 2. Attributes dan tuples dari relasi STUDENT Attribute digunakan untuk mengidentifikasikan sebuah nama yang diikutsertakan dalam relasi dan menspesifikasikan domain (tipe data sederhana yang menentukan sebuah pemisahan data). Sedangkan tuples adalah kumpulan dari record-record di dalam sebuah database. Relation name mendefinisikan attribute-attribute yang diperlukan dalam predikat dan mendefinisikan arti dari predikat tersebut.
Sistem Katalog Dalam Database Manajemen Sistem (DBMS) Sistem katalog adalah sebuah sistem yang digunakan untuk menyimpan informasiinformasi mengenai suatu database. Informasi yang disimpan dalam sebuah katalog dari sebuah relasional database manajemen sistem meliputi relation names, attribute names, dan attributes domains (tipe-tipe data), gambaran dari batasan-batasan (primary key, secondary key, foreign key, NULL/NOT NULL dan tipe-tipe dari batasan-batasan lainnya), dan bentuk-bentuk penyimpanan dan index-index. Query optimizer melakukan akses pada katalog untuk jalan akses, implementasi (pelaksanaan) informasi, dan data statistik untuk menentukan jalan terbaik untuk menjalankan sebuah query.
Tabel 1. Contoh Katalog yang Menyimpan Informasi tentang Database Sebagai contoh, optimizer mengakses katalog untuk mengecek field-field
mana dari
sebuah relasi yang memiliki akses hash atau akses index-index, sebelum memutuskan bagaimana untuk menjalankan sebuah kondisi pilihan ataupun kondisi join pada relasi. Contoh dari sebuah katalog yang menyimpan informasi tentang database dapat dilihat pada tabel 1.
60
Optimisasi Query Optimisasi Query adalah suatu proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut danapakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimisasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif. Optimisasi query mencakup beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data. Optimisasi query merupakan bagian dasar dari sebuah sistem database dan juga merupakan suatu proses untuk menghasilkan rencana akses yang efisien dari sebuah query di dalam sebuah database. Secara tidak langsung, sebuah rencana akses merupakan sebuah strategi yang nantinya akan dijalankan untuk sebuah query, untuk mendapatkan kembali operasioperasi yang apabila dijalankan akan menghasilkan database record query. Ada tiga aspek dasar yang ditetapkan dan mempengaruhi optimisasi query, yaitu : search space, cost model dan search strategy. Search space adalah sekumpulan rencana-rencana akses yang sama secara logika yang dapat digunakan untuk mengevaluasi sebuah query. Semua rencana-rencana dalam search space query mengembalikan hasil yang sama biarpun beberapa rencana lebih efisien dibandingkan dengan rencana yang lainnya. Cost model menandakan sebuah harga untuk tiap rencana dalam search space. Harga dari rencana tersebut adalah sebuah perkiraan dari sumber-sumber yang digunakan pada saat rencana dijalankan, dimana harga yang lebih rendah, merupakan yang terbaik dari rencanarencana yang ada. Search strategy adalah sebuah perincian dari rencana-rencana mana dalam search space yang akan diperiksa. Apabila search space-nya kecil, maka strategi yang dapat diteruskan adalah menghitung dan mengevaluasi setiap rencana. Meskipun kebanyakan search space bahkan untuk query-query yang sederhana adalah sangat besar, akan tetapi query optimizer selalu memerlukan aturan heuristik untuk mengontrol nomer dari rencana-rencana yang akan diperiksa.
Sejarah Singkat Optimisasi Query Optimisasi query lahir sejak sebelum tahun 1970. Pada saat itu yang dikenal dengan jaman kegelapan (dark age), optimisasi query masih dilakukan secara manual oleh manusia. Selain itu, pada jaman tersebut database relasional juga belum dikenal sehingga diperlukan seseorang yang benar-benar ahli dalam database untuk melakukan optimisasi
61
query. Jadi pada jaman kegelapan hingga tahun 1970an, optimisasi query masih dilakukan oleh manusia dan masih menggunakan cara yang benar-benar kuno. Seiring dengan perkembangan jaman di mana teknologi menjadi semakin maju, maka sekitar pertengahan tahun 1970-an sampai pada pertengahan tahun 1980-an optimisasi query tidak lagi dilakukan secara manual, tetapi dilakukan oleh suatu sistem yang dikenal dengan sistem R yang kemudian menjadi berkembang pada optimisasi perintah JOIN, sekumpulan tahapan untuk optimisasi query selanjutnya. Hingga saat ini, optimisasi query terus berkembang bersamaan dengan bermunculannya teknik-teknik baru yang digunakan dalam proses optimisasi query meskipun pada dasarnya hanya ada dua macam teknik utama yang biasanya digunakan dalam mengoptimisasi sebuah query. Bisa dikatakan bahwa optimisasi query merupakan tulang punggung dari sebuah sistem karena ketepatgunaan suatu sistem sangat tergantung dari optimizernya. Hampir semua DBMS menggunakan sistem optimisasi query untuk mengurangi waktu eksekusi query sehingga kerja sistem dapat dioptimalkan dan penggunaan sumber-sumber dapat diminimumkan. Selain itu, akes dari disk yang sangat lambat dibandingkan dengan akses memory membuat optimisasi query menjadi semakin penting.
Tujuan Optimisasi Query Prinsip ekonomi yang diperlukan untuk sebuah query adalah mengoptimisasi rosedurprosedur, mencoba untuk memaksimumkan output dari sejumlah sumber-sumber yang diberikan ataupun untuk meminimumkan penggunaan sumber untuk memberikan output. Tujuan dari optimisasi query adalah berbeda-beda untuk setiap sistem. Ada yang menggunakan optimisasi query untuk meminimumkan waktu proses sedangkan pada situasi lain bisa juga optimisasi query diperlukan untuk waktu respon, meminimumkan I/O dan meminimumkan penggunaan memory. Tetapi pada dasarnya, tujuan dari optimisasi query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.
Join Operasi Join, Join
merupakan
operasi
yang digunakan
untuk
menggabungkan
dua tabel atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal dari tabel-tabel tersebut.
Pada
join
sederhana,
tabel-tabel
digabungkan
dan
didasarkan pada pencocokan antara kolom pada tabel yang berbeda. Pada MySQL, perintah join ada beberapa macam yaitu :
62
– Inner Join – Outer Join – Cross Join – Union Join
Inner Join Inner join merupakan jenis join yang paling umum yang dapat digunakan pada semua database. Jenis ini dapat digunakan bila ingin merelasikan dua set data yang ada di tabel, letak relasinya setelah pada perintah ON pada join. Bentuk baku perintah inner join : SELECT ,, FROM INNER JOIN ON =
Contoh : – Tampilkan nip, nama dan gaji semua pegawai. select i.nip,i.nama,p.gaji from infoprib i inner join pekerjaan p on i.nip = p.nip; Outer Join Outer join merupakan jenis join yang sedikit berbeda dengan inner join. Pada MySQL, bentuk perintah untuk menerapkan outer join ada 2 yaitu : SELECT ,, FROM LEFT JOIN ON = dan SELECT ,, FROM RIGHT JOIN ON = Left join digunakan dalam situasi ketika ingin mengembalikan semua elemen data set A, terlepas dari apakah nilai kunci ada dalam data set B. Right join digunakan dalam situasi ketika ingin mengembalikan semua elemen data set B, terlepas dari apakah nilai kunci ada dalam data set A. Contoh : – Tampilkan nip, nama dan gaji semua pegawai select i.nip,i.nama,p.gaji from infoprib i left join pekerjaan p on i.nip = p.nip;
63
Pada contoh diatas, tabel infoprib sebagai tabel yang posisinya di kiri sedangkan tabel pekerjaan berada pada posisi sebelah kanan. Sehingga bila perintah diatas diganti dengan: select i.nip,i.nama,p.gaji from infoprib i left join pekerjaan p on i.nip = p.nip; hasilnya akan berkebalikan dengan left join. Untuk lebih memahami, perhatikan diagram dibawah ini.
Bila ingin menampilkan semua data yang ada di tabel sebelah kiri baik yang mempunyai pasangan ataupun yang tidak mempunyai pasangan dengan data pada tabel di sebelah kanan, maka gunakan left join. Sedangkan bila yang terjadi adalah kebalikannya, yaitu ingin menampilkan semua data yang ada di sebelah kanan baik yang mempunyai pasangan ataupun yang tidak mempunyai pasangan dengan data pada tabel di sebelah kiri, maka gunakan right join.
Cross Join Cross join kadangkala disebut juga sebagai
Cartesian Product. Bila
menggunakan cross join, maka hasil dari cross join akan menciptakan hasil yang didasarkan pada semua kemungkinan kombinasi baris dalam kedua set data. Dengan demikian, jumlah baris yang dikembalikan adalah N M , dimana N✕ adalah jumlah baris dalam kumpulan data A dan M jumlah baris dalam kumpulan data B. Jelas, jumlah baris dalam cross join dapat menjadi sampah.
Bentuk perintah dari cross join adalah : SELECT ,, FROM CROSS JOIN atau SELECT ,, FROM , Sebagai contoh adalah : – Tampilkan nip, nama dan gaji semua pegawai select i.nip,i.nama,p.gaji from infoprib i cross join pekerjaan p; select i.nip,i.nama,p.gaji from infoprib i, pekerjaan p;
64
Union Join Union didukung oleh MySQL mulai dari versi 4.0. Pemakaian union dapat menyederhanakan perintah persyaratan OR yang bertingkat. Bila dalam sebuah query menghasilkan pemakaian perintah OR yang lebih dari satu sehingga dapat membuat bingung, sebagai gantinya digunakan perintah UNION. Union dapat dikatakan sebagai perintah untuk menggabungkan hasil query sql yang fungsinya sama dengan perintah OR. Agar lebih jelas, perhatikan contoh berikut ini.
Contoh : – Tampilkan nip, nama dan gaji dari pegawai yang bekerja di bagian akuntansi dan SDM. (anggap saja perintah sql yang digunakan sudah kompleks) Bila menggunakan perintah OR, maka perintah sqlnya akan seperti dibawah ini : select
i.nip,i.nama,p.gaji
from
infoprib
i
join
pekerjaan p on i.nip=p.nip where p.kode_bag="3" or p.kode_bag="4"; Tetapi perintah OR dapat diganti dengan perintah UNION dan bila di jalankan akan menghasilkan hal yang sama. (select i.nip,i.nama,p.gaji from infoprib i join pekerjaan p on i.nip=p.nip where p.kode_bag="3") UNION (select i.nip,i.nama,p.gaji from infoprib i join pekerjaan p on i.nip=p.nip where p.kode_bag="4")
Subquery Sub Query adalah query didalam query. Artinya seleksi data berdasarkan dari hasil seleksi data yang telah ada. Sintak SQL nya sama dengan sintak SQL pada umumnya, hanya saja kondisi setelah where atau from diikuti dengan query baru atau sub query. Sintak SQL nya sebagai berikut:
Di bawah ini adalah contoh penggunaan subquery:
65
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
Dari contoh tersebut, SELECT * FROM t1 ... merupakan query yang paling luar (outer query), dan SELECT column1 FROM t2) merupakan subquery. Bisa dikatakan bahwa subquery adalah sekumpulan query yang ada di outer query, sehingga ada kemungkinan subquery terdapat dalam subquery lagi dan kemudian setumpukan subquery tersebut ada di sebuah query. Subquery bisa diibaratkan anaknya, dan outer query adalah induknya. Keuntungan utama dari subquery adalah:
Subquery membuat query-query menjadi tersusun, sehingga ada kemungkinan untuk memisahkan / memberi batasan area untuk setiap bagian statement.
Subquery menyediakan cara alternatif untuk menjalankan operasi-operasi yang dalam keadaan lain akan membutuhkan JOIN dan UNION yang kompleks.
Subquery lebih mudah dibaca dibanding JOIN atau UNION yang kompleks.
Sebuah subquery bisa mengembalikan scalar (single value/satu nilai), single row (satu baris), single column (satu kolom), atau table (satu/lebih baris dari satu/lebih kolom). Ada beberapa batasan untuk tipe statement yang subquery bisa digunakan di dalamnya. Sebuah subqeury dengan SELECT yang biasa dapat berisikan: DISTINCT, GROUP BY, ORDER BY, LIMIT, joins, indexhints, UNION,comments, dan fungsi-fungsi lainnya. Sedangkan, outer statement (statement yang paling luar) yang memiliki subquery tidak hanya bisa menggunakan SELECT saja, tapi dia juga bisa menggunakan INSERT, UPDATE, DELETE, SET, atau DO.
Penggunaan Perbandingan (Comparison) untuk Subquery Pada umumnya, jika terdapat fungsi perbadingan di subquery, bentuk querynya akan sebagai berikut: non_subquery_operand comparison_operator (subquery) Dimana comparison_operator adalah salah satu dari operator-operator di bawah ini: = > < >= <= <> != <=> Contohnya adalah:
... WHERE 'a' = (SELECT column1 FROM t1)
66
MySQL juga mendukung bentuk comparison seperti di bawah ini:
non_subquery_operand LIKE (subquery)
Di bawah ini terdapat pula contoh subquery yang menggunakan comparison dan tidak menggunakan hubungan JOIN di dalamnya. Query ini mengambil semua baris di tabel t1 dimana kolom nilai dari column1 ada sama dengan nilai maksimum dari column2 yang ada di tabel t2:
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2);
Penggunaan Subquery SELECT Setelah FROM Subquery dengan statement SELECT selain bisa digunakan setelah operator comparison, juga bisa digunakan setelah FROM. Sintaksnya adalah sebagai berikut:
SELECT ... FROM (subquery) [AS] name ...
Tulisan [AS] name adalah wajib dicantumkan, karena setiap tabel setelah kata FROM harus memiliki nama. Setiap nama kolom di subquery select harus memiliki nama yang unik. Di bawah ini adalah bagaimana penggunaan subquery setelah FROM.
SELECT sb1,sb2,sb3 FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb WHERE sb1 > 1;
Di bawah ini adalah contoh lain penggunaan subquery setelah FROM. Karena AVG(SUM(column1)) tidak bisa dilakukan. Maka, SUM(column1) dibuat menjadi subquery setelah FROM.
SELECT AVG(sum_column1) FROM (SELECT SUM(column1) AS sum_column1 FROM t1 GROUP BY column1) AS t1;
67
Sedangkan, subquery (sum_column1) bisa dipanggil oleh outer query yang membutuhkan, contohnya untuk dihitung AVERAGE-nya seperti contoh di atas.
C. Praktikum QUERY PROCESSING MEMBUAT DATABASE DAN TABLE Contoh:
Misalkan kita ingin menyimpan data anggota yaitu: nomor, nama, email, alamat, kota. Sedangkan strukturnya seperti tabel dibawah ini:
Data yang diinginkan
Menggunakan phpMyAdmin Merupakan software yang digunakan untuk membuat dan ygg memaintenance database. Kita dapat mengakses database MySQL dengan account kita di phpMyAdmin. Pastikan server MySQL dan program phpMySQL sudah berjalan. Uuntuk membuka tampilan phpMyAdmin di komputer lokal melalui URL komputer lokal melalui URL http://localhost/phpmyadmin/
Masukkan login sebagai root atau sesuai dengan user yang sudah dibuat
68
Menentukan field dan type data
Contoh Tabel
Create Tabel dengan phpmyadmin
69
Perintah MySQL untuk membuat tabel seperti diatas adalah:
Untuk memasukkan sebuah baris (record) kedalam tabel MySQL adalah sebagai berikut:
Untuk menghapus suatu record dengan kriteria tertentu digunakan perintah sebagai berikut: Contoh: Menghapus record dari tabel anggota yang bernomor „3‟ delete from anggota where nomor=3; DELETE FROM anggota; (Menghapus seluruh record anggota)
Untuk memodifikasi (merubah) isi record tertentu adalah dengan menggunakan perintah dengan menggunakan perintah sebagai berikut:
Contoh: Merubah e-mail dari anggota yang bernomor 12 menjadi „[email protected]‟ dalam tabel anggota.
Untuk merubah kolom kota menjadi „surabaya‟ semuanya dalam tabel anggota
Isi tabel dapat ditampilkan dengan menggunakan perintah SELECT, cara penulisan perintah SELECT adalah:
70
select nm_kolom from namatable;
OPTIMISASI QUERY JOIN Pada praktikum ini kita akan menggunakan dua buah tabel bernama Karyawan dan Departemen dengan relationship bekerja pada. Struktur tabelnya diperlihatkan sebagai berikut: CREATE TABLE karyawan ( nama varchar(30) NOT NULL, id_dep int(5) NOT NULL ) ENGINE=MyISAM; CREATE TABLE departemen ( id_dep int(5) NOT NULL, nama_dep varchar(30) NOT NULL, PRIMARY KEY (id_dep) ) ENGINE=MyISAM;
Syntax tersebut kita ketikkan pada Notepad kemudian simpan dengan nama yang diinginkan dan jangan lupa menggunakan ekstensi sql (*.sql) Seperti berikut :
Setelah tersimpan dengan ekstensi *.sql kita tinggal memanggil file tersebut pada program MySQL. Dan membuka program Mysql dapat dengan cara Start button All Programs MySQL MySQL Server 5.2 MySQL Command Line Client.
71
Setelah itu kita harus membuat/menggunakan database yang sudah ada, dengan cara mengetikkan script use [nama_databasenya], seperti dibawah : Setelah terdapat keterangan “Database changed” maka database tersebut sudah bisa digunakan. Kemudian kita akan memanggil file sql yang telah kita buat dengan menggunakan syntax “ \. [alamat file berada]“. a. Copy alamat tempat file berada.
b. Kemudian paste di MySQL Command Line nya (dan jangan lupa di tambahi dengan mengetik slash “\” kemudian nama file nya) Enter .
c. Setelah muncul keterangan Query OK, maka itu tandanya berhasil. d. Kemudian masukkan data tabelnya, dengan cara mengetikkan syntax berikut dengan notepad. INSERT INTO karyawan values ("Agus",10), ("Budi",16), ("Citra",12), ("Dani",17); INSERT INTO departemen values (10,"Penelitian"), (11,"Pemasaran"), (12,"SDM"), (13, "Keuangan");
e. Simpan dengan langkah sebelumnya. Kemudian panggil pada MySQL CL nya.
72
Inner Join a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner1.sql SELECT * FROM karyawan INNER JOIN departemen ON karyawan.id_dep= departemen.id_dep ;
b. Panggil pada MySQL CL
c. Setelah itu kita akan mencoba menggunakan syntax bentuk Implisit. Bentuk Bentuk implisit dari inner join diperlihatkan sebagai berikut: SELECT * FROM karyawan, departemen WHERE karyawan.id_dep= departemen.id_dep ;
d. Simpan dengan nama inner2.sql dan panggil melalui MySQL CL nya.
Dalam pengambilan data ini, kita juga bisa menspesifikasikan field terkait. Sebagai contoh, hanya mengambil nama karyawan dan namadepartemen saja. e. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner3.sql SELECT karyawan.nama, departemen.nama_dep FROM karyawan INNER JOIN departemen ON karyawan.id_dep= departemen.id_dep ;
f. Panggil melalui MySQL CL nya.
73
Agar penulisan SQL lebih efisien, kita dapat memanfaatkan fitur “derivedtable” (atau alias). g. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner4.sql SELECT k.nama, d.nama_dep FROM karyawan k INNER JOIN departemen d ON k.id_dep= d.id_dep ;
h. Panggil melalui MySQL CL nya.
Pada pernyataan SQL di atas, tabel karyawan dinotasikan dengan huruf kdan tabel departemen menggunakan huruf d. Outer Join Left Outer Join a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama outer1.sql SELECT * FROM karyawan k LEFT OUTER JOIN departemen d ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Apabila diperlukan, kita juga dapat menggunakan klusa WHERE di dalamjoin. Sebagai contoh, untuk mendapatkan data karyawan yang tidakmemiliki departemen. c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama outer2.sql SELECT * FROM karyawan k LEFT OUTER JOIN departemen d ON k.id_dep= d.id_dep WHERE d.id_dep IS NULL ;
74
d. Panggil melalui MySQL CL nya.
Right Outer Join a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama router.sql SELECT * FROM karyawan k RIGHT OUTER JOIN departemen d ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Full Outer Join a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama router.sql SELECT * FROM karyawan k RIGHT OUTER JOIN departemen d ON k.id_dep= d.id_dep UNION SELECT * FROM karyawan k RIGHT OUTER JOIN departemen d ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Cross Join a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross.sql
75
SELECT * FROM karyawan CROSS JOIN departemen ;
b. Panggil melalui MySQL CL nya.
Cross join juga dapat direpresentasikan dalam bentuk implisit. c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross1.sql SELECT * FROM karyawan, departemen ;
d. Panggil melalui MySQL CL nya.
SUBQUERY
Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?
76
Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?
Tampilkan nama pegawai beserta jumlah penjagaan transaksi paling banyak.
77
D. Tugas Praktikum Perhatikan, dalam mengerjakan tugas praktikum ini, sebaiknya pernyataan SQL disimpan di file untuk kemudian dieksekusi. Tugas praktikum ini menggunakan tabel-tabel yang sudah dibuat sebelumnya. Berikut adalah data-data tabel yang akan digunakan (sesuaikan nilainya agar sama persis). Tabel Mahasiswa
Tabel ambil_mk
78
Tabel Matakuliah
1. Dapatkan banyak mahasiswa yang mengambil matakuliah. Selesaikan dengan pendekatan join eksplisit dan implisit.
2. Kelompokan data mahasiswa yang tidak mengambil matakuliah berdasarkan jenis kelaminnya, kemudian hitung banyaknya.
3. Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta kode_mk dan nama_mk yang diambilnya. Selesaikan dengan pendekatan join eksplisit dan implisit.
4. Dapatkan nim, nama, dan total sks yang diambil oleh mahasiswa, Dimana total sksnya lebih dari 4 dan kurang dari 10.
79
5. Dapatkan data matakuliah yang tidak diambil oleh mahasiswa terdaftar (mahasiswa yang terdaftar adalah mahasiswa yang tercatat di tabel mahasiswa).
6. Buatlah database baru dengan nama Universitas. Lalu didalamnya terdapat tabel-tabel berikut : Tabel Instruktur nip nama_ins jurusan asal_kota 1
Muhammad Akbar
Ilmu Sejarah
Malang
2
Saichul Fitrian A.
Ilmu Komputer
Malang
3
Annafia Oktafian
Ilmu Komputer
Klaten
4
Budy Pratama
Ilmu Komputer
Magelang
Tabel matakuliah kd_mk nama_mk
sks
PTI101 Algoritma dan Pemograman
3
PTI102 Basis Data
3
PTI103 Visual Basic
3
IS101
3
Sejarah Indonesia
Tabel ambil_mk nip kd_mk
ruangan
jml_mhs
3
PTI101
H5211
40
2
PTI102
H5212
45
2
PTI103
H5206
40
1
IS101
I7312
30
a. Tampilkan kd_mk dan mata kuliah yang jumlah mahasiswanya 40. b. Tampilkan data Instruktur yang mengajarkan „Basis Data‟. c. Tampilkan data Instruktur yang tidak mengajar.
80
2. Buatlah tabel seperti di bawah ini. Tabel Customer customer_id
customer_name
customer_addres
CS001
Aan
Pasuruan
CS002
Hanif
Banyuwangi
CS003
Mirza
Malang
CS004
Tanti
Tegal
CS005
Budie
Kediri
Tabel Orders order_id
order_date
customer_id
qty
amount
CS001
10-12-2016
CS001
1
40000
CS002
11-01-2017
CS002
2
50000
CS003
12-01-2017
CS005
3
35000
Gabungkan kedua tabel tersebut dengan JOIN dan UNION
DAFTAR PUSTAKA Henry F. Korth, Abraham Silberschatz. 2011. Database system concepts 6th Edition. McGraw-Hill Raghu Ramakrishnan and Johannes Gehrke. 2003. Database Management Systems Third Edition. McGraw-Hill 3. C. J. Date. 2006. An Introduction to Database Systems 8th. Pearson Education Jeffrey Ullman, Jennifer Widom, and Hector Garcia-Molina. 2013. Database Systems: Pearson New International Edition: The Complete Book.
82