Showing posts with label Domain Masalah::Database Design. Show all posts
Showing posts with label Domain Masalah::Database Design. Show all posts

Sunday, March 15, 2009

Analisis, Desain dan Implementasi Basis Data bagi Kasus DSS/SPK

 

Baik, ini yang selalu saya perintahkan jika ada yang minta bantuan pembuatan program SPK : buat penyelesaian masalahnya dengan Microsoft Excel. Seperti kasus berikut:

image

Perhatikan bahwa terdapat data rekening, dan data biaya per tahun. Inti akhirnya adalah pembuatan software DSS/SPK untuk analisis biaya, tepatnya dari data biaya terdahulu, maka akan diusulkan (oleh software) rencana anggaran biaya yang akan datang, dengan berusaha untuk meminimalkan pengurangan resiko kegagalan proyek.

Oke, selanjutnya, ... pasti saya akan pakai Microsoft Access untuk desain databasenya. Perkara nanti akan di convert ke database apapun, pokoknya dalam tahap desain ini, kudu pakai Microsoft Access 2007 (tidak 2003). So, simple, ini visualisasi tabel2 yang tercipta:

db

Selanjutnya yang menjadi masalah adalah ini : saya harus bisa memanggil data biaya masing-masing rekening untuk tahun kapapun. Contoh, kapanpun, saya harus bisa memanggil data biaya untuk Rekening 11003 di tahun 2004,2003 dan tahun kapanpun.

Nah, bagaimana caranya?

Tentu, saya bisa melakukan sekedar operasi Basis Data SELECT dengan kriteria nomor rekening dan tahun tertentu. Tapi, tak terbayangkan kalau terus-menerus melakukan query ke basis data. Solusi yang paling terlihat, adalah menyimpan semua data biaya masing-masing rekening pada tiap tahun ke memori. Dengan struktur data yang memungkin pengaksesan secara langsung. Menggunakan Visual Basic.NET 2008.

Tanpa banyak penjelasan, ini kodenya:

image

 

Perhatikan saya menggunakan Array DaftarRekening yang tiap elemen array merupakan objek dari instan Kelas SortedList. Nah, kuncinya adalah SortedList. Kalau di Java yang idem adalah HashMap. Dengan SortedList kita bisa mengakses tiap elemen pada sorted list dengan KEY-nya, yang berupa nomor rekening. Tentu, tidak boleh ada item yang memiliki KEY yang sama. Jadi, data biaya tiap tahun disimpan pada array elemen ke - n, dengan tiap elemen array itu sendiri bisa diakses dengan pengaksesan langsung menggunakan KEY-nya.

Saya simpulkan, berikut adalah kode untuk menambah elemen ke sorted list :

DaftarRekening(i - TahunAwal).Add(dr.GetString(0), dr.GetDouble(1))

Dan ini untuk mengakses elemennya :

MessageBox.Show(DaftarRekening(2007 - TahunAwal).Item("1"))

Perhatikan bahwa kode penambahan adalah dengan ADD, dimana argumen pertama merupakan KEY dari item, dan argumen kedua merupakan OBJECT yang akan ditambahkan. OBJECT apapun bisa. Sekedar variabel primitif spt Integer, Float bisa. Atau yang kompleks Object dari sebuah kelas juga bisa. Ringan sekali mengimplementasikan ini di VB.NET

Kemudian, perhatikan bahwa kode pengaksesan adalah dengan menggunakan KEY-nya.

Terakhir, perhatikan bahwa indeks array memegang peranan penting. Kasus di sini adalah data dari tahun 2003 .. 2007. So, 2003 adalah indeks ke 0, 2004 adalah indeks ke 1, dst. Sehingga, tentu untuk mendapatkan indeks pertama, kita kurangkan dengan angka tahun awal tersebut : 2003.

Mudah kan?

Semoga bermanfaat dan memberi inspirasi!

NB:

  • Baru kemarin ini saya mulai (tp sudah ada 3 tabel tercipta sebelumnya) u bimbingan thesis ini, sy perkirakan (smoga) 3 hari lagi (dengan tiap hari pertemuan @4jam) semua kalkulasi selesai. Lebih bagus (tentu) dengan visualisasi Report yang berupa Grafik.
  • Untuk urusan input, saya pending dulu, cukup entri di Access 2007, dan langsung implementasikan proses SPK/DSS. Kalau semua Oke, baru input dikembangkan.
  • Senang sekali.
  • Alhamdulillah

Monday, December 01, 2008

Desain Database untuk Aplikasi ANP

Ini adalah rancangan basis data untuk aplikasi ANP. Silahkan dicermati :

Anp

(Draft)

NB :

  • Kalau ada yg bertanya baru saya jelaskan.... ^_^
  • Ini struktur yg bs nangani segala macam jenis input perbandingan node dalam ANP, tp utamanya (kalau menggunakan Super Decision) metode Direct Entry. Dari direct entry, semua jenis input sperti perbandingan dsb, bisa diturunkan.
  • Semoga bermanfaat!

Wednesday, March 19, 2008

Pemilihan Teknologi Untuk Tahap Desain Basis Data : Microsoft Access


Awalnya saya merasa cukup dengan MySQL Query Browser, sampai beberapa point ini muncul:
  1. Beberapa kerjaan desain basis data secara serentak
  2. Tidak ada dokumentasi ERD, DAD, dsb.
  3. Terputusnya waktu pengerjaan beberapa minggu
Kesemua point di atas menyebabkan munculnya kesulitan pengembangan desain dari permasalahan2 yang harus segera diselesaikan.

Sesungguhnya kesemuanya mudah, namun saat point ke 3 terjadi, maka pikiran jadi blank. Solusi? Saya tak menggunakan DAD atau ERD. Kode? Tak semudah itu mengembalikan semua ingatan tentang kondisi program.

Terbayang juga menggunakan Sybase Power Designer, namun saya rasa tak seinteraktif jika menggunakan MS Access.

Mengapa MS Access???

Menurut saya, masalah utama dalam desain database adalah Master - Child relationship. Jadi, Anda punya tabel utama, yang nanti dibawahnya akan dibuat satu atau beberapa tabel yang bergantung terhadap tabel utama tersebut. Dari masalah ini, akan muncul istilah2 seperti Foreign Key, Integrity Constraint, Cascading Update/Delete dsb.

Menggunakan Designer Database berbasis ERD, maka Anda harus menggambar Tabel Utama (Master), kemudian Tabel Turunannya (Child). Jika menggunakan MySQL Query Browser, maka Anda membuat kedua tabel tersebut, untuk kemudian mendefinisikan relasinya pada Tab Foreign Key.

Tapi, menurut saya, cara tersebut tidak sebaik yang ditawarkan Access. Meski (sejauh pengalaman saya), Anda tidak bisa membuat Tabel Child otomatis saat Anda membuka Tabel Master, namun tetap visualisasi dan pembentukan Tabel Child masih lebih baik ketimbang dua cara yang saya sebutkan di atas.

Singkat saja (insya Allah akan tambahkan artikel desain database SPK/DSS dengan AHP/ANP yang sedang saya kerjakan, smg bermanfaat), ini merupakan salah satu suasana desain Master-Child di Access :

Master Child Data


Dalam Access istilah Child Tabel dipergunakan istilah Sub DataSheet. Perhatikan bahwa sebelumnya saya membuat dulu tabel Klaster, kemudian saya buat lagi Tabel KlasterItem. Nah, saat pembuatannya itu yang menarik sekali. Saat membuat Tabel KlasterItem (yg merupakan anak Tabel Klaster), Anda cukup menggunakan Add Existing Field pada Ribbon Bar Table Tools -> Datasheet, dan Drag and Drop field Nama dari Tabel Klaster Item, seperti yang ditunjukkan pada gambar ini :


Teknik Desain Master-Child (Subdatasheed) di MS Access 2007


Insya Allah desain banyak aplikasi menjadi lebih mudah.

Tantangan Deployment/Production

Masalahnya sepertinya satu (so far) : bagaimana jika aplikasi menuntut Skalabilitas Client-Server/Internet? Maka jawabannya adalah : Konverter dari Access ke MySQL dan sebaliknya bisa dipergunakan. Silahkan menggunakan salah satu produk yang muncul dari hit berikut ini : convert access 2 mysql.

Semoga bermanfaat!

NB :
  • Masalah ini muncul dari dua aplikasi DSS/SPK yang menggunakan basis data. Setelah sukses menggunakan MySQL di aplikasi sebelumnya, saya latah menggunakannya juga u/ desain (dan langsung coding) software DSS. Ternyata timbul masalah yang mungkin spesifik u/ aplikasi DSS.
  • Masalah itu adalah situasi desain yang langsung coding, mengharapkan Anda mampu kembali setiap saat ke aplikasi dengan cepat, meskipun ada waktu jeda beberapa hari/minggu. Nah, tanpa DAD/DFD, maka sekedar plain MySQL Query Browser tidak cukup.
  • Dan sepertinya begitu juga dengan aplikasi Desain Database via ERD, karena data tidak bisa langsung diuji.
  • Maka solusinya adalah lingkungan desain (dan manipulasi data) database yang interaktif, yaitu Microsoft Access.
  • Ada solusi lain?

Terakhir

Saya rasa kesuksesan proyek DSS saya sebelumnya juga karena saya menggunakan MS Access. Sepertinya begitu...