Oleh:
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.
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.
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 :
Left outer join antar tabel A dan B dapat diilustrasikan dalam diagram Venn
seperti Gambar 2.
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.
Selain empat jenis join yang utama di atas, masih ada beberapa variasi join
lainnya, seperti CROSS JOIN (cartesian product), NATURAL JOIN dan
sebagainya.
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 :
Secara default statemen UNION akan menghapus semua record duplikat dari
resulset. Apabila Anda ingin record duplikat tetap di tampilkan maka pada resulset
tuliskan secara explisit UNION ALL. Perbedaan Union dan Union All dapat
dijelaskan pada gambar diagram Venn 5 dan 6.
Fungsi Union sendiri dapat dijalankan dengan sintaks sebagai berikut :
C. LATIHAN
1. Relationship
Dalam latian ini digunakan dua buah table bernama karyawan dan departemen
dengan relationship bekerja pada. Struktur tabelnya diperlihatkan sbagai berikut :
Hasil eksekusi :
Selain itu, dapat pula menggunakan bentuk implisit dari inner join di atas, yaitu
sebagai berikut :
Hasil eksekusi :
Bandingan hasil eksekusi perintah SQL yan menggunakan INNER JOIN dengan
yang menggunakan bentuk implisitnya !
Dalam pengambilan data ini, kita juga bisa menspesifikasikan field terkait.
Sebagai contoh, untuk mengambil nama karyawan dan nama departemen yang
ditempatinya saja, eksekusi perintah SQL berikut :
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”
(atau alias). Contohnya adalah sebagai berikut :
Hasil eksekusi :
Pada pernyataan SQL di atas, tabel karyawan dinotasikan dengan huruf k dan
tabel departement menggunakan huruf d. Perhatikan hasil eksekusi SQL tersebut,
apakah sama dengan hasil eksekusi perintah SQL sebelumnya (yang tidak
menggunakan fitur (derived table) ?
3. Outer Join
Left Outer Join
Contoh penggunaan LEFT OUTER JOIN adalah sebagai berikut :
Hasil eksekusi :
Perhatikan baris kedua dan keempat pada hasil eksekusi di atas, apa yang
menyebabkan timbulnya NULL value ?
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 :
Dan hasil eksekusi diatas, dapat kita ketahui bahwa karyawan yang bernama Budi
dan Dani tidak memiliki departemen (nama departmennya tidak tercatat di dalam
tabel departemen)
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 ?
Full Outer Join
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 :
Hasil eksekusi :
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.
Hasil eksekusi :
Atau dalam bentuk implisitnya :
Hasil eksekusi :
4. Union
Buatlah tabel baru bernama karyawan2 pada database yang sama. Data tabelnya
adalah sebagai berikut :
Hasil eksekusi :
Lakukan perintah yang sama namun menggunakan UNION ALL. Jelaskan apa
perbedaan fungsi ONION dan ONION ALL.
Hasil eksekusi :
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).
Tabel Mahasiswa
Tabel ambil_mk
Nim Kode_mk
101 PTI447
103 TIK333
104 PTI333
104 PTI777
111 PTI123
123 PTI999
Tabel Matakuliah
Hasil :
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
- Eksplisit
- 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.
Dari percobaan diatas didapat bahwa penggunakan eksplisit dan implisit kaan
menghasilkan hasil keluaran yang sama, walaupun sintaksnya berbeda. Perbedaannya
terletak pada sintaks kondisi yang digunkan dimana eksplisit menggunakan ON
sedangkan implisit menggunakan WHERE
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
3. Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta kode_mk
dana nama_mk yang diambilnya. Selesaikan dengan pendekatan join eksplisit dan
implisit.
Eksplisit
Hasil eksekusi
Implisit
Hasil eksekusi
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
Hasil eksekusi
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)
Hasil eksekusi
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 :
Hasil eksekusi :
Membuat tabel baru ambil_mk dan memasukan data
Hasil eksekusi :
Hasil eksekusi
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
nama_mk = “Basis Data”
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
a. Membuat tabel baru Customer dan memasukan data
Hasil eksekusi
Hasil eksekusi
Gabungan kedua tabel tersebut dengan JOIN dan UNION
Ada dua sintaks dalam persoalan ini
Pertama penggabungan tabel secara INNER JOIN
Hasil eksekusi :
Hasil eksekusi :
Kemudian kita menggunakan UNION untuk menggabung kedua tabel terdebut, dengan
menggunakan UNION tabel akan digabung dan menghilangkan duplikasi data
Hasil eksekusi :
Tampilkan dua customer yang ordernya pada bulan Desember dengan JOIN!
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.
Satu ke satu (one to one) Setiap data pada entitas A berhubungan dengan
maksimal satu data pada entitas B, begitu pula sebaliknya.
Satu ke banyak (one to many) atau banyak ke satu (many to one)Setiap data
pada entitas A bisa berhubungan dengan banyak data pada entitas B, tetapi data
pada entitas B berhubungan maksimal hanya dengan sebuah data di A.
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).
http://siilarensi.blogspot.co.id/2013/04/relasi-dan-join-basis-data.html