Sunday, December 22, 2013

Relasi Rekursif pada Microsoft Access


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