Relasi rekursif (Recursive Relationship) adalah relasi yang
unik dalam database. Mengapa unik? Karena sebuah relasi rekursif menghubungkan
satu entitas dengan dirinya sendiri. Ada suatu keterkaitan data dalam entitas
tersebut.
Ada 2 jenis relasi rekursif dalam Microsoft Access yang saya
contohkan dalam postingan ini:
1. Rekursif One To Many
Contoh penggunaan rekursif One To
Many adalah data ibu dan anak pada tabel kependudukan. Dalam contoh family tree
di bawah, Asmara merupakan ibu dari Julaeha dan Neni. Julaeha menjadi ibu dari
Eka Mulya A dan Panji Asmara Setiawan. Sehingga, Asmara adalah nenek dari Eka
Mulya A dan Panji Asmara Setiawan.
Dalam bentuk CDM pada
PowerDesigner, relasi rekursif akan terlihat seperti gambar di bawah in
Sedangkan ketika digenerate menjadi
PDM, model akan membentuk foreign key yang diambil dari primary key entitas itu
sendiri (fk = tbP_ID dan pk=ID).
Lalu buatlah sebuah tabel pada Microsoft Access dengan field-field yang sama seperti attribute yang terdapat pada PDM, beri nama tbPenduduk
Dalam relationship, drop dua kali
tbPenduduk, maka salah satu tabel panduduk akan berubah namanya menjadi
tbPenduduk_1
Lalu buat querynya untuk
menampilkan data ibu beserta nama anaknya. Show field nama pada tbPenduduk dan field
nama pada tbPenduduk_1
Maka akan tampil hasil Query yang
menunjukkan nama ibu (tbPenduduk.nama) di field pertama dan nama anak
(tbPenduduk_1.nama) di field kedua seperti gambar di bawah ini.
Nama field bisa diganti dengan keyword “AS”. Contohnya: tbPenuduk.nama
AS nama_ibu.
Penggantian nama filed bertujuan untuk
mempermudah pembacaan nama field pada hasil query.
Sehingga anda akan mengedit SQL dari qryIbuAnak menjadi seperti gambar di
bawah ini
Berikut adalah hasil akhirnya,
qryIbuAnak akan menampilkan daftar nama_ibu beserta nama_anak.
2. Rekursif Many To Many
Yang saya contohkan adalah database
paket makanan di sebuah restoran.
Gambar di bawah ini adalah
visualisasi data yang akan kita buat, 1 jenis paket dapat memuat banyak
makanan, 1 makanan dapat dimuat dalam banyak paket
Rekursif many to many ini dapat
dideskripsikan melalui CDM seperti gambar di bawah ini.
Lalu untuk mengetahui bentuk fisik
dari database, generate file CDM tersebut menjadi PDM. Maka pada PDM akan
tampil entitas penghubung (Relationship_1) yang mentranslasikan relasi
Many-To-Many di CDM menjadi One-To-Many dan Many-To-One. Entitas Relationship_1
mencatat data tentang daftar paket beserta makanan yang terdapat di dalamnya
Dalam membuat phisical data pada
Microsoft Access, anda harus membuat 2 tabel, yaitu tbMakanan dengan field sama
seperti attribute pada entitas tbMakanan dan tbPaket dengan field sama seperti
attribute pada entitas Relationship_1 pada PDM.
Dengan tbMakanan di atas, kita
dapat mengetahui bahwa 1 jenis makanan dapat masuk dalam banyak jenis paket
makanan dan 1 jenis paket makanan dapat memiliki banyak jenis makanan di
dalamnya (relasi Many-To-Many)
tbPaket akan menjelaskan tentang
paket makanan dan makanan yang terdapat di dalamnya.
Definisikan querynya dengan memilih 2 kali tbMakanan dan 1
kali tbPaket.
tbMakanan dipilih 2 kali karena tbMakanan yang pertama mengambil paket makanannya sedankan
tbMakanan_1 (yang kedua) untuk komposisi
makanan yang ada dalam paket
Lalu hubungkan ID_makanan pada
tbMakanan dengan ID_paket pada tbPaket, hubungkan ID_makanan pada tbPaket ke
ID_makanan pada tbMakanan1.
Misal kita ingin menampilkan paket
makanan beserta Harga paketnya, maka buat saja query seperti gambar di bawah
ini
Maka setelah ditampilkan, jadilah
query seperti gambar di bawah ini
*NB: maksud dari harga adalah harga
keseluruhan paket makanan dengan beberapa item makanan di dalamnya (paket 1:
nasi putih, ayam goreng, lalapan, sayur asem, air putih. Semua 12000) bukan
paket makanan dengan satu item di dalamnya (paket1 nasi putih harganya 12000)
No comments:
Post a Comment