.NET Logo
Welcome Guest Search | Active Topics | Members | Log In | Register

SQL Server ครับ ID เรา ควรจะเก็บ เป็น Int หรือ String ดีครับ Options · View
Sifered
Posted: Monday, January 28, 2008 8:53:34 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 1/8/2008
Posts: 24
Location: Ngamwongwan

พอดี ผม ใช้ Int อยู่หนะครับ แล้ว คราวนี้ มีคนมาบอกว่า ไม่มี โปรแกรมเมอร์คนไหน ออกแบบ ฐานข้อมูล ID เป็น Int ผม เลย ลังเล และ ถ้าเป็น String ดีกว่า เพราะอะไร  ผม งง และ ลังเลหนะ ครับ

เพราะตอนนี้ กำลัง ออกแบบ ฐานข้อมูล แล้วต้องการ จะออกแบบให้ ดี เลย ต้องถาม หลายๆ ท่านเพื่อ ฐานข้อมูล ที่ เสถียร และดีหนะครับ

ขอรบกวนผุ้รู้ ช่วยบอกหน่อย นะครับ ผม เริ่ม ลังเลและ สงสัย แล้วอะครับ

 

ขอบคุณครับผม



I LIKE DOTNET

DOTNET Never DIe`
paedotnet
Posted: Monday, January 28, 2008 10:23:21 PM

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]
ball
Posted: Tuesday, January 29, 2008 12:37:13 AM

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
Sifered
Posted: Tuesday, January 29, 2008 8:22:12 AM
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`
paedotnet
Posted: Tuesday, January 29, 2008 10:20:32 PM

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]
Sifered
Posted: Tuesday, January 29, 2008 10:26:53 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 1/8/2008
Posts: 24
Location: Ngamwongwan

อ่อครับผม กระจ่างแล้ว ครับ ขอบคุณ พี่ เป้ มากๆ เลยนะครับ และอาจารย์บอล ด้วยนะครับ



I LIKE DOTNET

DOTNET Never DIe`
Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFVision Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.


Sponsored by