Primary Key Dilemma (Numeric or Character)

Started by hatRed, 14 January 2009, 07:06:43 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

tesla

Quote from: hatRed on 15 January 2009, 11:08:58 AM
so........

it's better to choose numeric :)

and better more to autonumber :)

semua depend on condition :)
Lepaskan keserakahan akan kesenangan. Lihatlah bahwa melepaskan dunia adalah kedamaian. Tidak ada sesuatu pun yang perlu kau raup, dan tidak ada satu pun yang perlu kau dorong pergi. ~ Buddha ~

hatRed

Quote from: tesla on 15 January 2009, 11:30:16 AM
Quote from: hatRed on 15 January 2009, 11:08:58 AM
so........

it's better to choose numeric :)

and better more to autonumber :)

semua depend on condition :)

kondisi seperti apa saja yang menjadikan kedua hal demikian tidak lebih baik?
i'm just a mammal with troubled soul



tesla

Quote from: hatRed on 15 January 2009, 11:39:34 AM
Quote from: tesla on 15 January 2009, 11:30:16 AM
Quote from: hatRed on 15 January 2009, 11:08:58 AM
so........

it's better to choose numeric :)

and better more to autonumber :)

semua depend on condition :)

kondisi seperti apa saja yang menjadikan kedua hal demikian tidak lebih baik?

ada kalanya value primary key diserahkan langsung ke user, disini saya pakai char atau varchar

pada kode transaksi misalnya, saya sering pakai (var)char walaupun key tsb digenerate oleh programming logic dg parameter seperti taun bulan tanggal.
Lepaskan keserakahan akan kesenangan. Lihatlah bahwa melepaskan dunia adalah kedamaian. Tidak ada sesuatu pun yang perlu kau raup, dan tidak ada satu pun yang perlu kau dorong pergi. ~ Buddha ~

hatRed

bukankah tadi masalah tersebut diatasi dengan unique field

jadi

prim key   uniq key    otherfield

 int               yyyymmdd##0        field


jadi user sebenarnya input uniq key. tetapi tetap prim keynya numeric. :D

gmana :-?
i'm just a mammal with troubled soul



tesla

Quote from: hatRed on 15 January 2009, 12:49:15 PM
bukankah tadi masalah tersebut diatasi dengan unique field

jadi

prim key   uniq key    otherfield

int               yyyymmdd##0        field


jadi user sebenarnya input uniq key. tetapi tetap prim keynya numeric. :D

gmana :-?

itu dia...  kalau saya, lihat masalah di kenyataan lapangan dulu

1. kalau valuenya tetap (tidak akan berubah di kemudian hari)
saya pakai format: PK = userId

2. tapi kalau ada kemungkinan mengubah valuenya, saya menggeser value tsb ke unique column & menambahkan PK dg type unsigned int auto increment
format: PK = auto inc, unique col = userId

seperti yg bro hatred jelaskan kelebihan & kekurangan sebelumnya...
bahwa solusi ke2 itu membebankan 'memory size'
jadi saya pakai pada saat dibutuhkan saja.

mengenai kecepatan pencarian, saya agak ragu...
soalnya kriteria pencarian sering tidak berdasarkan primary key.
bisa berdasarkan kolom lain yg bahkan tidak unique sekalipun.
demikian jg utk nested join...
nested join tidak selalu menggunakan hubungan antar PK & FK,
dalam kejadian nyata yg complex malah sering dipakai kolom lainnya...

tambah lagi, berhubung ada fasilitas indexing dari database yg sebenarnya mungkin kerjanya mirip dg mentranslasi format #1 ke format #2 tanpa perlu dipusingkan oleh programmer...
& indexing mereka itu idealnya sudah terurut berdasarkan value di PK, jadi perbedaan pencarian,
saya rasa tidak signifikan jg... (walau perbedaan space memory jg tidak terlalu signifikan jg)
Lepaskan keserakahan akan kesenangan. Lihatlah bahwa melepaskan dunia adalah kedamaian. Tidak ada sesuatu pun yang perlu kau raup, dan tidak ada satu pun yang perlu kau dorong pergi. ~ Buddha ~