ความยาวที่เหมาะสมสำหรับช่อง "ชื่อ" ของบุคคลคืออะไร


140

ฉันมีเว็บฟอร์มง่ายๆที่จะอนุญาตให้ผู้ใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ป้อนข้อมูลรวมถึงชื่อ ฉันให้ฟิลด์ชื่อ จำกัด อักขระ 50 ตัวเพื่อให้ตรงกับตารางฐานข้อมูลของฉันซึ่งฟิลด์นั้นคือ varchar (50) แต่ฉันก็เริ่มสงสัย

การใช้บางอย่างเช่นประเภทคอลัมน์ข้อความเหมาะสมกว่าหรือไม่หรือฉันควรจำกัดความยาวของชื่อให้สมเหตุสมผล

ฉันใช้ SQL Server 2005 ในกรณีที่มีความสำคัญในการตอบกลับของคุณ

แก้ไข:ฉันไม่เห็นคำถามที่กว้างขึ้นเกี่ยวกับปัญหาที่คล้ายกันนี้


1
ตรวจสอบคำถามที่เกี่ยวข้องนี้เพื่อดูการสนทนามากมายในหัวข้อนี้
Chris Marasti-Georg

2
สิ่งที่ควรทราบในยุคโลกาภิวัตน์ varchar มักไม่ใช่ประเภทข้อมูลที่ถูกต้องคุณควรใช้ nvarchar
เต่า

@ เต่า: เนื่องจากเขาใช้ MS SQL Server ฉันเห็นด้วย แต่ VARCHAR เป็นประเภทข้อมูลที่ถูกต้องในการใช้งาน SQL อื่น ๆ ที่รองรับ UTF-8 ได้ดีกว่า
dan04

คำตอบ:


145

แค็ตตาล็อกมาตรฐานข้อมูลของรัฐบาลสหราชอาณาจักรแนะนำ 35 อักขระสำหรับแต่ละชื่อและชื่อสกุลหรือ 70 อักขระสำหรับช่องเดียวเพื่อเก็บชื่อเต็ม


3
ลิงก์ต้องได้รับการอัปเดตในวันที่ 22 ตุลาคม 2553 ฉัน googled สำหรับ: site: *. gov.uk ชื่อ "35 ตัวอักษร" และพบ doc Justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R

ลิงก์ของพวกเขาดูเหมือนจะไม่ดีจริงๆ ... ณ วันที่ 8/2012: webarchive.nationalarchives.gov.uk/+/http://…
Thomas B

6
ชื่อเต็มที่ "สมเหตุสมผล" ที่ยาวที่สุดที่ฉันพบคือ "Gisele Marie-Louise Marguerite LaFleche" (ความยาว 39 ไบต์)
user1154664

ใหญ่ขึ้นเล็กน้อย 54 ตัวอักษร: gw.geneanet.org/…
mestachs

3
นิวซีแลนด์ จำกัด ชื่อเต็ม: ต้องมีความยาวน้อยกว่า 100 อักขระรวมช่องว่างและต้องไม่มีสัญลักษณ์หรือตัวเลข ฉันเดาว่าอนุญาตให้ใช้ยัติภังค์ในชื่อสกุล
Glutnix

27

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

ระวังการปรับขนาดคอลัมน์ขึ้นอยู่กับสถานที่ สำหรับการเริ่มต้นมันทำให้คุณต้องพบกับฝันร้ายในการซ่อมบำรุงโดยทิ้งความจริงที่ว่าผู้คนย้ายถิ่นและใช้ชื่อของพวกเขาไปด้วย

ตัวอย่างเช่นชาวสเปนที่มีนามสกุลพิเศษเหล่านี้สามารถย้ายไปอาศัยและอาศัยอยู่ในประเทศที่ใช้ภาษาอังกฤษได้และสามารถคาดหวังได้อย่างสมเหตุสมผลว่าจะใช้ชื่อนามสกุลของตน ชาวรัสเซียมีนามสกุลนอกเหนือจากนามสกุลของพวกเขาชื่อแอฟริกันบางชื่ออาจยาวกว่าชื่อในยุโรปส่วนใหญ่

ไปกับการทำให้แต่ละคอลัมน์กว้างที่สุดเท่าที่จะทำได้โดยคำนึงถึงจำนวนแถวที่เป็นไปได้ ฉันใช้อักขระ 40 ตัวสำหรับชื่อนามสกุลชื่อและนามสกุลอื่น ๆ และไม่เคยพบปัญหาใด ๆ


ขอบคุณสำหรับคำตอบแม้ว่าจะผ่านมาสักพักแล้วก็ตาม
EndangeredMassa

9

ฉันมักจะใช้ varchar (255) (255 เป็นความยาวสูงสุดของประเภท varchar ใน MySQL)


31
และคุณยังสงวนพื้นที่ 255 อักขระใน GUI ของคุณและสื่ออื่น ๆ ที่แสดงชื่อ / นามสกุลหรือไม่? ;-)
AndrewBourgeois

2
ฉันเคยคิดว่า: "ทำไมไม่ใช้ varchar (255) เสมอไป" ตอนนี้ฉันตระหนักดีว่าข้อ จำกัด ด้านความยาวส่วนใหญ่มีไว้สำหรับ UI และข้อ จำกัด ที่นักออกแบบสามารถพึ่งพาได้เมื่อออกแบบ UI ของพวกเขาก็คือการใช้พื้นที่ในฐานข้อมูลมากเกินไป
jdg

6

ถ้าเป็นชื่อเต็มในช่องเดียวฉันมักจะใช้ 128 - 64/64 สำหรับตัวแรกและตัวสุดท้ายในฟิลด์ที่แยกจากกัน - คุณไม่เคยรู้มาก่อน


6

@ เอียนเนลสัน: ฉันสงสัยว่าคนอื่นเห็นปัญหาที่นั่นหรือไม่

สมมติว่าคุณมีช่องแยก นั่นคือทั้งหมด 70 อักขระ 35 สำหรับชื่อและ 35 สำหรับนามสกุล อย่างไรก็ตามหากคุณมีช่องเดียวคุณจะละเลยช่องว่างที่คั่นระหว่างชื่อและนามสกุลโดยย่อให้คุณเปลี่ยนทีละ 1 อักขระ แน่นอนว่าเป็นอักขระ "เพียงตัวเดียว" แต่อาจสร้างความแตกต่างระหว่างคนที่ป้อนชื่อ - นามสกุลกับบางคน ดังนั้นฉันจะเปลี่ยนคำแนะนำนั้นเป็น "35 อักขระสำหรับแต่ละชื่อและชื่อสกุลหรือ 71 อักขระสำหรับช่องเดียวที่จะใช้ชื่อเต็ม"


2
ประเด็นในการติดตามเอกสารนั้นคือเพื่อให้คุณสามารถทำงานร่วมกับระบบอื่น ๆ ของรัฐบาลในสหราชอาณาจักรได้ดังนั้นคุณจึงไม่สามารถแยก 70 ถึง 71 และเรียกมันว่าวันละครั้งมิฉะนั้นระบบที่มีขีด จำกัด 70 อักขระจะตัดข้อความของคุณ (คุณไม่ควรจัดเก็บข้อมูลในทั้งสองรูปแบบภายในระบบของคุณเอง) มันแย่ลงจริง ๆ เนื่องจากชื่อเต็มไม่ได้มีแค่ Family / Given เท่านั้น แต่ยังรวมถึง Title และ Suffix ซึ่งมีขีด จำกัด 35 อักขระสำหรับ อักขระสูงสุด 143 ตัวที่เต็มไปด้วยความสนุกสนานในช่องต่อท้าย ห่วยเป็นนักพัฒนาที่ต้องแลกเปลี่ยนข้อมูลกับที่เก็บชื่อทั้งสองรูปแบบ
mmitchell

3
เห็นได้ชัดว่าคำแนะนำเขียนขึ้นจากความคาดหวังที่ว่าบุคคลอาจมี Given Name ที่ยาว (ไม่เกิน 35 ตัวอักษร) หรือชื่อสกุลที่ยาว (ไม่เกิน 35 ตัวอักษร) แต่ไม่น่าจะมีทั้งสองส่วนของชื่อที่ยาวมาก
Ian Nelson

3

ในสหราชอาณาจักรมีมาตรฐานของรัฐบาลไม่กี่มาตรฐานที่จัดการกับประชากรส่วนใหญ่ในสหราชอาณาจักรได้สำเร็จเช่นสำนักงานหนังสือเดินทางหน่วยงานออกใบอนุญาตขับรถและยานพาหนะสำนักงาน Deed Poll และ NHS พวกเขาใช้มาตรฐานที่แตกต่างกันอย่างเห็นได้ชัด

การเปลี่ยนชื่อของคุณโดยโฉนดโพลล์ช่วยให้ 300 ตัวอักษร ;

ไม่มีข้อ จำกัด ทางกฎหมายเกี่ยวกับความยาวของชื่อของคุณ แต่เรากำหนดความยาวไม่เกิน 300 อักขระ (รวมช่องว่าง) สำหรับชื่อนามสกุลของคุณ

พลุกพล่านใช้ 70 ตัวอักษรชื่อผู้ป่วย

ชื่อผู้
ป่วยรูปแบบ / ความยาว: สูงสุด 70

สำนักงานหนังสือเดินทางอนุญาต 30 + 30 ใบแรก /ใบสุดท้ายและใบขับขี่ (DVLA) รวม 30 ใบ

โปรดทราบว่าองค์กรอื่น ๆ จะมีข้อ จำกัด ของตนเองเกี่ยวกับสิ่งที่พวกเขาจะแสดงในเอกสารที่พวกเขาผลิต - สำหรับ HM Passport Office ขีด จำกัด คือ 30 อักขระสำหรับชื่อนามสกุลและนามสกุลของคุณและสำหรับ DVLA ขีด จำกัด ของคุณคือ 30 อักขระ ชื่อเต็ม.



2

สิ่งที่คุณถามจริงๆเป็นคำถามที่เกี่ยวข้อง แต่แตกต่างกันอย่างมาก: ฉันต้องการตัดชื่อบ่อยเพียงใดเพื่อให้พอดีกับฐานข้อมูล คำตอบขึ้นอยู่กับความถี่ของความยาวที่แตกต่างกันของชื่อและความยาวสูงสุดที่เลือก ความกังวลนี้สมดุลกับความกังวลเกี่ยวกับทรัพยากรที่ใช้โดยฐานข้อมูล เมื่อพิจารณาถึงความแตกต่างของค่าโสหุ้ยเล็กน้อยระหว่างความยาวสูงสุดที่แตกต่างกันสำหรับฟิลด์ varchar โดยทั่วไปฉันมักจะทำผิดเพราะไม่เคยถูกบังคับให้ตัดชื่อและทำให้ฟิลด์มีขนาดใหญ่เท่าที่ฉันกล้า


1

โปรดทราบว่าหลายวัฒนธรรมมี "นามสกุลที่สอง" มักเรียกชื่อสกุล ตัวอย่างเช่นหากคุณติดต่อกับคนสเปนพวกเขาจะขอบคุณที่มีชื่อสกุลแยกออกจาก 'นามสกุล'

ทางออกที่ดีที่สุดคือการกำหนดประเภทข้อมูลสำหรับส่วนประกอบของชื่อใช้ข้อมูลเหล่านั้นสำหรับประเภทข้อมูลสำหรับนามสกุลและปรับแต่งตามสถานที่


ไม่มีข้อได้เปรียบในการทำให้ขีด จำกัด เล็กลงในโลแคลที่มีค่าน้อยลงทางสถิติ - ขนาดของฟิลด์จะไม่ส่งผลต่อพื้นที่ที่ใช้เว้นเสียแต่ว่าค่าบางค่าจะใช้อักขระที่อนุญาตพิเศษเหล่านั้น (ซึ่งหมายความว่าคุณได้เลือกถูกต้องแล้ว) !
เต่า

0

ชื่อเฉลี่ยประมาณ 6 ตัวอักษร ที่เหลือ 43 สำหรับนามสกุล :) ดูเหมือนว่าคุณสามารถย่อให้สั้นลงได้ถ้าต้องการ

คำถามหลักคือคุณคิดว่าคุณจะมีกี่แถว? ฉันไม่คิดว่า varchar (50) จะฆ่าคุณจนกว่าคุณจะได้หลายล้านแถว


6
หากคุณมี 50 ล้านค่าระหว่าง 10 ถึง 15 อักขระในคอลัมน์ varchar (20) และ 50 ล้านค่าเดียวกันในคอลัมน์ varchar (50) ค่าเหล่านี้จะใช้พื้นที่เท่ากันทั้งหมด นั่นคือจุดรวมของ varchar ซึ่งตรงข้ามกับ char
เต่า


0

ขึ้นอยู่กับว่าใครจะใช้ฐานข้อมูลของคุณตัวอย่างเช่นชื่อแอฟริกันจะใช้ varchar (20) สำหรับนามสกุลและชื่อที่แยกจากกัน อย่างไรก็ตามมันแตกต่างกันไปในแต่ละประเทศ แต่เพื่อประโยชน์ในการประหยัดทรัพยากรฐานข้อมูลและหน่วยความจำของคุณให้แยกนามสกุลและชื่อและใช้ varchar (30) คิดว่าจะใช้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.