1. Judul Materi
Multiple
Relations
2. Kemampuan
Akhir Tahap Pembelajaran
Mahasiswa mampu memaksimalkan penggunaan query untuk multiple relations.
3. Alat dan Bahan
Alat
dan bahan yang diperlukan adalah: PC/Laptop, XAMPP, PHPMyAdmin, CommandPrompt
atau Terminal.
4. Teori
Pada pertemuan sebelumnya, mahasiswa
belajar untuk memaksimalkan penggunaan query dengan set operations. Pada pertemuan ini mahasiswa diajarkan untuk memaksimalkan query untuk kasus
multiple relations. Pada bab multiple
relations, terdiri atas DDL untuk multiple
relations, DML untuk multiple
relations dan SELECT dengan klausa WHERE.
5. Materi
Pada
pertemuan sebelumnya, telah dibangun dan diisi tabel barang dan tabel barang_toko.
Pada pertemuan kali ini, kedua tabel tersebut akan dihapus terlebih dahulu
karena kedua tabel tersebut tidak dibangun atas dasar database relasional:
Kemudian
kita akan rancang database relasional sederhana untuk kasus
perpustakaan,
seperti yang digambarkan pada ERD berikut:
Gambar
6.1 ERD untuk database penjualansepatusendal
6.1
DDL untuk
Multiple Relations
Perhatikan pada Gambar 6.1,
entitas barang dan entitas barang_toko memiliki atribut foreign key (FK) di dalamnya. Sedangkan
entitas lainnya, penerbit dan karyawan tidak memiliki
FK. Anda bisa membuat tabel pemiliktoko dan karyawan terlebih dahulu.
Gambar
6.2 Pembangunan tabel pemiliktoko kasus
multiple relations
Gambar
6.3 Pembangunan tabel karyawan kasus multiple relations
Selanjutnya
dibangunlah tabel-tabel yang terdapat foreign key di dalamnya. Pertama akan
dibangun tabel barang. Di dalam
tabel tersebut terdapat foreign key id_pemiliktoko yang mana referensinya adalah id_pemiliktoko pada tabel pemiliktoko. Berikut query yang digunakan:
CONSTRAINT berarti menambahkan
batasan berupa Foreign Key yang pada Gambar 6.4 diberikan
nama foreign key nya. Nama foreign key haruslah unique, sehingga jika ada
pemakaian dua foreign key atau lebih, maka berikanlah nama yang berbeda.
Setelah CONSTRAINT diberikan
kemudian diikuti dengan
FOREIGN KEY yang menunjukkan atribut mana pada tabel tersebut
yang menjadi FK. REFERENCES adalah merujuk pada Primary Key atau atribut
yang menjadi referensi dari
FK yang dibuat, dengan format REFERENCES
nama_tabel(nama_atribut_referensi). ON
UPDATE CASCADE berarti jika nilai atribut referensi
berubah (diupdate), maka perubahan tersebut
terjadi pula pada semua atribut FK nya. ON DELETE CASCADE berarti jika data
dengan nilai atribut referensi dihapus, maka demikian pula dengan data yang
memiliki atribut FK nya. Selain CASCADE,
dapat juga menggunakan RESTRICT dan SET NULL. Tentunya dengan kasus dan
kepentingan yang berbeda.
Selanjutnya dengan cara
yang sama kita dapat membuat tabel barang_toko.
Kode pada barang_toko direncanakan
merupakan gabungan dari id_barang dan
id_karyawan. Misalkan untuk hubungan
barang dengan id_barang = 5, dan karyawan
dengan id_karyawan = 15, maka id pada barang_toko adalah BP_5_15. Berarti tipe data dari id adalah char (atau varchar)
dengan length sebesar 12 (dengan asumsi panjang karakter maksimal id_barang adalah 8 atau sebanyak 9999
barang dan panjang karakter maksimal id_karyawan
adalah 8 atau sebanyak 9999 karyawan).
Gambar
6.5 Pembangunan tabel barang_toko kasus multiple relation
6.2
DML untuk
Multiple Relation
Untuk
menginputkan data pada tabel yang memiliki atribut Foreign Key, harus
dipastikan terlebih dahulu apakah pada tabel masternya sudah terisi atau belum.
Dipastikan juga apakah nilai FK yang akan dimasukkan sudah ada pada tabel
master atau belum. Misal, tabel pemiliktoko
masih kosong. Sekarang kita akan
mengisikan
tabel barang dimana terdapat FK id_pemiliktoko. Kita akan isikan
id_pemiliktoko
dengan nilai 1:
Gambar
6.6 Peringatan kesalahan diberikan karena batasan FK
Seperti
terlihat pada gambar di atas, akan keluar pesan kesalahan akibat nilai id_pemiliktoko yang dimasukkan pada
tabel barang tidak ada pada tabel pemiliktoko (tabel master).
Lain
halnya jika Anda menginputkan nilai NULL untuk id_pemiliktoko, walaupun pada tabel pemiliktoko belum
memiliki data, tidak menjadi masalah.
Langkah
yang tepat adalah dengan mengisikan terlebih dahulu tabel masternya. Di sini
akan dinputkan data-data untuk tabel pemiliktoko:
Gambar
6.8 Penginputan tabel pemiliktoko
Pada Gambar 6.7
nilai id_ pemiliktoko adalah NULL.
Nilai tersebut dapat diubah dengan nilai referensi (Primary Key) pada tabel pemiliktoko.
Gambar
6.9 Mengupdate nilai FK pada tabel barang
Selanjutnya
kita selesaikan penginputan untuk tabel-tabel lainnya.
Gambar
6.10 Penginputan tabel karyawan
6.3
SELECT dengan
Klausa Where
Jika
melihat tampilan tabel barang dan
tabel barang_toko seperti pada Gambar 6.11 dan Gambar 6.12,
cukup tidak user friendly karena
pengguna hanya mendapatkan informasi nomor ID untuk pemiliktoko dan karyawan
barang. Hal itu terjadi karena untuk menampilkan data pada tabel barang dan barang_toko menggunakan bahasa SQL standar. Agar dapat menampilkan
nama penerbit di setiap daftar barang, kita bisa menghubungkan antara id_pemiliktoko pada tabel barang (sebagai FK) dengan id_pemiliktoko pada tabel pemiliktoko (sebagai PK). Tapi
sebelumnya harus ditentukan terlebih dahulu atribut apa saja yang ingin
ditampilkan. Misalkan kita ingin menampilkan atribut id_barang, nama_barang, pemiliktoko, harga_barang dan jumlah,
maka query yang dapat digunakan adalah sebagai berikut:
Perhatikan
pada Gambar 6.13 tersebut, FROM diikuti oleh dua tabel. Hal ini dikarenakan yang ingin
ditampilkan kepada pengguna adalah atribut-atribut yang berasal dari dua tabel
tersebut. Sementara WHERE diikuti
dengan menyamakan atribut FK dan PK, yaitu id_pemiliktoko
pada tabel barang dan id_pemiliktoko pada tabel pemiliktoko. Nama tabel disebutkan agar
tidak terjadi ambiguitas dari sistem, karena kedua atribut yang disamakan
nilainya memiliki nama yang sama.
Anda juga
dapat menampilkan hubungan antara barang dan karyawan barang.
Query
yang digunakan adalah sebagai berikut:
Gambar
6.14 Menampilkan nama_barang dan nama-nama karyawan
Komentar
Posting Komentar