• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM BASIS DATA MODUL 5 REL

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM BASIS DATA MODUL 5 REL"

Copied!
37
0
0

Teks penuh

(1)

LAPORAN MODUL V

PRAKTIKUM BASIS DATA

Disusun untuk Memenuhi Matakuliah Praktikum Basis Data Dibimbing oleh Triyanna Widyaningtyas, S.T., M.T.

Oleh:

Eva Yulia Safitri

(160533611462)

Karina Aulia Faradila

(160533611413)

S1 PTI’1

6 OFF B

UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

(2)

MODUL 5

RELASI & JOIN

A. TUJUAN

➢ Memahami keterhubungan entitas di dalam basis data.

➢ Memahami jenis-jenis operasi pengambilan data di beberapa entitas.

➢ Mampu menyelesaikan kasus retrieval yang melibatkan lebih dari satu entitas.

➢ Memahami fungsi Union pada mysql.

B. DASAR TEORI

1. Relationship

Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini sangat penting sekali di dalam basis data, di mana memungkinkan entitas-entitas untuk saling berhubungan satu sama lain.

Didalam sebuah relationship, primary key memiliki peran penting untuk mengaitkan entitas. Selain itu, primary key juga digunakan untuk mendefinisikan batasan keterhubungan.

2. Join

Join merupakan salah satu kontruksi dasar dari SQL dan basis data. Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih table di dalam basis data relasional dan menghasilkan sebuah tabel (temporary) baru yang disebut sebagai joined tabel.

Join dapat diklarifikasikan ke dalam dua jenis, yaitu inner join dan outer join. a. Inner Join

Inner join pada dasarnya adalah menemukan persimpangan (intersection) antara dua buah tabel. ipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key yang terkait saja - jika ada, dan jika tidak maka row tersebut tidak akan muncul.

Kalau tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.

(3)

Inner join juga dapat direpresentasikan dalam bentuk implisit sebagai berikut :

Misalkan terdapat table A dan B, maka hasil inner join dapat diperlihatkan sebagai bidang terasir dalam diagram Venn seperti Gambar 1.

b. Outer Join

Outer join dibagi ke dalam tiga jenis, yaitu left outer join,right outer join dan full outer join.

Left Outer Join

Left outer join atau left join mengembalikan semua nilai dari table kiri ditambah dengan nilai dari tabel kanan yang sesuai atau NULL jika tidak ada nilai yang sesuai.

Sintaks left outer join diperlibatkan sebagai berikut :

(4)

Right Outer Join

Right outer atau right join pada dasarnya sama seperti left join, namun dalam bentuk terbalik, kana dan kiri.

Sintaks right outer join diperhatikan sebagai berikut :

Right outer join antara table A dan B dapat diilustrasikan dalam diagram Venn seperti Gambar 3.

Full outer join

Full outer join atau full join pada hakikatnya merupakan kombinasi dari left dan right join.

(5)

Bentuk visual dari full outer join dapat diperlihatkan menggunakan diagram Venn seperti Gambar 4.

Selain empat jenis join yang utama di atas, masih ada beberapa variasi join lainnya, seperti CROSS JOIN (cartesian product), NATURAL JOIN dan sebagainya.

Perlu juga diperhatikan, join bisa diimplementasikan dalam bentuk bersarang (nested join). Jadi, di dalam sebuah operasi join bisa terdapat operasi join lainnya

3. Union .

MySQL Union adalah statemaen yang mengkombinasikan dua buah atau lebih resulset dari beberapa table dengan statemen SELECT sehingga menjadi satu buah resulset. Union Statemen memiliki beberapa ketentuan sebagai berikut :

a. Jumlah kolom/field dari setiap statemen SELECT harus sama.

b. Tipe data kolom/field dari setiap statemen SELECT harus kompatibel.

(6)
(7)

C. LATIHAN

1. Relationship

Dalam latian ini digunakan dua buah table bernama karyawan dan departemen dengan relationship bekerja pada. Struktur tabelnya diperlihatkan sbagai berikut :

(8)

2. Inner Join

Sebagaimana dijelaskan, Inner join akan mengembalikan data di tabel A dan B yang sesuai. Sebagai contoh, untuk mendapatkan data karyawan yang memiliki departemen, eksekusi pernyataan atau perintah SQL berikut :

Hasil eksekusi :

(9)

Hasil eksekusi :

Bandingan hasil eksekusi perintah SQL yan menggunakan INNER JOIN dengan yang menggunakan bentuk implisitnya !

(10)

Hasil eksekusi :

Perhatikan bahwa untuk menampilkan field tertentu saja, maka nama field tersebut harus disebutkan secara eksplisit beserta nama tabel tempat field.

Agar penulisan SQL lebih efisien, kita dapat memanfaatkan fitur “derived table”

(11)

Hasil eksekusi :

(12)

3. Outer Join Left Outer Join

Contoh penggunaan LEFT OUTER JOIN adalah sebagai berikut :

Hasil eksekusi :

(13)

Apabila diperlukan, kita juga dapat menggunakan klausa WHERE di dalam join. Sebagai contoh, untuk mendapatkan data karyawan yang tidak memiliki departemen, eksekusi perintah SQL berikut :

Hasil elsekusi :

(14)

Ringht Outer Join

Contohnya penggunaan RIGHT OUTER JOIN adalah sebagai berikut :

Hasil eksekusi :

Perhatikan kembali baris ketiga dan keempat pada hasil eksekusi di atas, apa yang menyebabkan timbulnya NULL value ?

(15)

Beberapa DBMS tidak mendukung fungsional full outer join. Meski demikian, join ini dapat disimulasikan dengan manfaat UNION. Tekniknya ialah dengan menggabungkan left join dan right join seperti perintah SQL berikuut :

(16)

Cross Join

Cross Join pada hakikatnya merupakan inner join dimana kondisi join selalu dievaluasi true. Secara matematis, jika A dan B merupakan dua himpunan, maka cross join-nya sama dengan X.

Contoh penggunaan CROSS JOIN adalah sebagai berikut :

(17)

Atau dalam bentuk implisitnya :

(18)

4. Union

Buatlah tabel baru bernama karyawan2 pada database yang sama. Data tabelnya adalah sebagai berikut :

Setelah itu coba lakukan penggabungan dengan perintah :

(19)

Lakukan perintah yang sama namun menggunakan UNION ALL. Jelaskan apa perbedaan fungsi ONION dan ONION ALL.

(20)

Perintah UNION digunakan untuk menggabungkan isi dari 2 (dua) tabel atau lebih. Berbeda dengan perintah UNION, perintah UNION ALL menggabungkan keseluruhan data walaupun data tersebut mempunyai isi yang sama.

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).

(21)

Tabel Matakuliah

Kode_mk Nama_mk Sks Semester PTI447 Praktikum Basis Data 1 3

TIK342 Praktikum Basis Data 1 3 PTI333 Basis Data Terdistribusi 3 5 TIK123 Jaringan Komputer 2 5 TIK333 Sistem Operasi 3 5 PTI123 Grafika Multimedia 3 5 PTI777 Sistem Informasi 2 3 Langkah – langkah :

1. Pilih database db2_6_praktikum. Kemudian pilih tabel mahasiswa , kemudian hapus semua data yang ada didalamnya. Lalu masukkan data seperti di bawah

 Tabel mahasiswa

(22)

 Untuk tabel ambil_mk, tidak bisa dihapus dan diedit. Oleh karena itu kita buat tabel baru dengan nama ambil_mk2

Hasil :

 Untuk tabel matakuliah, kita tidak perlu mengedit karena data yang diisikan sudah sesuai.

1. Dapatkan banyak mahasiswa yang mengambil matakuliah. Selesaikan dengan pendekatan join eksplisit dan implisit

(23)

- Implisit

 Hasil eksekusi

 Penjelasan :

Pada soal diatas penggabungan dua tabel menggunakan INNER JOIN, yaitu menggabungkan tabel makasiswa dan tabel ambilmk2 hanya yang mempunyai nim sama.yaitu menggunakan ON mahasiswa.nim = ambilmk2.NIM. Lalu DISTINCT berfungsi untuk menghilangkan duplikasi data pada field nim di tabel mahasiswa. Lalu jumlah dari mahasiswa yang mengambil matkul dihitung menggunakan COUNT. Lalu muncul lah hasil eksekusi bahwa mahasiswa yang mengambil matkul sebanyak 3 orang.

(24)

2. Kelompokan data mahasiswa yang tidak mengambil matakuliah nerdasarkan jenis kelaminnya, kemudian hitung banyaknya

 Hasil eksekusi

 Penjelasan

Pada soal di atas penggabungan dua tabel menggunakan LEFT OUTER JOIN, artinya menggabungkan semua data pada field nim di tabel mahasiswa dan dan data yang sama dengan field nim di tabel mahasiswa pada nim di tabel ambilmk2 menggunakan ON mahasiswa.nim = ambilmk2.NIM. Lalu WHERE ambilmk2 NIM IS NULL digunakan untuk mencari mahasiswa yang tidak mengambil matakuliah. COUNT digunakan untuk menghitung jenis kelamin yang ditampilkan. Lalu pengelompokan berdasarkan jenis kelamin menggunakan GROUP BY

(25)

 Eksplisit

 Hasil eksekusi

 Implisit

(26)

 Penjelasan

Pada soal diatas, kita menggabungkan tiga tabel, yang pertama kita menggabungkan tabel matakuliah dengan tabel ambilmk2 dengan menggunakan INNER JOIN berdasarkan kode_mk dengan menggunakan sintaks ON matakuliiah.kode_mk= ambilmk2.kode_mk. Lalu dua tabel yang telah digabungkan tadi digabung dengan tabel mahasiswa menggunakan INNER JOIN berdasarkan NIM dengan sintaks ON mahasiswa.nim = ambilmk2.NIM. Lalu untuk menampilkan nim, nama,kode matakuliah kita menggunakan sintaks SELECT mahasiswa,NIM,NAMA,matakuliah.kode_mk,nama_mk. Untuk menulis field yang memiliki nama yang sama tetapi pada tabel yang berbeda, kita harus menuliskan terlebih dahulu nama tabelnya kemudian baru nama fieldnya.

4. Dapatkan nim,nama, dan total sks yang diambil oleh mahasiswa. Dimana total sksnya lebih dari 4 dan kurang dari 10

(27)

 Penjelasan

Pada soal di atas kita menggabungkan 3 tabel, yang pertama kita gabung adalah tabel matakuliah dengan tabel ambil_mk dengan INNER JOIN berdasarkan kode_mk menggunakan ON matakuliah.kode_mk = ambilmk2.NIM . kemudian tabel tersebut digabung dengan tabel mahasiswa dengan INNER JOIN berdasarkan NIM yaitu dengan ON mahasiswa.nim = ambilmk2.NIM. kemudian kita menggunakan HAVING SUM (SKS)>4 AND SUM (sks)<10 yaitu untuk menseleksi data yang dikeluarkan berupa data yang jumlah sksnya lebih dari 4 dan kurang dari 10. Kemudian dikelompokkan berdasarkan nama dengan GROUP BY.

5. Dapatkan data matakuliah yang tidak diambil oleh mahasiswa terdaftar (mahasiswa yang terdaftar adalah mahasiswa yang tercatat di tabel mahasiswa)

(28)

 Penjelasan

Kita menggabungkan 3 tabel dengan menggunakan LEFT OUTER JOIN, pertama kita gabungkan tabel mahasiswa dengan tabel ambilmk2 berdasarkan nim dengan sintaks ON mahasiswa.nim= ambilmk2.NIM. kemudian digabungkan dengan tabel matakuliah dengan LEFT OUTER JOIN berdasarkan kode_mk dengan sintaks ON matakuliah.kode_mk = ambilmk2.kode_mk. Kemudian penggabungan tiga tabel tersebut ditampilkanoleh SELECT matakuliah.kode_mk, nama_mk,sks,semester. Lalu untuk menampilkan matakuliah yang tidak diambilpleh mahasisiwa terdaftar menggunakan WHERE mahasiswa .nim IS NULL.

E. TUGAS RUMAH

1. Buatlah database baru dengan nama Universitas. Lalu didalamnya terdapat tabel-tabel berikut :

(29)

Hasil eksekusi :

 Membuat tabel baru Matakuliah dan memasukan data

(30)

 Membuat tabel baru ambil_mk dan memasukan data

Hasil eksekusi :

a. Tampilkan kd_mk dan matakuliah yang jumlah mahasiswannya 40

(31)

 Penjelasan

Pada soal diatas kita menggabungkan tabel matakuliah dan tabel ambilmk2 dengan INNER JOIN berdasarkan kode_mk dengan sinntaks ON matakuliah.kode_mk = ambilmk2.kd_mk. Setelah digabung maka akan ditampilkan dengan SELECT ambil_mk.kdmk, nama_mk,jml_mhs. Kemudian untuk menampilkan jumlah mahasiswa samadengan 40 menggunakan kondisi WHERE jml_mhs = 40

b. Tampilkan data Instruktur yang mengajarkan “Basis Data”

 Hasil eksekusi

 Penjelasan

Pada soal diatas terdapat tiga tabel yang digabungkan pertama kita menggabungkan tabel matakuliah dengan tabel ambilmk2 dengan INNER JOIN. Kemudian penggabungan dua tabel tersebut digabung dengan tabel instruktur. Hasilnya akan ditampilkan dengan SELECT instrukutur.NIP,nama_ins,jurusan,asal_kota,nama_mk. Kemudian utnuk mendapatkan nama matakuliah basisdata digunakan WHERE

(32)

c. Tampilkan data Instruktur yang tiidak mengajar

 Hasil eksekusi

Penjelasan

Pada soal diatas, kita menggabungkan tabel instruktur dan ambilmk2 dengan LEFT OUTER JOIN berdasarkan NIP dengan sintaks ONinstrukur.NIP = ambilmk2.NIP. kemudian hasilnya ditampilkan dengan SELECT instruktur.NIP,nama_ins,jurusan,asal_kota. Kemudian untuk mendapatkan data instrukutur yang tidak mengajar digunakan WHERE ambilmk2.NIP IS NULL. Perlu diketahui pula bahwa kata kunci OUTER bersifat opsional, jadi ditulis atuapun tidak hasilnya kan tetap sama.

2. Buatlah tabel seperti dibawah ini

(33)

 Hasil eksekusi

b. Membuat tabel baru Orders dan memasukan data

(34)

Gabungan kedua tabel tersebut dengan JOIN dan UNION

Ada dua sintaks dalam persoalan ini

Pertama penggabungan tabel secara INNER JOIN

Hasil eksekusi :

Kedua penggabungan tabel dengan LEFT OUTER JOIN

(35)

Kemudian kita menggunakan UNION untuk menggabung kedua tabel terdebut, dengan menggunakan UNION tabel akan digabung dan menghilangkan duplikasi data

Hasil eksekusi :

(36)

Hasil eksekusi :

Penjelasan :

Pada soal diatas kita menggabungkan tabel customer dengan tabel orders secara INNER JOIN berdasarkan customer_id dengan sintaks ON customer.customer_id = prders.customer_id. Kemudian tabel yang digabung akan ditampilkan dengan SELECT customer.customer_id,customer_name,customer_addressorder_date. Untuk menampilkan data yang diorder pada bulan Desember maka kita menggunakan kondisi WHERE MONTH (order_date)=12.

Inner Join berguna untuk menggabungkan tabel dan harus membutuhkan satu kolom unik yang ada pada primary key maupun foreign key. Apabila ada foreign key maupun primary key yang kosong, penggunaan fungsi ini hanya akan memunculkan data yang foreign key-nya memiliki record yang isi saja.

F. KESIMPULAN

1. Relationship adalah suatu hubungan antara beberapa entitas.Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini sangat penting sekali di dalam basis data, di mana memungkinkan entitas-entitas untuk saling berhubungan satu sama lain.Di dalam sebuah relationship, primary key memiliki peran penting untuk mengaitkan entitas. Selain itu, primary key juga digunakan untuk mendefinisikan batasan keterhubungan.

Jenis-jenis relasi entitas :

 Satu ke satu (one to one) Setiap data pada entitas A berhubungan dengan maksimal satu data pada entitas B, begitu pula sebaliknya.

(37)

 Banyak ke banyak (many to many)Setiap data pada entitas A bisa berhubungan dengan banyak data pada entitas B, demikian pula sebaliknya.

2. Join merupakan salah satu konstruksi dasar dari SQL dan basis data. Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih tabel di dalam basis data relasional dan menghasilkan sebuah tabel (temporary) baru—yang disebut sebagai joined table. Ada macam-macam join yaitu inner join,outer join, right outer join, full outer join yang memiliki fungsi tersendiri. Selain empat jenis join yang utama di atas, masih ada beberapa variasi join lainnya, seperti CROSS JOIN (cartesian product),NATURAL JOIN, dan sebagainya.

3. Perintah UNION digunakan untuk menggabungkan isi dari 2 (dua) tabel atau lebih. Berbeda dengan perintah UNION, perintah UNION ALL menggabungkan keseluruhan data walaupun data tersebut mempunyai isi yang sama.

4. Pada pendekatan implisit dan eksplisit hasil eksekusinya menghasilkan output yang sama. Perbedaannya hanya pada sintaks kondisinya.

G. DAFTAR PUSTAKA

1. Deni hoshiora.2012. Relasi dan Join .

http://www.hoshiora.com/2012/04/relasi-dan-join.html

2. Nanda.2010.Merelasikan Table dengan “JOIN” dalam mySQL http://rawrdewactive.blogspot.co.id/2010/06/merelasikan-table-dengan-join-dalam.html

3. Phi-intergration. Jenis tipe join.http://mysql.phi-integration.com/sql/tipe-tipe-join-pada-mysql-5

4. 2013. Relasi dan Join (Basis data).

Gambar

tabel departement menggunakan huruf d. Perhatikan hasil eksekusi SQL tersebut,
tabel departemen)
Tabel Mahasiswa
Tabel Matakuliah
+4

Referensi

Dokumen terkait

Dengan SQL, kita dapat mengakses database, menjalankan query untuk mengambil data dari database, menambahkan data ke database, menghapus data di dalam

Seringkali dalam menampilkan sebuah data, kita perlu menggunakan lebih dari 1 tabel, bisa 2, 3 atau lebih, karena data yang akan di tampilkan terletak pada beberapa tabel dan

Pada kode diatas menggunakan array, dimana data user maksimal hanya dapat diinput sebanyak 100 data. Data yang disimpan akan dimasukkan pada array berurutan dari array 1 hingga

unique pilihan perincian yang dapat digunakan untuk menguatkan nilai data di dalam kolom nama index menjadi unik. nama_index nama index yang baru. nama_tabel nama tabel

Database adalah sebuah media utama yang harus dibuat dalam membangun sebuah basis data agar nantinya dapat diletakkan beberapa tabel dengan field-fieldnya ,bila kita lihat

Pada persoalan 4.3 menggunakan inner join dan memanfaatkan fitur derived table , yang diseleksi adalah field a.NIM, m.Nama, a.kode_mk, k.nama_mk dari relasi tabel

Tabel Kuliah Nama_kul mempelajari Kode_kul Indeks_nilai N N nim semester sks.. nim

Jadi bisa anda lihat bahwa pada soal nomor 5 dan 7 me mpunyai hasil yang sama, sehingga dapat di simpulkan bahwa vie w dapat mena mpilkan ke mbali data yang sama dengan