Danh sách độ dài tiêu chuẩn cho các trường cơ sở dữ liệu


394

Tôi đang thiết kế một bảng cơ sở dữ liệu và một lần nữa tự hỏi mình cùng một câu hỏi ngu ngốc: Trường tên đầu tiên phải dài bao nhiêu?

Có ai có một danh sách độ dài hợp lý cho các trường phổ biến nhất , chẳng hạn như tên, họ và địa chỉ email không?


1
Chỉ cần chắc chắn rằng bạn cho phép các ký tự không phải alpha trong tên! chỉ vào dấu gạch nối trong tên cuối cùng của mình
Chris Marasti-Georg

3
Xem "Độ dài tối đa của id email hợp lệ" để biết độ dài địa chỉ email tối đa.
outis

2
Một lưu ý: không yêu cầu cả "tên" và "họ". Một số người, như tôi, chỉ có một tên. (Bằng chứng: web.archive.org/web/20130115074449/http://saizai.com/ Khăn )
Sai

Điều gì về URL, như blog hoặc liên kết đến hồ sơ?
AlikElzin-kilaka

Câu trả lời:


34

Khuyến nghị của W3C:

Nếu thiết kế một biểu mẫu hoặc cơ sở dữ liệu sẽ chấp nhận tên từ những người có nhiều nền tảng khác nhau, bạn nên tự hỏi liệu bạn có thực sự cần phải có các trường riêng cho tên và họ của họ không.

Hãy nhớ rằng tên trong một số nền văn hóa có thể dài hơn rất nhiều so với tên của bạn. ... Tránh hạn chế kích thước lĩnh vực cho tên trong cơ sở dữ liệu của bạn . Cụ thể, đừng cho rằng một tên tiếng Nhật gồm bốn ký tự trong UTF-8 sẽ phù hợp với bốn byte - bạn có thể thực sự cần 12.

https://www.w3.org/I quốc tế /questions / qa-cá nhân-names

Đối với các trường cơ sở dữ liệu, VARCHAR(255)là một lựa chọn mặc định an toàn, trừ khi bạn thực sự có thể đưa ra một lý do chính đáng để sử dụng một cái gì đó khác. Đối với các ứng dụng web thông thường, hiệu suất sẽ không phải là vấn đề. Đừng tối ưu hóa sớm.


26
Đã 10 năm kể từ khi tôi hỏi câu hỏi đó. Với 10 năm kinh nghiệm khác, tôi có khuynh hướng đồng ý với bạn.
Patrick McElhaney

2
Làm thế nào chính xác bạn sẽ in một tên dài 255 ký tự trên một phong bì?
Michael Potter

316

Tôi vừa truy vấn cơ sở dữ liệu của mình với hàng triệu khách hàng ở Hoa Kỳ.

  • Độ dài tên tối đa là 46. Tôi đi với 50. (Tất nhiên, chỉ có 500 trong số đó trên 25 tuổi và tất cả đều là trường hợp nhập dữ liệu dẫn đến thêm rác trong lĩnh vực đó.)

  • Tên cuối cùng giống với tên.

  • Địa chỉ email tối đa là 62 ký tự. Hầu hết những cái dài hơn thực sự là danh sách các địa chỉ email được phân tách bằng dấu chấm phẩy.

  • Địa chỉ đường phố đạt tối đa 95 ký tự. Những cái dài đều hợp lệ.

  • Chiều dài thành phố tối đa là 35.

Đây phải là một sự lan truyền thống kê tốt cho những người ở Mỹ. Nếu bạn có nội địa hóa để xem xét, các con số có thể thay đổi đáng kể.


4
So với của bạn, cơ sở dữ liệu tôi có quyền truy cập rất nhỏ, nhưng ngay cả ở đó tôi cũng tìm thấy một địa chỉ email gồm 138 ký tự. Thành phần localpart rõ ràng là một loại tên phân biệt LDAP (hoặc AD?).
Bernd Jendrissek

2
Số điện thoại thì sao?
ceving

@EricZBeard "Địa chỉ đường phố" có bao gồm số nhà không?
noɥʇʎԀʎzɐɹƆ

3
Độ dài trung bình của địa chỉ email trong cơ sở dữ liệu của bạn không phải là thước đo tốt cho đề xuất. Độ dài hợp lệ tối đa của một địa chỉ email là 254 ký tự và phải là độ dài được chỉ định trong cơ sở dữ liệu. Ngoài ra, việc có danh sách các địa chỉ email trong một cột duy nhất cho tôi biết rằng dữ liệu của bạn không được chuẩn hóa và do đó làm mất hiệu lực câu trả lời của bạn hơn nữa.
Mario

1
@MGOwen Trước tiên, bạn không biết mục đích của cơ sở dữ liệu, trong một số cài đặt nhất định ai đó bị từ chối truy cập vì một vấn đề phù phiếm như email của họ "quá dài" có thể là một vấn đề lớn. Thứ hai, liên kết bạn đã đăng có nội dung "Cái hợp lệ dài nhất là 89", trong đó cái này nói là 62. Cái nào đúng? Nếu bạn chỉ muốn chọn một số tùy ý hoặc bạn có một lý do hợp lệ như tên phải được đưa vào như một phần của địa chỉ, tốt thôi. Tuy nhiên vẫn còn hợp lý, khi nghi ngờ, bạn tham khảo thông số kỹ thuật. Tôi vẫn cho rằng một người duy nhất nói rằng "cơ sở dữ liệu của tôi đạt tối đa x" là giai thoại.
Mario

170

Danh mục Tiêu chuẩn Dữ liệu của Chính phủ Vương quốc Anh chi tiết các tiêu chuẩn của Vương quốc Anh cho loại điều này. Nó gợi ý 35 ký tự cho mỗi Tên đã cho và Tên gia đình hoặc 70 ký tự cho một trường để giữ Tên đầy đủ và 255 ký tự cho một địa chỉ email. Trong số những thứ khác ..


3
Liên kết cần được cập nhật kể từ ngày 22 tháng 10 năm 2010. Tôi đã tìm kiếm: trang web: *. Gov.uk Tên "35 ký tự" và tìm thấy tài liệu này Justice.gov.uk/guidance/docs/electoral-reg-stiterias.pdf
Tony R

20
Chỉ cần một suy nghĩ ... không nên là 71 ký tự cho tên và họ trong một trường duy nhất, cho rằng cần phải có một khoảng trắng?
Joseph Redfern

8
Chà, rõ ràng họ dự đoán tên dài thường xuyên (tối đa 35 ký tự) và họ dài thường xuyên (tối đa 35 ký tự), nhưng không nhất thiết mong đợi một cá nhân có sự kết hợp của cả tên và họ dài. Điều đó sẽ chỉ là tham lam ;-)
Ian Nelson

6
Nếu ông El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi thực sự sử dụng tất cả tên của mình khi điền vào các mẫu đơn trực tuyến, tôi sẽ rất ấn tượng. Tôi có hai tên đệm nhưng tôi chỉ sử dụng một trong số họ ngoài các mẫu chính thức (tức là chính phủ).
Leon

2
@ ian-nelson Độ dài email theo RFC 3696: Giới hạn đó tối đa là 64 ký tự (octet) trong "phần cục bộ" (trước "@") và tối đa 255 ký tự (octet) trong phần miền (sau "@") cho tổng chiều dài 320 ký tự. Các hệ thống xử lý email nên được chuẩn bị để xử lý các địa chỉ dài như vậy, mặc dù chúng hiếm khi gặp phải.
Piotr Nawrot

53

Một số độ dài cột có thể đúng

                            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

Một câu nói dài về tên cá nhân

Tên cá nhân là Polynym (tên có nhiều thành phần có thể sắp xếp ), Mononymous (tên chỉ có một thành phần) hoặc Pictonym (tên được đại diện bởi một hình ảnh - điều này tồn tại do những người như Prince).

Một người có thể có nhiều tên, đóng vai trò, chẳng hạn như PHÁP LÝ, HÔN NHÂN, MAIDEN, ƯU TIÊN, SOBRIQUET, PSEUDONYM, v.v. Bạn có thể có các quy tắc kinh doanh, chẳng hạn như "một người chỉ có thể có một tên hợp pháp tại một thời điểm, nhưng nhiều bút danh tại một thời điểm".

Vài ví dụ:

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"
  }
]

hoặc là

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"
  }
]

hoặc là

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"
  }
]

hoặc là

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 */
  }
]

Đặt tên, tên đệm, họ có thể là nhiều từ như "Billy Bob" Thornton, hoặc Ralph "Vaughn Williams".


5
Đây là rất nhiều thông tin nhưng không phải là một câu trả lời siêu hữu ích. Lần sau tôi cần câu trả lời "có lẽ đúng" tôi sẽ cho bạn biết.
n8bar

16

Tôi sẽ nói với lỗi ở phía cao. Vì có thể bạn sẽ sử dụng varchar, nên bất kỳ không gian bổ sung nào bạn cho phép sẽ không thực sự sử dụng hết bất kỳ dung lượng bổ sung nào trừ khi có ai đó cần nó. Tôi sẽ nói về tên (đầu tiên hoặc cuối cùng), đi ít nhất 50 ký tự và cho địa chỉ email, làm cho nó ít nhất 128. Có một số địa chỉ email thực sự dài ngoài đó.

Một điều khác mà tôi muốn làm là truy cập vào Lipsum.com và yêu cầu nó tạo ra một số văn bản. Bằng cách đó bạn có thể có được một ý tưởng tốt về việc 100 byte trông như thế nào.


6
Ôi trời - người đầu tiên lưu ý rằng các trường lớn hơn không nhất thiết có nghĩa là nhiều không gian lưu trữ hơn, do đó "var" trong varchar. NVarchar thường sẽ có ý nghĩa hơn cho tên mặc dù.
Tao

Phụ thuộc vào việc thực hiện. Bạn không cần NVARCHAR nếu VARCHAR hỗ trợ UTF-8.
dan04

2
[N]Varcharkích thước làm tuy nhiên, ảnh hưởng đến chỉ mục của bạn.
RBarryYoung

11

Tôi gần như luôn luôn sử dụng sức mạnh bằng 2 trừ khi có lý do chính đáng để không, chẳng hạn như giao diện đối diện với khách hàng trong đó một số khác có ý nghĩa đặc biệt với khách hàng.

Nếu bạn tuân theo sức mạnh của 2, nó sẽ giữ cho bạn trong một tập hợp kích thước phổ biến giới hạn, bản thân nó là một điều tốt, và nó giúp bạn dễ dàng đoán được kích thước của các vật thể không xác định mà bạn có thể gặp phải. Tôi thấy một số lượng khá lớn những người khác làm điều này, và có một cái gì đó thẩm mỹ về nó. Nó thường mang lại cho tôi cảm giác tốt khi tôi nhìn thấy điều này, nó có nghĩa là nhà thiết kế đã suy nghĩ như một kỹ sư hoặc nhà toán học. Mặc dù tôi có thể lo ngại nếu chỉ sử dụng số nguyên tố. :)


3
Có thể lập luận rằng 2ⁿ - 1, 2ⁿ - 2 hoặc thậm chí 2ⁿ - 4, hai sẽ là một quyết định kỹ thuật tốt hơn vì thường các chuỗi được biểu diễn dưới dạng các ký tự không có chỉ mục bằng 0 và được kết thúc bằng ký tự null, byte hoặc hai byte (UTF-8 ). Ngoài ra, với một số cơ sở dữ liệu vượt quá 255 trên một varchar yêu cầu một byte bổ sung để lưu trữ (xem stackoverflow.com/questions/2340639/ .).
Pocketsand

4

Tôi muốn tìm ra điều tương tự và Tiêu chuẩn dữ liệu của Chính phủ Anh được đề cập trong câu trả lời được chấp nhận nghe có vẻ lý tưởng. Tuy nhiên, không ai trong số này dường như còn tồn tại nữa - sau khi tìm kiếm mở rộng, tôi đã tìm thấy nó trong một kho lưu trữ ở đây: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ lược đồ / e-gif / datastiterias.aspx . Cần tải xuống zip, giải nén nó và sau đó mở default.htmlm trong thư mục html.



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

Chỉnh sửa : Đã thêm một số khoảng cách


1
Tại sao không sử dụng VARCHAR 255 cho tất cả mọi thứ là một chuỗi? VARCHAR không sử dụng phần đệm và kết thúc bằng một hoặc hai byte bổ sung.
radtek

varchar có thể là một chút chậm.
kta

1

Chỉ cần nhìn qua kho lưu trữ email của tôi, có một số tên "đầu tiên" khá dài (tất nhiên ý nghĩa đầu tiên là biến đổi theo văn hóa). Một ví dụ là Krishnamurthy - dài 13 chữ cái. Một dự đoán tốt có thể là 20 đến 25 chữ cái dựa trên điều này. Email sẽ dài hơn nhiều vì bạn có thể có Firstname.lastname@somedomain.com. Ngoài ra, gmail và một số chương trình thư khác cho phép bạn sử dụng Firstname.lastname+sometag@somedomain.com trong đó "đôi khi" là bất cứ điều gì bạn muốn đặt ở đó để bạn có thể sử dụng nó để sắp xếp email đến. Tôi thường xuyên chạy vào các biểu mẫu web không cho phép tôi nhập địa chỉ email đầy đủ của mình mà không xem xét bất kỳ thẻ nào. Vì vậy, nếu bạn cần một trường email cố định, có thể là khoảng 25,25+15@20.3 trong các ký tự cho tổng số 90 ký tự (nếu tôi thực hiện đúng phép toán của mình!).


0

Tôi thường đi với:

Firstname : 30 chars
LastName : 30 chars
Email : 50 chars
Địa chỉ : 200 ký tự

Nếu tôi lo lắng về các trường dài cho tên, đôi khi tôi cũng có thể đi với 50 cho các trường tên, vì không gian lưu trữ hiếm khi là một vấn đề ngày nay.


11
50 cho email? 254 là mức tối đa thực sự
Marko

0

Nếu bạn cần xem xét nội địa hóa (đối với những người trong chúng tôi bên ngoài Hoa Kỳ!) Và điều đó là có thể trong môi trường của bạn, tôi đề nghị:

Xác định loại dữ liệu cho từng thành phần của tên - LƯU Ý: một số nền văn hóa có nhiều hơn hai tên! Sau đó, có một loại cho tên đầy đủ,

Sau đó nội địa hóa trở nên đơn giản (theo như tên có liên quan).

Áp dụng tương tự cho các địa chỉ, BTW - các định dạng khác nhau!


-1

nó là varchar phải không? Vì vậy, sẽ không có vấn đề gì nếu bạn sử dụng 50 hoặc 25, tốt hơn là an toàn và sử dụng 50, điều đó nói rằng tôi tin rằng lâu nhất tôi đã thấy là khoảng 19 hoặc hơn. Tên cuối cùng dài hơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.