2013-01-30

CRUD Part 4 : mengenai Table

Table?? Kenapa table jadi dibahas di CRUD?? sebenarnya pembuatan table penting dalam hal membuat CRUD menjadi lebih efektif! salah satunya tentu di dalam program kamu selain dibaca isinya (keterangan), juga dibaca keterangan dan atribut lainnya seperti siapa yang edit terakhir, kapan di input dan lain-lain! Tetapi dalam tulisan ini sebenarnya lebih membahas konsep table setelah normalisasi.

Sejujurnya Normalisasi itu tidak mudah! Bahkan table yang kubuat tidak bisa dibilang melalui Normalisasi. Hanya saja kadang kita menginginkan table yang menurut kita lebih cepat dibuat bukan memikirkan apa yang terjadi bila table ini nantinya bertambah fieldnya. Table yang kamu buat harus setidaknya memiliki 3 field penting yaitu

  • id. saya lebih suka memakai angka
  • status. standar awalnya 1
  • tanggal. yang akan dibahas detail dibawah!

Sementara itu kita tentu mengenal foreign key, kunci yang berasal dari id di table lain. Usahakan penamaannya membuat kamu tahu kemana harus mencari. selain itu kita tentu mengenal table master dan sekunder! Mungkin penamaannya kurang tepat tetapi mari memakai kata
  • table yang dilarang berubah
  • table yang data akan berubah

TABLE YANG FIXED

atau table yang dilarang berubah. Maksudnya disini table tersebut berisi data yang TIDAK boleh ada perubahan didalamnya. Ini berguna untuk mengetahui kapan data itu dimasukkan, bahkan kita bisa menambahkan proteksi agar tidak boleh melakukan perubahan didalam table tersebut (walau saya tidak tahu caranya). Mari kita ambil contoh data barang, saya membuat table barang dengan format
  • id
  • tanggal
  • user
  • status
Disini kamu cukup menuliskan id usernya saja. Karena id, tanggal dan status akan otomatis terisi. Tentu ada muncul pertanyaan.. dimana saya bisa mengisi nama, ukuran barang dan lain-lain!! jawabannya ada di table turunannya, saya biasa menyebut table detail! Nantinya kita bisa membuat turunannya lagi, dan sebagai kata/kode kuncinya di ambil dari id yang ada di table ini

TABLE TURUNAN

Sesuai namanya yaitu table turunan dari table di atas, yang kuberi nama barang_detail. Di table ini berisi field2 yang kamu gunakan, tetapi sekali lagi jangan lupa konsep 3 field penting yang harus ada, karena disini butuh user, jangan lupakan itu! Disini ada beberapa tingkat yang mungkin bisa kamu gunakan metodenya! tetapi sejujurnya saya memakai yang no 2! aka menengah

SARAN TIPE FIELD

Sebenarnya saran ini sudah pernah ditulis, tetapi ada bagusnya ditulis kembali. dalam membuat field, kita akan kesulitan memilih tipe yang tepat. Bila saya memakai 3 tipe yaitu
  • integer atau angka
  • char atau kata
  • text atau kalimat
penamaan yang saya lakukan jangan di ikuti, itu tidak ada dalam buku. Bila ada dalam buku, berarti buku itu nyontek saja (LOL). Lalu kapan digunakan tipe-tipe itu!
  • Integer. Digunakan untuk sesuatu yang bersifat dapat dihitung. Tentu ada satu hal yang sebenarnya tak pernah dihitung tetapi harus masuk seperti telepon! karena kita harus memastikan bahwa yang dimasukkan adalah angka. Sebenarnya saya menolak pernyataan tersebut, tetapi gaya orang tentu berbeda-beda. Namun ada baiknya untuk semua yang bersifat di hitung harus jadi integer bila tidak kata
  • Char. paling sering digunakan, saya memakai VARCHAR dibandingkan CHAR karena masalah kebiasaan saja! Memang ada landasan kenapa pake VARCHAR daripada CHAR. Tetapi yang penting disini adalah bila kriteria integer tak masuk maka gunakan char! pastikan ukurannya tepat jangan sampai ada data terpotong!  Lalu bagaimana dengan text!? 
  • Text. sejujurnya yang namanya text adalah data yang memiliki panjang tak DIKETAHUI !! walau sejujurnya saya mengetahui batasnya sampe 800kb! atau 800.000 huruf! Bila data yang digunakan memiliki enter, maka gunakan saja text (tiny text sebenarnya saya tidak gunakan karena masalah kebiasaan?). 
Tetapi terkadang data yang masuk bukanlah berisi kata yang biasa kugunakan, ada yang memasukkan huruf jepang, arab dan lain-lain. Tip berikut mungkin bisa bantu, kalau tidak berhasil gunakan BLOB
  • ganti tipe encodingnya
  • convert datanya dahulu sebelum di input agar bisa masuk ke text lalu convert balik saat di baca. kalau tidak salah memakai html_entities?
Sekedar saran, lebih baik bila anda menginginkan memasukkan gambar ke field bukan memasukkan gambar (data) ke database tetapi nama dan tipenya saja. Sedangkan gambar/filenya di taro di folder image/asset (saran teman)

Untuk penamaan terserah anda, biasa orang memakai namanya langsung seperti id, name, price dan lain-lain. kalau saya lebih memakai konsep
{nama singkat table}_{nama field}
contoh idet_name

Level Pemula

pada level ini, kamu membuat field sesuai field yang kamu butuhkan. Disini kamu melihat bahwa yang dibutuhkan cuma 3 field yaitu nama, harga dan satuan. Jadi kamu membuat 7 field untuk table detailnya. Untuk formatnya, saya menyarankan mengikuti saran di atas.

LEVEL MENENGAH

untuk level ini, kamu membutuhkan 1 table yang dinamakan table variable! saya memberi nama item_var dan pada table detail hanya berisi 6 field saja!! tambahannya hanya 
  • det_var. berisi id dari table variable! 
  • det_value. berisi nilainya.
Hal yang merepotkan dari tahap ini adalah, kamu harus melakukan input berkali-kali dan nantinya update berkali2 untuk 1 field. Tapi keuntungannya bila ada tambahan field, maka kamu bisa langsung input tanpa merubah table detail, tentu saja yang kamu ubah adalah table variable (datanya)

Level Mahir

Ini level yang cukup asik sebenarnya, kamu sebenarnya hanya butuh 1 field jadi total yang kamu miliki (table) adalah 5! konsepnya adalah memakai json, jadi untuk membuat jadi json pake json_encode dan membaca memakai json_decode. Caranya juga terbilang gampang:
  • buat semua data dalam array. Contoh : ar[nama]=nama
  • lakukan json_encode
  • masukkan ke field
cukup sederhana khan? memang, sampai kamu menemukan bahwa kamu membutuhkan beberapa field yang harus digunakan untuk pencarian. Maka dari sini mulailah membagi apa saja yang nanti digunakan untuk pencarian, yang tidak digunakan untuk pencarian jadikan field json, lainnya hadirkan secara normal.

TIPE FIELD TANGGAL

Disini saya memakai tanggal dengan timestamp dan memakai default yang akan otomatis mengisi, juga on update akan mengisi/ update juga. dengan demikian kita tak butuh input tanggal dan jam, karena sudah dilakukan di mysql (bila memakai dbms ini). Namun bila tidak ada, tolong dibuat dengan format datetime (karena waktunya juga penting).

KUNCI DALAM TABLE

table yang bagus memiliki kunci seperti
  • primary. Yang saya letakkan di ID dan ID ini selalu dibuat dalam bentuk auto increment
  • unique. Kata kunci unik dimana kamu tidak bisa / boleh memiliki isi yang sama/kembar
  • index. Sangat diperlukan bila data termasuk yang dicari, tetapi tidak saya gunakan karena belakangan saya merasa bahwa index kadang tak berguna karena jarang adanya pencarian data digunakan. Sejujurnya saya lebih suka bila tidak menggunakan index
bagaimana struktur table, tergantung pada anda. Semoga anda dapat membuat table yang sesuai keinginan kamu. INGAT usahakan yang mempermudah kamu coding, tetapi pikirkan juga bila nanti yang coding orang lain. sering2 buat dan memperhatikan, maka kamu dapat menemukan metode/bentuk yang sesuai

KESIMPULAN

Sejujurnya membuat CRUD memang mudah, karena FW kamu sudah menyediakannya (CMS juga). Tetapi kadang ada beberapa rule yang mengharuskan kamu membuat sendiri. Tips saya semoga bisa membantu! Tetapi tolong jangan lupa subscribe agar anda bisa dapat ilmu-ilmu baru!

Mengenai level table, sejujurnya saya sempat merasa bingung karena level mahir tidak tepat! Tapi alasan kenapa dimasukkan ke level mahir (penggunaan JSON), karena format JSON adalah format yang umum di dalam web!! bahkan jquery saja menggunakan JSON untuk ajax dan lain-lain. Bahkan kedepannya tehnik memakai JSON ini bisa berkembang lebih pesat dibandingkan cara saya yang sering digunakan (memakai table variable)

Tidak ada komentar: