Pada pertemuan sebelumnya, telah
dibangun dan diisi tabel pendudk dan tabel penduduk_lama. 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 sistem informasi,
seperti yang digambarkan pada ERD berikut:
Gambar 6. 1 sederhana untuk database
perpustakaan
6.1 DDL untuk Multiple Relations
Perhatikan pada Gambar 6.1, entitas desa dan entitas penduduk memiliki
atribut foreign key (FK) di dalamnya.
Anda bisa membuat tabel kegiatan dan pemberitahuan terlebih dahulu.
Gambar 6. 2 Pembangunan tabel kegiatan kasus
multiple relations
Gambar 6. 3 Pembangunan tabel pemberitahuan
kasus multiple relations
Selanjutnya dibangunlah tabel-tabel yang terdapat
foreign key di dalamnya. Pertama akan dibangun tabel desa. Di dalam tabel tersebut terdapat foreign key idkegiatan yang
mana referensinya adalah idkegiatan pada tabel kegiatan. Berikut query yang digunakan:
Gambar 6. 4 Pembangunan tabel desa kasus multiple
relation
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.
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 kegiatan masih kosong. Sekarang kita
akan mengisikan tabel desa dimana
terdapat FK idkegiatan. Kita akan
isikan idkegiatan dengan nilai 1:
Gambar
6. 5 Peringatan
kesalahan diberikan karena batasan FK
Seperti terlihat pada gambar di atas, akan keluar pesan
kesalahan akibat nilai idkegiatan yang
dimasukkan pada tabel desa tidak ada
pada tabel kegiatan (tabel
master).
Lain halnya jika Anda menginputkan
nilai NULL untuk idkegiatan,
walaupun pada tabel kegiatan belum
memiliki data, tidak menjadi masalah.
Gambar
6. 6 Penginputan
dengan FK bernilai NULL
Langkah yang tepat adalah dengan
mengisikan terlebih dahulu tabel masternya. Di sini akan dinputkan data-data
untuk tabel pemberitahuan:
Gambar 6. 7 Penginputan tabel pemberitahuan
Pada Gambar 6.7 nilai idpenerbit adalah NULL. Nilai tersebut dapat diubah dengan nilai
referensi (Primary Key) pada tabel penerbit.
‘
Gambar 6. 8 Mengupdate nilai FK pada tabel buku
Gambar 6. 9 Penginputan tabel desa
Gambar
6. 10 Penginputan
tabel kegiatan
6.3 SELECT dengan Klausa Where
Jika melihat tampilan tabel desa dan tabel 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 desa dan kegiatan menggunakan
bahasa SQL standar. Agar dapat menampilkan id desa di setiap kegiatan, kita
bisa menghubungkan antara idkegiatan pada
tabel desa (sebagai FK) dengan idkegiatan pada tabel kegiatan (sebagai PK). Tapi sebelumnya
harus ditentukan terlebih dahulu atribut apa saja yang ingin ditampilkan.
Misalkan kita ingin menampilkan atribut iddesa,
namadesa maka query yang dapat
digunakan adalah sebagai berikut:
Gambar
6. 11 Menampilkan
data id desa
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 iddesa pada tabel desa dan idkegiatan pada tabel kegiatan.
Nama tabel disebutkan agar tidak terjadi ambiguitas dari sistem, karena kedua
atribut yang disamakan nilainya memiliki nama yang sama.