Sabtu, 05 Oktober 2019

BAB VIII JOIN

1. Natural Join
Jika diperhatikan, penulisan query menggunakan SELECT untuk menampilkan data yang berrelasi menggunakan klausa WHERE memerlukan banyak energi. Query yang dituliskan panjang sehingga kemungkinan kesalahan dalam penulisan query pun semakin besar.

Menampilkan data buku, pengarang dan penerbit menggunakan NATURAL JOIN
Anda tidak perlu lagi menyamakan FK dengan PK nya, karena NATURAL JOIN memastikan atribut yang bernama sama pasti berhubungan. Sehingga Anda dapat menghemat waktu dan energi dengan menggunakan NATURAL JOIN. Walaupun demikian, ada paling tidak dua kondisi yang harus diperhatikan jika Anda memutuskan menggunakan NATURAL JOIN:
1. Pastikan untuk atribut-atribut yang berhubungan/berrelasi memiliki nama yang sama.
2. Pastikan untuk atribut-atribut yang tidak saling berhubungan/berrelasi tidak memiliki nama yang sama.
Untuk membuktikan kondisi tersebut, di sini akan diberikan tambahan tabel yaitu tabel petugas. Dimana tabel petugas berrelasi dengan tabel lainnya dalam hal pengelolaan sehingga database memiliki tabel yang mencatat history pengelolaan data.

ERD yang menampilkan tabel histori pada database perpustakaan
Perhatikan pada tabel buku_pengarang PK nya berubah menjadi idbp (silakan
diubah dengan menggunakan ALTER). Selain itu terdapat juga tambahan entitas
yang lain, seperti petugas, kelola_buku, kelola_penerbit, kelola_pengarang, dan
kelola_BP. Berikut akan ditunjukkan pembuatan tabel petugas.
Sedangkan untuk tabel lainnya hanya akan dicontohkan pembuatan tabel kelola_pengarang saja. Silakan tabel lainnya juga dibuat dengan cara yang sama.

Kemudian isikan tabel petugas dan tabel kelola_pengarang yang telah dibuat tadi dengan data sebagai berikut (tabel lainnya silakan diisi sendiri):

Perhatikan bahwa tabel petugas dan tabel pengarang memiliki atribut yang bernama sama, yaitu nama. Kedua tabel tersebut berrelasi melalui tabel kelola_pengarang. Saat pengisian yang dilakukan, diketahui bahwa petugas yang melakukan penginputan adalah Moeljoko. Akan tetapi jika kita gunakan natural join untuk menampilkan nama petugas dan nama pengarang pada tabel kelola_pengarang hasilnya adalah sebagai berikut:

Himpunan kosong dihasilkan dari natural join karena tidak memperhatikan kondisi dan syarat untuk natural join. Hal ini diakibatkan karena pada tabel petugas memiliki atribut nama yang namanya sama dengan atribut pada tabel pengarang. Untuk mengatasi permasalahan ini, dapat digunakan klausa where:
Selain dengan klausa where, dapat juga digunakan left join, right join dan inner join untuk memecahkan permasalah di atas, yang dijabarkan pada sub bab beikutnya.
8.2 Left Join dan Right Join
Left Join akan menampilkan semua record dari tabel sebelah kiri, dan record dari tabel sebelah kanan yang cocok. Hasilnya akan NULL untuk bagian kanan jika tidak ada kecocokan. Misal diminta untuk ditampilkan tabel kelola_pengarang yang menampilkan juga no HP petugas yang mencatat. Query yang tepat jika menggunakan left join adalah sebagai berikut:

Akan tetapi jika posisi kedua tabel yang berhubungan diubah, maka tampilan datanya pun akan memiliki arti yang lain. Yaitu menampilkan pekerjaan setiap

petugas dalam mengelola data, dalam hal ini Sari Amalia tidak melakukan pekerjaan apapun dalam mengelola data pengarang.
Beda posisi tabel pada left join menyebabkan perbedaan makna tampilan data
Right join adalah join yang serupa dengan left join, hanya saja posisi tabel yang kanan akan ditampilkan semua record nya. Sedangkan tabel yang kiri hanya record yang bersesuaian saja.
8.3 Inner Join
Versi aman dari left join maupun right join adalah inner join. Inner join tidak mementingkan posisi tabel pada query dan fungsinya sama dengan klausa where. Misalkan diperlukan tampilan dari pengelolaan pengarang, dimana menampilkan nama petugas dan nama pengarang yang dikelola, query nya adalah sebagai berikut:
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

0 komentar

:) :-) :)) =)) :( :-( :(( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ :-$ (b) (f) x-) (k) (h) (c) cheer

 
© 2011 NORDIAN_TI_MEDIA
Designed by Blog Thiet Ke
Posts RSSComments RSS
Back to top