Friday, December 6, 2013

"Kunci Pengganti" (Surrogate key) pemrograman (Wajib di baca bagi mahasiswa TI)

,
Dalam tulisan kali ini saya mengawali dengan "Primary key" atau "Foreign key" yang di ajarkan di pemrograman oleh para dosen, atau pun anda yang belajar dari buku pemrograman dan sebagainya.

Primary key

biasa di pakai dalam database adalah kode yang di inputkan oleh user.
Contoh:
  • untuk master Barang, yang di gunakan sebagai primary key biasanya adalah kode barang.
  • untuk master pelanggan, yang di gunakan biasanya juga kode customer.
  • Master supplier dan sebagainya biasanya juga menggunakan kode yang di inputkan oleh user.
Cara seperti ini sudah sering di pakai untuk pemrograman di awal kita belajar bahasa pemrograman. Tetapi, cara seperti ini banyak mengandung kelemahan.
  1. Kode yang sudah di inputkan oleh user, tidak akan bisa di edit, karena kode tersebut di gunakan untuk primary key, yang menjadi foreign key dari table lain. Jika kode tersebut di ganti, maka hubungan antar table akan menjadi rancu, dan beberapa form tidak akan jalan dengan baik karena primary key / foreign key yang di maksud telah di rubah.
  2. Berhubungan dengan poin pertama, karena kode tidak bisa di ubah, saat user salah memasukan kode, maka kode itu tidak bisa di edit kembali. Kalau pun bisa di ubah, itu hanya di perbolehkan saat master tersebut belum di pakai dalam table transaksi mana pun.
  3. Kalau pun berhasil menemukan algorithm agar kode bisa di rubah, hal itu menghabiskan waktu, karena harus membuat trigger dan sebagainya untuk mengganti semua foreign key yang berhubungan dengan kode table master yang di ganti.
Dalam artikel kali ini, saya ingin menjelaskan tentang:

Surrogate key.

Surrogate (1) – Hall, Owlett and Codd (1976)

A surrogate represents an entity in the outside world. The surrogate is internally generated by the system but is nevertheless visible to the user or application. 

Surrogate (2) – Wieringa and De Jonge (1991)

A surrogate represents an object in the database itself. The surrogate is internally generated by the system and is invisible to the user or application.
 Jika di jelaskan dengan bahasa sehari-hari, jadi surrogate key itu adalah key yang di generate dari program. Biasanya menggunakan auto index number. Di kolom pertama dalam database, di gunakan field yang menghasilkan angka secara berurutan. Key ini tidak di tampilkan dalam aplikasi ataupun ke user.

Contoh konkritnya:
sebuah tabel barang (item), biasanya menggunakan kode barang untuk key (primary key). Dibandingkan dengan kode barang, surrogate key menggunakan nomor generate di kolom depan kode, dengan urutan sesuai dengan jumlah record yang di inputkan.
contoh tabel:
TABLE ITEM
ITEM_ID (surrogate key) ITEM_CODE (unique key) ITEM_DESCRIPTION
1 HVS70GR Kertas HVS 70gr
2 Q80GR Kertas Quarto 80gr
3 A470GR Kertas A4 70gr

Dari tabel di atas, dapat di ketahui, primary key yang di pakai adalah ITEM_ID, sedangkan kode barang hanya di gunakan sebagai index unique. ITEM_ID tidak akan pernah muncul di interface, di layar yang di gunakan user, dan user tidak dapat merubah nilainya.

ITEM_ID yang ada di master barang, menjadi foreign key untuk tabel transaksi lainnya. Contoh tabel transaksi detail penjualan:

TABLE JUAL
JUAL_DETAIL_ID ITEM_ID QTY
1 2 5
2 3 3
3 3 4


Dari contoh tabel di atas dapat di lihat, JUAL_DETAIL_ID menjadi primary key (surrogate key) dari tabel JUAL_DETAIL, sedangkan ITEM_ID menjadi foreign key (surrogate key).
Jadi dalam satu transaksi, terdapat penjualan quarto 80gr sebanyak 5 unit, A4 70gr sebanyak 3 unit, dan A4 70gr sebanyak 4 unit. 

Kedua key tersebut tidak akan pernah di tampilkan dalam interface.


keuntungan menggunakan surrogate key:


surrogate key tidak akan berubah selama baris ada.

Ini memiliki keuntungan sebagai berikut:

  • Aplikasi tidak bisa kehilangan referensi mereka (karena identifier tidak pernah berubah).
  • Data primary key atau foreign key selalu dapat dimodifikasi (kode supplier, barang, dsb).

Performance:

untuk performa, karena surrogate key hanya menggunakan angka generate dari system, maka field ini bisa menggunakan integer 4 digit saja. Jadi saat melakukan query, proses akan lebih cepat, karena index hanya terdapat di satu kolom saja.


Kerugian:

  • Nilai yang di keluarkan oleh surrogate key tidak memiliki arti sesungguhnya, karena hanya berupa angka generate. Jadi ketika kita mencari referensi dalam tabel yang berbeda, kita perlu men-join-kan beberapa tabel agar mengerti key apa yang sedang kita pakai.
  • Karena key yang sebenarnya kita gantikan dengan surrogate key, sedangkan yang di namakan key itu harus unique, maka kita perlu memberi index (unique) pada kolom yang sebenarnya adalah key. jadi database akan membaca keseluruhan tabel jika di perlukan.
Jadi, di bandingkan dengan penggunakan primary key dengan menggunakan kode, saya pribadi lebih menyukai menggunakan surrogate key.

Nara sumber:
Read more →

Tuesday, December 3, 2013

TABLET or Mobile using keyboard

,
Postingan pertama di blog ini. mau berbagi dengan para pengguna TAB. Kebanyakan mereka mengeluh kalau menggunakan TAB tidak bisa mengetik cepat dengan menggunakan 10 jari. Karena besarnyalayar yang ada di tab terbatas, sedangkan keyboard virtual yang muncul di halaman TAB itu besarnya juga terbatas, dan sering salah ketik karena besarnya keyboard tidak seperti keyboard yang standar yang sering kita gunakan.

Kebetulan TAB yang saya pakai adalah ACER A500, ini memiliki USB port. Awalnya saya menggunakannya untuk transfer file dari data storage seperti flash disk, mobile phone (dengan kabel data).

Tetapi setelah saya membaca blog dari seorang bloger yang ada di luar, dia mengatakan kalau usb port ini bisa di isi dengan usb keyboard. Ya, saya cobalah pakai usb keybord standar yang ada di rumah. Ternyata berfungsi dengan baik, seperti keyboard kebanyakan. sekarang saya menulis blog ini pun dengan A500 saya, dan saya pasang keyboard standar.

Tapi muncul masalah baru, TAB itu di desain untuk mobile, sedangkan apakah saya harus membawa keyboard ke mana pun saya pergi supaya bisa menulis blog? Hal ini jadi menyulitkan saya.

keyboard flesibel berbahan karet dengan ACER A500
Saya ingat waktu saya jalan-jalan di Hi-Tech Mall surabaya, saya pernah melihat keyboard dengan bahan karet, yang bisa flesibel dan di lipat-lipat menjadi kecil dan bisa masuk ke tas kecil saya.

Sekarang jadilah, 2 device ini selalu saya bawa kemana-mana untuk sekedar chat, menulis blog, atau sharing tentang apa pun juga tanpa harus lambat dalam mengetik.

keyboard flesibel berbahan karet dengan ACER A500

Selamat mencoba Keyboard di Tablet... (bagi yang punya A500)

Tambahan:
cara ke-2:
Micro USB Male to USB Female OTG Data Adapter Cable
Micro USB Male to USB Female OTG Data Adapter Cable
Saya masih terus mencari info mengenai keyboard yang bisa di gunakan di andoird TAB, ternyata semua android yang menggunakan kabel data (ujungnya serupa dengan kabel data Blackberry dkk) bisa menggunakan keyboard. Hanya beli converter kabelnya saja, dari kabel data menuju USB port, lalu keyboard USB anda bisa di pakai juga.



cara ke-3:
Menggunakan Keyboard Bluetooth.
Tinggal konek ke bluetooth TAB anda, walaa, jalan. Memang untuk yang satu ini ongkosnya lebih besar di bandingkan dengan 2 cara yang di atas.





Ini juga bisa berfungsi untuk yang jualan online dengan BB. Saya memang belum pernah coba untuk BB type lain yang bisa menggunakan keyboard. Tapi sepertinya ini sangat membantu untuk support di BB, dari pada jempol capek di buat ketik, lebih baik beli converter keyboard, jadi bisa support client-client dengan cepat.
Read more →