all-in-one

Sebagai seorang pencinta buku, sudah tentu buku yang saya punya cukup banyak, dan pencatatan menjadi cukup penting. Selain mengoleksi buku, saya juga punya koleksi koin dan koleksi film. Sudah lama saya mencari program yang tugasnya hanya mencatat benda koleksi seseorang, tapi tidak pernah dapat yang benar2 pamungkas. Karena saya memprioritaskan satu program dengan banyak tipe koleksi, berarti program itu harus bisa mengelola data koleksi buku dan film, padahal field yang digunakan dalam dua koleksi itu sangat jauh berbeda (apalagi kalau koleksi koin).

Sesudah istri saya meminta saya untuk mendokumentasikan seluruh tas miliknya (istri saya senang mengoleksi tas), saya jadi berpikir untuk bikin sendiri program pengelola koleksi itu. Akhirnya tercetus sebuah ide dalam benak saya untuk membuat koleksi dengan field dinamis, user bisa mendefinisikan sendiri field2 apa saja yang mau disimpan. Atau dalam istilah OOP, si user bisa mendefinisikan property apa saja yang terdapat dalam sebuah objek koleksi. Dan untuk mengakomodir user2 malas seperti saya, bisa disiapkan template untuk berbagai macam koleksi yang bisa diedit.

Karena koleksi semacem ini biasanya cuma dipake oleh 1 orang, maka yang paling gampang pake SQLite.

Ini dia struktur table nya:

Tabel Koleksi

IDAuto Number
NamaNama Koleksi
CatatanCatatan koleksi (tanggal dimulai, dll)
BarisAkhirNomor baris yang terakhir dipakai (pada table BARIS)

Tabel Kolom

IDAuto Number
KOLEKSI_IDNomor ID dari table KOLEKSI
NAMANama field
TIPETipe data field (string, numeric, date)
URUTANUrutan posisi field
REFERENSIReferensi nilai. Untuk tipe field yang isinya sudah ditentukan dari daftar

Tabel Baris

IDAuto Number
KOLEKSI_IDNomor ID dari table KOLEKSI
KOLOM_IDNomor ID dari table KOLOM
NILAIIsi field
NO_BARISNomor urut data (tidak boleh dobel, sekuen bisa terputus apabila ada penghapusan data)

Tabel Lampiran

IDAuto Number
KOLEKSI_IDNomor ID dari table KOLEKSI
NO_BARISNomor urut data. Satu nomor urut bisa mempunyai lebih dari satu lampiran
NAMA_FILENama file lampiran
BERKASIsi file lampiran

Contoh datanya kira2 seperti ini:

Isi Table Koleksi

IDNamaCatatanBarisAkhir
1Koleksi Tas-2

Isi Tabel Kolom

IDKOLEKSI_IDNAMATIPEURUTANREFERENSI
11MerkSTRING1Charles & Keith|Gucci|Channel
21WarnaSTRING2
31HargaNUMERIC3
41Tanggal BeliDATE4

Isi Tabel Baris

IDKOLEKSI_IDKOLOM_IDNILAINO_BARIS
111Charles & Keith1
212Hijau Pupus1
3136300001
4142011-03-241
511Gucci2
612Merah2
71321000002
8142012-01-192

Isi Tabel Lampiran

IDKOLEKSI_IDNO_BARISNAMA_FILEBERKAS
111foto1.jpg--blob--
212tas.png--blob--

Nantinya akan ditampilkan seperti ini:

NoMerkWarnaHargaTanggal Beli
1Charles & KeithHijau Pupus630.0002011-03-24
2GucciMerah2.100.0002012-01-19

Jadi deh program pencatat koleksi yang dinamis cuma pake 4 table. Tinggal pinter2 aja nge-query. Kalau perlu bikin view untuk setiap koleksi yang ada, misal untuk koleksi ID=1 viewnya “view_koleksi_1”, dst.