Database Master-Detail
LATIHAN 4
Database Master-Detail
ARSys Software Developed/AbdRohim
43
Database Master-Detail
Hubungan antara dua file atau tabel ada yang bersifat Melengkapi/menjelaskan/memberikan keterangan dari suatu field, bisanya field tersebut selalu menjadi sebuah foreigkey. Selain itu ada juga hubungan yang bersifat ketergantungan artinya suatu file (Anak) tidak akan mempunyai artinya bila tidak ada file (Induk), bentuk seperti ini sering disebut dengan MasterDetail atau Induk-Anak. Contoh kasus (untuk model yang pertama) yang akan diambil dalam modul ini akan mengembangkan kasus pada modul sebelumnya. Pada kasus tersebut diinginkan untuk menampilkan kategori dalam bentuk sebuah kata (Unit, Aksesories, Periperal) sementara saat disimpan dalam file yang ditulis hanya nomor urutnya saja (1,2,3). Hal ini dibuat seperti ini guna mengatisipasi perkembangan dimasa mendatang, jika terjadi pemambahan kategori maka tidak perlu merubah source program tetapi cukup dengan menambahkan jenis kategorinya saja. Bentuk hubungan Master-Detail ini banyak sekali terdapat dalam permasalahan umum, misalnya sebuah Faktur pembelian atau penjualan, Kartu Studi Mahasiswa, Kartu Peminjaman buku diperpustakaan dll, kesemuanya mempunyai keteraturan yang sama. Contoh. Dalam faktur terdapat data-data sbb: No. Faktur, Tanggal faktur, Kepada atau Dari (Konsumen/Produsen), Nomor urut, Nama barang, Satuan, Jumlah barang, Harga, Total. Jika digambarkan dalam sebuah tabel akan berbentuk sbb: No.Faktur Tanggal Kepada NamaBarang Satuan Jumlah Harga Total Jika dimasukan satu buah transaksi dimana seseorang yang akan disimpan sbb No.Faktur Tanggal Kepada NamaBarang 1 01/01/99 Adi Kopi 1 01/01/99 Adi Gula 1 01/01/99 Adi Susu
membeli tiga macam barang maka data Satuan buah buah kaleng
Jumlah 10 10 1
Harga 1000 500 5000
Total 10000 5000 5000
dari tabel akan terlihat ada tiga field yang ditulis berulang (No. Faktur, Tanggal, Kepada). Dalam teori database, dalam file tersebut ada redudansi oleh sebab itu harus dipecah untuk menghilangkan redudansi tersebut, sehingga bentuknya akan menjadi seperti berikut: Tabel-A No.Faktur 1
Tanggal 01/01/99
Tabel-B No. Faktur 1 1 1
NamaBarang Kopi Gula Susu
Kepada Adi
Unit buah buah kaleng
Jumlah 10 10 1
Harga 1000 500 5000
Total 10000 5000 5000
Tabel-A biasanya disebut dengan Master/Induk dan Tabel-B disebut dengan Detail/Anak yang dihubungkan dengan sebuah key (No.Faktur). Dalam proses manipulasi terhadap filenya (Input, Edit dan Delete) untuk file-file tersebut sama dengan yang dilakukan pada modul sebelumnya, bisa dengan cara tidak langsung (dengan Tedit) atau dengan cara langsung (TDBEdit) atau kombinasi diantara keduanya. Tetapi sebelumya kedua file tersebut harus dikaitkan dahulu dan harus diketahui secara persis nama yang akan menjadi induk dan mana yang akan menjadi anak.
ARSys Software Developed/AbdRohim
44
Database Master-Detail
Cara menghubungkan dua buah tabel dengan hubungan relasi Master-Detail adalah dengan menggunakan dialog Field Link Design. Dialog ini harus dipanggil dari tabel yang bersifat Detail / Anak yang akan menunjukan tabel Masternya. Sebagai contoh kasus akan dibuat sebuah program yang kan menelusuri data pembelian seorang pelanggan. Ingin diketahui telah membeli barang apa sajakan pelanggan ini dari order no berapa, seberapa sering berbelanja. Telah tersedia tabel Customers, Orders, Items dan Part yang menyimpan data-data penjualan ini. Tabel Customers dengan tabel Orders terdapat hubungan dimana setiap dilakukan penjualan barang pasti diketahui siapa yang membeli barang tersebut. Data penjulan barang disimpan pada tabel Orders dan data pembeli disimpan pada tabel Customers. Hubungan antar tabel Customers dengan tabel Orders tidak secara jelas menunjukan Master-Detail tetapi lebih condong kepada melengkapi/menjelaskan, tidak ada ketergantungan antar dua file ini. Hubungan yang jelas Master-Detail ini terlihat antara tabel Orders dan tabel Items. Dimana tabel Item akan mempunyai arti jika atau memberikan informasi jika ada tabel Orders, dan begitupun sebaliknya tabel Orders memerlukan tabel Items untuk uraian Ordernya. Yang bertindak sebagai tabel anak adalah tabel Items dan yang bertindak sebagi tabel Induk adalah Tabel Orders. Hunbungan antara tabel Items dengan tabel Part hampir sama dengan hunbungan antara tabel Customers dengan tabel Orders. Dalam hal ini yang bertindak sebagai tabel anak adalah tabel Part dan yang bertindak sebagi induk adalah tabel Items. Jadi sebenarnya yang ingin diperlihatkan disini adalah bahwa tabel-tabel yang terdapat dalam sebuah database yang saling terkait, terhubung satu sama lain, suatu saat tabel tersebut bisa bertindak sebagai tabel induk, tetapi disaat lain tabel tersebut bisa bertindak sebagi tabel anak. design databaselah yang sangat menentukan untuk hal ini.
ARSys Software Developed/AbdRohim
45
Database Master-Detail
Buatlah program seperti berikut ini:
Lakukanlah langkah-langkah berikut ini: 1. Bukalah project baru 2. Tepatkan pada form tersebut 1 buah panel, 1 buah DBNavigator, 1 buah groupbox, 4 buah table, 4 buah datasource, 7 buah label, 7 buah DBEdit, 2 buah DBGrid dan 1 buah BitBtn 3. Isikan nilai-nilai ini pada properti untuk masing-masing komponen sebagai berikut: Komponen Properti Nilai Form1 Caption Tabel Master-Detail Name FmLatih4a Position poScreenCenter Panel1 Align AlTop BevelOuter BvLowered Caption (Kosongkan) Table1 DatabBaseName DBDEMOS Name tbCustomer TableName CUSTOMER.DB Active True DataSource1 DataSet TbCustomer Name DsCustomer ShowHints true DBNavigator1 DataSource DsCustomer GroupBox1 Caption Tabel Master Customers Label1 Caption Customers Number ARSys Software Developed/AbdRohim
46
Database Master-Detail
Label2 Label3 Label4 Label5 DBEdit1
DBEdit2
DBEdit3
DBEdit4
DBEdit5
DBEdit6
Label6 Table2
DataSource2 DBGrid1
Label7 Table3
DataSource3 DBGrid2
Caption Caption Caption Caption Color Ctl3D DataSource DataField Color Ctl3D DataSource DataField Color Ctl3D DataSource DataField Color Ctl3D DataSource DataField Color Ctl3D DataSource DataField Color Ctl3D DataSource DataField Caption Font DatabBaseName Name TableName Active DataSet Name DataSource +Option (Double klik pada kata tersebut) dgIndicator dgRowLines dgRowSelect dgAlwayShow Caption Font DatabBaseName Name TableName Active DataSet Name DataSource
ARSys Software Developed/AbdRohim
Company City Address Country ClBtnFace False DsCustomer CustNo ClBtnFace False DsCustomer Company ClBtnFace False DsCustomer City ClBtnFace False DsCustomer Addr1 ClBtnFace False DsCustomer Addr2 ClBtnFace False DsCustomer Country Orders Ms Sans Serif 12 Bold DBDEMOS tbOrder Orders.DB True TbOrder DsOrder dsOrder
false false True True Items Ms Sans Serif 12 Bold DBDEMOS tbItem Items.DB True TbItem DsItem DsItem 47
Database Master-Detail
Label7 Table4
DataSource4 DBEdit7
BitBtn1
+Option (Double klik pada kata tersebut) dgIndicator dgRowLines dgRowSelect dgAlwayShow Caption Font DatabBaseName Name TableName Active DataSet Name Ctl3D DataSource DataField Kind
false false True True Part Description Ms Sans Serif 12 Bold DBDEMOS tbPart Parts.DB True TbPart DsPart False DsPart Description bkClose
4. Simpanlah project ini. Aturlah direktori ke tempat penyimpanan datanya. Gantilah Unit1 dengan Latih4a.Pas dan Project1 dengan Latihan4a. 5. Jalankanlah programnya 6. Kliklah tombol-tombol navigatornya. Apa yang terjadi ???
ARSys Software Developed/AbdRohim
48