Disusun Oleh:
Abid Muhibbuddin (150533601917)
Anidia Wulan Sari
(150533601651)
MODUL IV
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.
Di dalam 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 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) baruyang disebut
sebagai joined table.
Join dapat diklasifikasikan 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.
Sintaks inner join diperlihatkan sebagai berikut:
SELECT A1, A2, ..., An
FROM r1
INNER JOIN r2
ON r1.join_key = r2.join_key
Inner join juga dapat direpresentasikan dalam bentuk implisit sebagai berikut :
Bentuk visual dari full outer join dapat diperlihatkan menggunakan diagram
Venn seperti Gambar 4.
Gambar 5. Union
1.
Latihan
3.1.
Latihan 1 Relationship
1. Langkah-langkah:
Dalam latihan ini digunakan 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;
Tabel Departemen
id_dep
id_dep
nama_dep
Agus
10
10
Penelitian
Budi
16
11
Pemasaran
Citra
12
12
SDM
Dani
17
13
Keuangan
2. Printscreen
3. Keterangan
3.Keterangan
Tabel karyawan dibuat untuk nantinya dipergunakan untuk di relationshipkan
dengan tabel departemen dengan susunan tabel karyawan : nama dan id_dep, dan
tabel departemen :id_dep dan nama_dep. Pada keduanya memiliki id_dep yang
id_dep tersebut beberapa ada yang sama, inilah yang nanti bisa digunakan untuk
relationshipkan antara kedua tabel.
3.2.
1.
Langkah langkah
Selain itu, dapat pula menggunakan bentuk implisit dari inner join di atas, yaitu
sebagai berikut :
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 :
2. Printscreen
3. Keterangan
3.3.
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 :
Dari hasil eksekusi di atas, dapat kita ketahui bahwa karyawan yang bernama Budi
dan Dani tidak memiliki departemen (nama departemennya tidak tercatat di dalam
tabel departemen).
Right Outer Joint
Contoh penggunaan RIGHT OUTER JOIN adalah sebagai berikut :
Perhatikan kembali baris kedua dan keempat pada hasil eksekusi di atas, apa yang
menyebabkan timbulnya NULL value?
SELECT *
FROM karyawan k LEFT 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;
Cross Join
Cross join pada hakekatnya merupakan inner join di mana 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 :
SELECT *
FROM karyawan CROSS JOIN departemen;
Atau dalam bentuk implisitnya :
2. Printscreen
3. Keterangan
Dalam LEFT JOIN akan menampilkan data-data yang tidak berelasi
namun pada table departemen (table kiri), data yang tidak berelasi akan
bernilai NULL.
Hampir sama dengan left join Dalam RIGHT JOIN akan menampilkan datadata yang tidak berelasi namaun pada table karyawan (tabel kanan), data yang
tidak berelasi akan bernilai NULL
FULL OUT JOIN akan menampilkan semua data-data dari tabel sisi kiri
walaupun data di pasangan joinnya di sisi kanan nilainya NULL. Dan
sebaliknya.
CROSS JOIN akan menampilkan semua isi tabel sisi kiri akan memiliki
pasangan semua data disisi kanan. Banyaknya record cross join = jumlah
record tabel karyawan x jumlah record tabel departemen.
3.4.
Latihan 4 UNION
1. Langkah-langkah:
Buatlah tabel baru bernama karyawan2 pada database yang sama.
Data tabelnya adalah sebagai berikut.
3.keterangan
Perintah UNION untuk menggabungkan isi dari 2(dua) tabel atau
lebih yaitu antara tabel karyawan dan tabel karyawan2 maka
menghasikan tabel nama dan id_dep yang berbeda. sebagaiman
E. TUGAS PRATIKUM
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 data_mhs
jenis_kelami
nim nama n
101
102
103
104
105
106
107
Arif
Budi
Wati
Ika
Tono
Iwan
Sari
Tabel ambil_mk
kode_m
Nim k
101 PTI447
103 TIK333
104 PTI333
104 PTI777
111 PTI123
123 PTI999
L
L
P
P
L
L
P
alamat
Jl.
Kenangan
Jl. Jombang
Jl. Surabaya
Jl. Jombang
Jl. Jakarta
Jl. Bandung
Jl. Malang
Tabel matakuliah
kode_m
k
nama_mk
Praktikum Basis
PTI447 Data
Praktikum Basis
TIK342 Data
Basis Data
PTI333 Terdistribusi
TIK123 Jaringan Komputer
TIK333 Sistem Operasi
PTI123 Grafika Multimedia
PTI777 Sistem Informasi
sks
semest
er
3
2
3
3
2
5
5
5
5
3
Eksplisit
Implisit
Analisis:
Eksplisit
Dengan cara eksplisit, untuk mendapatkan data mahasiswa yang
mengambil matakuliah, menggunakan INNER JOIN ON
Sedangkan agar tidak terjadi duplikasi, menggunakan keyword
DISTINCT. Maka akan diperoleh hasil seperti gambar di atas
Implisit
Dengan cara implisit menggunakan klausa WHERE. Sama seperti pada
cara eksplisit, agar tidak terjadi duplikasi, menggunakan keyword
Analisis:
Pernyataan LEFT POINTER JOIN. Untuk mendapatkan banyaknya data,
menggunakan operasi COUNT. Untuk mendapatkan data yang tidak
mengambil matakuliah menggunakan klausa WHERE IS NULL.
Sedangkan untuk menampilkan jenis_kelamin berdasarkan urutan,
menggunakan keyword GROUP BY. Dan yang akan tampil jenis kelamin
dan jumlah sebagaima gambar di atas
3. Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta
kode_mk dan nama_mk yang diambilnya. Selesaikan dengan pendekatan
join eksplisit dan implisit.
Jawab:
Screenshot:
Analisis:
Untuk mendapatkan nim dan nama mahasiswa yang mengambil matakuliah
beserta kode_mk dan nama_mk yang diambil dengan pendekatan join
eksplisit, hanya menggunakan klausa WHERE. Untuk mendapatkan dua
kondisi dimana data_mhs.nim = ambil_mk.nim dan ambil_mk.kode_mk =
modul3.kode_mk, maka di antara kedua kondisi terdapat pernyataan AND.
Sedangkan untuk mengurutkan nim dari yang terkecil, digunakan ORDER
BY. Maka akan diperoleh hasil seperti gambardi atas.
4. Dapatkan nim, nama, dan total sks yang diambil oleh mahasiswa, di mana
total sksnya lebih dari 4 dan kurang dari 10.
Screenshot:
Analisis:
Untuk mendapatkan total sks yang diambil oleh mahasiswa, digunakan
operasi SUM. Untuk memperoleh kondisi dimana data_mhs.nim =
ambil_mk.nim dan ambil_mk.kode_mk = modul3.kode_mk, digunakan
klausa WHERE, dan di antara kedua perbandingan terdapat AND.
Sedangkan klausa HAVING digunakan untuk mendapatkan total sks yang
lebih dari 4 dan kurang dari 10. Penggunaan HAVING dan bukannya
WHERE ini, karena untuk menentukan total sks menggunaan fungsi
agregat SUM.
5. Dapatkan data matakuliah yang tidak diambil oleh mahasiswa terdaftar
(mahasiswa yang terdaftar adalah mahasiswa yang tercatat di tabel
mahasiswa).
Screenshot:
Analisis:
Untuk mendapatkan data matakuliah yang tidak diambil oleh mahasiswa
terdaftar, digunakan LEFT OUTER JOIN dan RIGHT OUTER JOIN.
Untuk memperoleh suatu kondisi, digunakan klausa WHERE. Sedangkan
untuk mengurutkan data sesuai sks dari besar ke kecil digunakan ORDER
BY DESC.
F. TUGAS RUMAH
1. Buatlah database baru dengan nama Universitas. Lalu didalamnya terdapat
tabel-tabel berikut :
Tabel Instruktur
Tabel Matakuliah
Table Kuliah
Analisis:
Untuk menampilkan nomor dan mata kuliah yang pesertanya
lebih dari 40 orang, digunakan INNER JOIN. Pada bagian awal
pernyataan SELECT matakuliah.nomk, matakuliah.namamk agar
yang ditampilkan hanya nomk dan namamk saja. Kemudian, agar
yang ditampilkan hanya yang pesertanya lebih dari 40 orang,
digunakan klausa WHERE.
b. Tampilkan nip dan nama instruktur yang mengajar mata kuliah
'Basis Data'
Analisis:
Untuk menampilkan nip dan nama instruktur yang mengajar
matakuliah Basis Data, di sini digunakan cara implisit. Untuk
Analisis:
Untuk mendapatkan total/jumlah keseluruhan mahasiswa
digunakan fungsi SUM. Untuk men-join-kan antara tabel
instruktur dan tabel kuliah, digunakan INNER JOIN. Sedangkan
untuk mendapatkan data dari mahasiswa yang hanya diajar oleh
Steve Wozniak, digunakan kata kunci Steve Wozniak pada
klausa WHERE.
2. Buatlah Tabel seperti di bawah ini.
Tabel Customer
Tabel Orders
Screenshot:
Analisis:
Untuk menampilkan tabel seperti pada contoh, digunakan LEFT
OUTER JOIN. Sedangkan untuk pengurutan customer_name sesuai
abjadnya digunakan GROUP BY. Jika tabel tidak saling berelasi maka
nilainya menjadi NULL.
4.
Kesimpulan
Berdasarkan hasil dari praktikum yang telah kamu lakukan dapat disimpulkan bahwa
perintah join ada beberapa macam yaitu :
Inner Join
Outer Join
Cross Join
Union Join
1.
2.
3.
4.
5.
6.
5.
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.
Outer join merupakan jenis join yang sedikit berbeda dengan inner join. Pada
MySQL
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.
Cross join kadang kala 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.
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.
Daftar Pustaka
Tim Asisten Dosen. 2016. Modul III.Join dan Union. Malang: Universitas Negeri
Malang.