Anda di halaman 1dari 6

Pertemuan 11

Multiple Relations
Pada pertemuan sebelumnya, kita sudah belajar untuk memaksimalkan penggunaan
query dengan set operations. Pada pertemuan ini kita akan membahas 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.

Tahap pelaksanaan praktikum sebagai berikut :

Pada pertemuan sebelumnya, telah dibangun dan diisi tabel buku dan tabel
buku_rusak. Pada pertemuan kali ini, kedua tabel tersebut akan dihapus terlebih dahulu
karena kedua tabel tersebut tidak dibangun atas dasar database relasional:

Tapi disini kita tidak akan menghapus tabel tersebut, tapi kita akan membuat database
baru dengan nama database sistem_perpustakaan. Kemudian kita akan rancang database
relasional sederhana untuk kasus perpustakaan, seperti yang digambarkan pada ERD berikut:

Gambar ERD sederhana untuk database perpustakaan

A. DDL untuk Multiple Relations


Perhatikan pada Gambar diatas, entitas buku dan entitas buku_pengarang
memiliki atribut foreign key (FK) di dalamnya. Sedangkan entitas lainnya,
penerbit dan pengarang tidak memiliki FK. Anda bisa membuat tabel penerbit dan
pengarang terlebih dahulu.
Selanjutnya dibangunlah tabel-tabel yang terdapat foreign key di dalamnya.
Pertama akan dibangun tabel buku. Di dalam tabel tersebut terdapat foreign key
idpenerbit yang mana referensinya adalah idpenerbit pada tabel penerbit. Berikut
query yang digunakan:

CONSTRAINT berarti menambahkan batasan berupa Foreign Key yang ada pada
Gambar diatas 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 buku_pengarang seperti
berikut :

B. 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 penerbit masih kosong. Sekarang kita akan
mengisikan tabel buku dimana terdapat FK idpenerbit. Kita akan isikan idpenerbit
dengan nilai 1:

Seperti terlihat pada gambar di atas, maka akan keluar pesan kesalahan akibat
nilai idpenerbit yang dimasukkan pada tabel buku tidak ada pada tabel penerbit
(tabel master).
Lain halnya jika kita menginputkan nilai NULL untuk idpenerbit, walaupun
pada tabel penerbit belum memiliki data, tidak menjadi masalah.
Langkah yang tepat adalah dengan mengisikan terlebih dahulu tabel masternya. Di sini
akan dinputkan data-data untuk tabel penerbit:

Pada Gambar sebelumnya nilai idpenerbit adalah NULL. Nilai tersebut dapat diubah
dengan nilai referensi (Primary Key) pada tabel penerbit sebagai berikut :

Selanjutnya kita selesaikan penginputan untuk tabel-tabel lainnya.

1. Tabel Pengarang
2. Tabel buku

3. Table buku_pengarang

C. SELECT dengan Klausa Where


Jika melihat tampilan tabel buku dan tabel buku_pengarang seperti pada Gambar
diatas, cukup tidak user friendly karena pengguna hanya mendapatkan informasi
nomor ID untuk penerbit dan pengarang buku. Hal itu terjadi karena untuk
menampilkan data pada tabel buku dan buku_pengarang menggunakan bahasa
SQL standar. Agar dapat menampilkan nama penerbit di setiap daftar buku, kita
bisa menghubungkan antara idpenerbit pada tabel buku (sebagai FK) dengan
idpenerbit pada tabel penerbit (sebagai PK). Tapi sebelumnya harus ditentukan
terlebih dahulu atribut apa saja yang ingin ditampilkan. Misalkan kita ingin
menampilkan atribut idbuku, judul, penerbit, tahun dan stok, maka query yang
dapat digunakan adalah sebagai berikut:
Perhatikan pada Gambar diatas 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 idpenerbit pada tabel buku dan idpenerbit pada tabel
penerbit. 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 buku dan pengarang buku. Query yang
digunakan adalah sebagai berikut:

Anda mungkin juga menyukai