|
|
Rank: มือพระกาฬ Groups: Member
Joined: 1/8/2008 Posts: 24 Location: Ngamwongwan
|
พอดี ผม ใช้ Int อยู่หนะครับ แล้ว คราวนี้ มีคนมาบอกว่า ไม่มี โปรแกรมเมอร์คนไหน ออกแบบ ฐานข้อมูล ID เป็น Int ผม เลย ลังเล และ ถ้าเป็น String ดีกว่า เพราะอะไร ผม งง และ ลังเลหนะ ครับ
เพราะตอนนี้ กำลัง ออกแบบ ฐานข้อมูล แล้วต้องการ จะออกแบบให้ ดี เลย ต้องถาม หลายๆ ท่านเพื่อ ฐานข้อมูล ที่ เสถียร และดีหนะครับ
ขอรบกวนผุ้รู้ ช่วยบอกหน่อย นะครับ ผม เริ่ม ลังเลและ สงสัย แล้วอะครับ
ขอบคุณครับผม
I LIKE DOTNET DOTNET Never DIe`
|
|
 Rank: มือเทพ Groups: Member
Joined: 12/6/2007 Posts: 354 Location: bkk
|
กรณีที่ ID มีเลขตัวเดียวที่มีขนาดข้อมูลไม่ใหญ่มากเช่น 1,2,3,100,101 แล้วข้อมูลนั้นเพิ่มค่าตลอดไม่ซ้ำกันเลย (Identity) ก็ควรกำหนดเป็น INTEGER แต่ถ้า มี ID ที่ไม่ใช่เลขตัวเดียวเช่น 44564571 ก็ควรกำหนดเป็น VARCHAR ดีกว่าครับ [With great power comes great responsibility]
|
|
 Rank: อาจารย์ Groups: Administration
Joined: 12/1/2007 Posts: 473 Location: Bangkok
|
ลองพิจารณาดูที่ uniqueidentifier ดูก็ได้นะ (เขาว่าเป็น ID ที่ไม่ซ้ำกันทั่วโลก)
รูปร่างหน้าตามันจะเป็นตัวอักษรเรียงกันขนาด 32 ตัวกับอีก 4 ขีด รวมเป็น 36 ตัวแบบนี้ 0CAEB517-C2AD-43B1-BF50-DEE37BB06C46
คุณสามารถสร้างไอดีนี้ได้ด้วยคำสั่งใน SQL คือ newid()
และเมื่อนำมาใช้ใน C# จะเปรียบได้กับ Guid คุณสามารถสร้างไอดีได้โดย Guid.NewGuid()
จะสะดวกกว่า Identity เพราะสามารถสร้างจากที่ C# หรือ SQL ก็ได้
Imagination is more Important than Knowledge... /A.Einstein
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 1/8/2008 Posts: 24 Location: Ngamwongwan
|
สรุปว่า ผมออกแบบ เป็น
PersonalID = Int Set PrimaryKey, Identity = yes
PersonalCode = nvarchar(10) Set PrimaryKey value=501451523
ถ้าอย่างนี้จะ work ไหมครับ ถ้า work ก็ขอขอบคุณ พี่เป้ มือเทพ และ อาจารย์บอล Net Design
I LIKE DOTNET DOTNET Never DIe`
|
|
 Rank: มือเทพ Groups: Member
Joined: 12/6/2007 Posts: 354 Location: bkk
|
แล้ว PersonalID กับ PersonalCode อยู่ใน Table เดี่ยวกันหรือเปล่าครับถ้าอยู่ใน Table เดียวกัน จะออกแบบ แบบนี้ไม่ได้นะครับเพราะว่า ใน หนึ่ง Table จะมี PK (Primary key) แค่ หนึ่ง key นะครับนอกจากว่า จะจับคู่ field ที่ชื่อ PersonalID กับ PersonalCode รวมกันเป็น PK อันนี้ก็ได้เหมือนกันแต่มีข้อยกเว้นว่าถ้าจับคู้ ทั้งสอง field นี้แล้ว field ทั้งสองนี้จะต้องรวมกันไม่ซ้ำกันนะครับเช่น
PersonalID PersonalCode
100 471
101 468
100 472
100 471 -----> คู่นี้ไม่ได้นะครับเพราะว่าเมื่อรวมกันแล้วซ้ำกับคู่แรก
[With great power comes great responsibility]
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 1/8/2008 Posts: 24 Location: Ngamwongwan
|
อ่อครับผม กระจ่างแล้ว ครับ ขอบคุณ พี่ เป้ มากๆ เลยนะครับ และอาจารย์บอล ด้วยนะครับ
I LIKE DOTNET DOTNET Never DIe`
|
|
|
Guest |