รายการความยาวมาตรฐานสำหรับฟิลด์ฐานข้อมูล


394

ฉันกำลังออกแบบตารางฐานข้อมูลและถามตัวเองคำถามโง่ ๆ อีกครั้ง: ฟิลด์ชื่อควรจะนานเท่าไหร่

ใครบ้างมีรายการความยาวที่สมเหตุสมผลสำหรับฟิลด์ที่พบบ่อยที่สุดเช่นชื่อนามสกุลและที่อยู่อีเมล


1
เพียงให้แน่ใจว่าคุณอนุญาตให้ตัวละครที่ไม่ใช่ตัวอักษรในชื่อ! คะแนนยัติภังค์ในนามสกุลของเขา
Chris Marasti-Georg


2
One note: ไม่จำเป็นต้องมีทั้ง "ชื่อ" และ "นามสกุล" บางคนเช่นฉันมีเพียงชื่อเดียวเท่านั้น (หลักฐาน: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai

สิ่งที่เกี่ยวกับ URL เช่นบล็อกหรือลิงค์ไปยังโปรไฟล์
AlikElzin-kilaka

เมาถ้าชื่อมีความยาวเท่านี้gintama.wikia.com/wiki/Jugem_Jugem
絢瀬絵里

คำตอบ:


34

คำแนะนำของ W3C:

หากการออกแบบฟอร์มหรือฐานข้อมูลที่จะยอมรับชื่อจากบุคคลที่มีภูมิหลังหลากหลายคุณควรถามตัวเองว่าคุณจำเป็นต้องมีฟิลด์แยกต่างหากสำหรับชื่อและนามสกุล

…จำไว้ว่าชื่อในบางวัฒนธรรมนั้นอาจจะยาวกว่าของคุณเองมากทีเดียว ... หลีกเลี่ยงการ จำกัด ขนาดเขตข้อมูลสำหรับชื่อที่อยู่ในฐานข้อมูลของคุณ โดยเฉพาะอย่าสมมติว่าชื่อภาษาญี่ปุ่นสี่ตัวอักษรใน UTF-8 จะพอดีกับสี่ไบต์ - คุณมีแนวโน้มที่จะต้องการ 12

https://www.w3.org/International/questions/qa-personal-names

สำหรับเขตข้อมูลฐานข้อมูลVARCHAR(255)เป็นตัวเลือกเริ่มต้นที่ปลอดภัยเว้นแต่ว่าคุณจะมีเหตุผลที่ดีในการใช้อย่างอื่น สำหรับเว็บแอปพลิเคชันทั่วไปประสิทธิภาพจะไม่เป็นปัญหา อย่าปรับให้เหมาะสมก่อนเวลาอันควร


26
10 ปีแล้วที่ฉันถามคำถามนี้ ด้วยประสบการณ์อีก 10 ปีภายใต้เข็มขัดของฉันฉันมีแนวโน้มที่จะเห็นด้วยกับคุณ
Patrick McElhaney

2
คุณจะพิมพ์ชื่อที่มีความยาว 255 อักขระบนซองจดหมายได้อย่างไร
Michael Potter

316

ฉันสอบถามฐานข้อมูลของฉันกับลูกค้าหลายล้านคนในสหรัฐอเมริกา

  • ความยาวชื่อแรกสูงสุดคือ 46. ฉันไปกับ 50 (แน่นอนมีเพียง 500 คนเท่านั้นที่มีมากกว่า 25 คนและทุกกรณีที่การนำเข้าข้อมูลทำให้เกิดขยะมากขึ้นในพื้นที่นั้น)

  • นามสกุลคล้ายกับชื่อ

  • ที่อยู่อีเมลมีจำนวนสูงสุด 62 ตัวอักษร ส่วนใหญ่อีกต่อไปเป็นรายการที่อยู่อีเมลจริงคั่นด้วยเครื่องหมายอัฒภาค

  • ที่อยู่สูงสุดมีความยาวสูงสุด 95 อักขระ ตัวยาวนั้นใช้ได้จริง

  • ความยาวสูงสุดของเมืองคือ 35

นี่ควรเป็นการแพร่กระจายทางสถิติที่เหมาะสมสำหรับผู้คนในสหรัฐอเมริกา หากคุณมีการแปลเป็นภาษาท้องถิ่นเพื่อพิจารณาตัวเลขอาจแตกต่างกันอย่างมีนัยสำคัญ


4
เมื่อเปรียบเทียบกับของคุณแล้วฐานข้อมูลที่ฉันเข้าถึงมีขนาดเล็กมาก แต่ฉันก็พบที่อยู่อีเมลที่มีความยาว 138 ตัวอักษร องค์ประกอบ localpart เป็นชื่อที่แตกต่างของ LDAP (หรือ AD?)
Bernd Jendrissek

2
แล้วหมายเลขโทรศัพท์ล่ะ?
ceving

@EricZBeard "ที่อยู่" รวมหมายเลขบ้านหรือไม่
noɥʇʎԀʎzɐɹƆ

3
ความยาวเฉลี่ยของที่อยู่อีเมลในฐานข้อมูลของคุณไม่ใช่มาตรการที่เหมาะสมสำหรับการแนะนำ ความยาวที่ใช้ได้สูงสุดของที่อยู่อีเมลคือ 254 ตัวอักษรและควรเป็นความยาวที่ระบุในฐานข้อมูล นอกจากนี้การมีรายการที่อยู่อีเมลในคอลัมน์เดียวบ่งบอกว่าข้อมูลของคุณไม่ได้รับการทำให้เป็นมาตรฐานและทำให้คำตอบของคุณไม่ถูกต้อง
มาริโอ

1
@MGOwen อันดับแรกคุณไม่ทราบจุดประสงค์ของฐานข้อมูลในการตั้งค่าบางอย่างที่ใครบางคนที่ถูกปฏิเสธการเข้าถึงเนื่องจากปัญหาเล็ก ๆ น้อย ๆ เช่นอีเมลของพวกเขา "ยาวเกินไป" อาจเป็นปัญหาสำคัญ ประการที่สองลิงก์ที่คุณโพสต์บอกว่า "ลิงก์ที่ยาวที่สุดที่ใช้ได้คือ 89" โดยที่ลิงค์นี้บอกว่าเป็น 62 ลิงก์ไหนที่ถูกต้อง หากคุณเพียงแค่ต้องการเลือกหมายเลขโดยพลการหรือคุณมีเหตุผลที่ถูกต้องเช่นชื่อจะต้องรวมเป็นส่วนหนึ่งของที่อยู่ปรับ อย่างไรก็ตามมันก็ยังสมเหตุสมผลเมื่อมีข้อสงสัยคุณอ้างถึงข้อมูลจำเพาะ ฉันยังถือได้ว่ามีเพียงคนเดียวที่พูดว่า "ฐานข้อมูลของฉันสูงสุดที่ x" เป็นประวัติย่อ
มาริโอ

170

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


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

20
แค่คิด ... ควรเป็น 71 ตัวอักษรสำหรับชื่อและนามสกุลในฟิลด์เดียวเนื่องจากต้องมีช่องว่างใช่ไหม
โจเซฟ Redfern

8
ชัดเจนว่าพวกเขาคาดหวังชื่อยาวเป็นครั้งคราว (สูงสุด 35 ตัวอักษร) และนามสกุลยาวเป็นครั้งคราว (สูงถึง 35 ตัวอักษร) แต่ไม่จำเป็นต้องคาดหวังบุคคลที่มีทั้งชื่อและนามสกุลยาว นั่นเป็นเพียงความโลภ ;-)
เอียนเนลสัน

6
หากนาย El Tahir El Fadil El Siddig Abderrahman โมฮัมเหม็ดอาเหม็ดอับเดล Karim El Mahdi จริงใช้ชื่อของเขาทั้งหมดเมื่อกรอกแบบฟอร์มออนไลน์ฉันจะประทับใจ ฉันมีชื่อกลางสองชื่อ แต่ฉันใช้เพียงชื่อเดียวนอกเหนือจากแบบฟอร์มอย่างเป็นทางการ (เช่นรัฐบาล)
Leon

2
ความยาวอีเมล @ ian-nelson ตาม RFC 3696: ขีด จำกัด นั้นมีความยาวสูงสุด 64 อักขระ (octets) ใน "local part" (ก่อน "@") และสูงสุด 255 อักขระ (octets) ในส่วนโดเมน (หลัง "@") สำหรับความยาวทั้งหมด 320 ตัวอักษร ระบบที่จัดการกับอีเมลควรเตรียมที่จะดำเนินการกับที่อยู่ที่มีความยาวถึงแม้ว่าจะไม่ค่อยพบ
Piotr Nawrot

53

บางคอลัมน์อาจมีความยาวที่ถูกต้อง

                            Min Max

Hostname                    1   255
Domain Name                 4   253
Email Address               7   254
Email Address [1]           3   254
Telephone Number            10  15      
Telephone Number [2]        3   26  
HTTP(S) URL w domain name   11  2083        
URL [3]                     6   2083    
Postal Code [4]             2   11
IP Address (incl ipv6)      7   45
Longitude                   numeric 9,6
Latitude                    numeric 8,6
Money[5]                    numeric 19,4

[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale

คุยโวนานในชื่อบุคคล

ชื่อส่วนบุคคลอาจเป็น Polynym (ชื่อที่มีหลายองค์ประกอบที่สามารถจัดเรียงได้ ) Mononym (ชื่อที่มีองค์ประกอบเดียวเท่านั้น) หรือ Pictonym (ชื่อที่แทนด้วยรูปภาพ - สิ่งนี้มีอยู่เนื่องจากผู้คนชอบเจ้าชาย)

บุคคลสามารถมีชื่อได้หลายชื่อมีบทบาทเช่น LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM เป็นต้นคุณอาจมีกฎเกณฑ์ทางธุรกิจเช่น "บุคคลสามารถมีชื่อทางกฎหมายได้ครั้งละหลายชื่อ แต่นามแฝงหลายชื่อ ขณะนั้น".

ตัวอย่างบางส่วน:

names: [
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"George",
    middle:"Herman",
    moniker:"Babe",
    surname:"Ruth",
    generation:"JUNIOR"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Sultan of Swat"
  }
]

หรือ

names: [
  {
    type:"POLYNYM",
    role:"PREFERRED",
    given:"Malcolm",
    surname:"X"
  },
  {
    type:"POLYNYM",
    role:"BIRTH",
    given:"Malcolm",
    surname:"Little"
  },
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Malik",
    surname:"El-Shabazz"
  }
]

หรือ

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Prince",
    middle:"Rogers",
    surname:"Nelson"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"Prince"
  },
  {
    type:"PICTONYM",
    role:"LEGAL",
    url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
  }
]

หรือ

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Juan Pablo",
    surname:"Fernández de Calderón",
    secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
  }
]

ชื่อที่กำหนดชื่อกลางนามสกุลสามารถหลายคำเช่นหรือ"Billy Bob" ThorntonRalph "Vaughn Williams"


5
นี่เป็นข้อมูลที่มาก แต่ไม่ใช่คำตอบที่มีประโยชน์มาก ครั้งต่อไปที่ฉันต้องการคำตอบที่ "ถูกต้อง" ฉันจะแจ้งให้คุณทราบ
n8bar

16

ฉันจะบอกว่าทำผิดด้านสูง เนื่องจากคุณอาจใช้ varchar พื้นที่เพิ่มเติมใด ๆ ที่คุณอนุญาตจะไม่ใช้พื้นที่เพิ่มเติมใด ๆ ยกเว้นว่ามีคนต้องการ ฉันจะบอกชื่อ (แรกหรือสุดท้าย) ไปอย่างน้อย 50 ตัวอักษรและที่อยู่อีเมลทำให้อย่างน้อย 128 มีที่อยู่อีเมลยาวมากจริงๆ

อีกสิ่งที่ฉันชอบคือไปที่Lipsum.comแล้วขอให้มันสร้างข้อความ ด้วยวิธีนี้คุณจะได้รับความคิดที่ดีว่ามีขนาด 100 ไบต์เป็นอย่างไร


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

ขึ้นอยู่กับการนำไปใช้งาน คุณไม่จำเป็นต้องใช้ NVARCHAR ถ้า VARCHAR รองรับ UTF-8
dan04

2
[N]Varcharขนาดทำอย่างไรส่งผลกระทบต่อดัชนีของคุณ
RBarryYoung

11

ฉันมักจะใช้กำลัง 2 เสมอเว้นแต่จะมีเหตุผลที่ดีไม่เช่นอินเทอร์เฟซสำหรับลูกค้าที่หมายเลขอื่นมีความหมายพิเศษกับลูกค้า

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


3
เป็นที่ถกเถียงกันอยู่ว่า2ⁿ - 1, 2ⁿ - 2 หรือ2ⁿ - 4 ทั้งสองจะเป็นการตัดสินใจทางวิศวกรรมที่ดีกว่าเพราะบ่อยครั้งที่สตริงถูกแสดงว่าเป็นอักขระอาเรย์ที่มีการทำดัชนีเป็นศูนย์และสิ้นสุดด้วย null char ไบต์หรือสองไบต์ (UTF-8 ) นอกจากนี้ยังมีฐานข้อมูลบางส่วนที่สูงกว่า 255 บน varchar ต้องใช้ไบต์เพิ่มเติมสำหรับการจัดเก็บ (ดูstackoverflow.com/questions/2340639/… )
Pocketsand

4

ฉันต้องการค้นหาแบบเดียวกันและมาตรฐานข้อมูลรัฐบาลของสหราชอาณาจักรที่กล่าวถึงในคำตอบที่ได้รับการยอมรับนั้นเหมาะอย่างยิ่ง อย่างไรก็ตามสิ่งเหล่านี้ดูเหมือนจะไม่มีอยู่อีกต่อไป - หลังจากการค้นหาแบบขยายฉันพบมันในไฟล์เก็บถาวรที่นี่: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards จำเป็นต้องดาวน์โหลด zip แยกมันออกแล้วเปิด default.htm ในโฟลเดอร์ html



2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

แก้ไข : เพิ่มระยะห่างบางส่วน


1
ทำไมไม่ใช้ VARCHAR 255 กับทุกอย่างที่เป็นสตริง? VARCHAR ไม่ใช้การขยายและสิ้นสุดด้วยการเพิ่มหนึ่งหรือสองไบต์
radtek

varchar อาจช้าหน่อย
kta

1

เพียงแค่ดูว่าที่เก็บถาวรอีเมลของฉันมีชื่อ "แรก" ที่ค่อนข้างยาวจำนวนหนึ่ง (แน่นอนว่าสิ่งแรกที่มีความหมายคือตัวแปรตามวัฒนธรรม) ตัวอย่างหนึ่งคือ Krishnamurthy - ซึ่งมีความยาว 13 ตัวอักษร การเดาที่ดีอาจเป็นตัวอักษร 20 ถึง 25 ตัว อีเมลควรยาวกว่านี้มากเนื่องจากคุณอาจมีชื่อเป็นครั้งแรก.lastname@somedomain.com นอกจากนี้ gmail และโปรแกรมจดหมายอื่น ๆ ยังอนุญาตให้คุณใช้ firstname.lastname+sometag@somedomain.com โดยที่ "someag" เป็นสิ่งที่คุณต้องการวางไว้เพื่อให้คุณสามารถใช้เพื่อเรียงลำดับอีเมลขาเข้า ฉันมักพบเจอกับเว็บฟอร์มที่ไม่อนุญาตให้ฉันใส่ที่อยู่อีเมลแบบเต็มโดยไม่ต้องพิจารณาแท็กใด ๆ ดังนั้นหากคุณต้องการช่องอีเมลคงที่อาจเป็น 25.25+15@20.3 ตัวอักษรรวมทั้งหมด 90 ตัวอักษร (ถ้าฉันทำคณิตศาสตร์ของฉันถูกต้อง!)


0

ฉันมักจะไปกับ:

ชื่อ : 30 ตัวอักษร
นามสกุล : 30 ตัวอักษร
อีเมล : 50 ตัวอักษร
ที่อยู่ : 200 ตัวอักษร

หากฉันกังวลเกี่ยวกับฟิลด์ที่มีความยาวสำหรับชื่อบางครั้งฉันอาจไปด้วย 50 สำหรับฟิลด์ชื่อเช่นกันเนื่องจากพื้นที่จัดเก็บไม่ค่อยมีปัญหาในวันนี้


11
50 สำหรับอีเมล? 254 เป็นจำนวนสูงสุดจริง ๆ
Marko

0

หากคุณจำเป็นต้องพิจารณาการแปล (สำหรับพวกเรานอกสหรัฐอเมริกา!) และเป็นไปได้ในสภาพแวดล้อมของคุณฉันขอแนะนำ:

กำหนดประเภทข้อมูลสำหรับแต่ละองค์ประกอบของชื่อ - หมายเหตุ: บางวัฒนธรรมมีมากกว่าสองชื่อ! จากนั้นให้พิมพ์ชื่อเต็ม

จากนั้นการแปลจะกลายเป็นเรื่องง่าย (เท่าที่ชื่อมีความกังวล)

เช่นเดียวกับที่อยู่ BTW - รูปแบบที่แตกต่างกัน!


-1

มันเป็น varchar ใช่มั้ย ดังนั้นมันจึงไม่สำคัญว่าคุณจะใช้ 50 หรือ 25 ดีกว่าปลอดภัยและใช้ 50 นั่นหมายความว่าฉันเชื่อว่าสิ่งที่ยาวที่สุดที่ฉันเคยเห็นคือประมาณ 19 หรือมากกว่านั้น นามสกุลยาวขึ้น

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