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.
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:
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 :
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 :
1. Tabel Pengarang
2. Tabel buku
3. Table buku_pengarang