Giới hạn độ dài hợp lý trên các trường Tên Tên là gì?


138

Tôi có một biểu mẫu web đơn giản sẽ cho phép người dùng không được xác thực nhập thông tin của họ, bao gồm cả tên. Tôi đã cho trường tên giới hạn 50 ký tự trùng với bảng cơ sở dữ liệu của tôi trong đó trường là varchar (50), nhưng sau đó tôi bắt đầu tự hỏi.

Có thích hợp hơn để sử dụng một cái gì đó như kiểu cột Văn bản hay tôi nên giới hạn độ dài của tên cho hợp lý?

Tôi đang sử dụng SQL Server 2005, trong trường hợp có vấn đề trong phản hồi của bạn.

EDIT: Tôi không thấy câu hỏi rộng hơn này liên quan đến các vấn đề tương tự.


1
Kiểm tra câu hỏi liên quan này cho nhiều cuộc thảo luận về chủ đề này.
Chris Marasti-Georg

2
Một điều cần lưu ý, trong thời đại toàn cầu hóa này thường KHÔNG phải là kiểu dữ liệu phù hợp, rất có thể bạn nên sử dụng nvarchar.
Tao

@Tao: Vì anh ấy đang sử dụng MS SQL Server, tôi đồng ý. Nhưng VARCHAR kiểu dữ liệu phù hợp trong các triển khai SQL khác có hỗ trợ tốt hơn cho UTF-8.
dan04

Câu trả lời:


142

Danh mục Tiêu chuẩn Dữ liệu của Chính phủ Vương quốc Anh đề xuất 35 ký tự cho mỗi Tên và Tên Gia đình hoặc 70 ký tự cho một trường để giữ Họ và Tên.


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

Các liên kết của họ dường như rất tệ ... kể từ 8/2012: webarchive.nationalarchives.gov.uk/+/http://th
Thomas B

6
Tên đầy đủ "hợp lý" dài nhất mà tôi tìm thấy là "Gisele Marie-Louise Marguerite LaFleche" (dài 39 byte).
dùng1154664

54 ký tự lớn hơn một chút: gw.geneanet.org/ từ
mestachs

3
New Zealand giới hạn tên đầy đủ: chúng phải dài dưới 100 ký tự, bao gồm khoảng trắng và không thể chứa ký hiệu hoặc số. Tôi đoán rằng dấu gạch ngang được cho phép trong tên gia đình, mặc dù.
Glutnix

27

Tôi biết tôi đến muộn về vấn đề này, nhưng dù sao tôi cũng sẽ thêm nhận xét này, vì những người khác có thể sẽ đến đây trong tương lai với những câu hỏi tương tự.

Cảnh giác với việc điều chỉnh kích thước cột phụ thuộc vào miền địa phương. Để bắt đầu, nó đặt bạn vào một cơn ác mộng bảo trì, bỏ qua thực tế là mọi người di cư và mang tên của họ với họ.

Ví dụ, người Tây Ban Nha có thêm họ có thể chuyển đến và sống ở một quốc gia nói tiếng Anh và có thể sử dụng tên đầy đủ của họ một cách hợp lý. Người Nga có những người bảo trợ ngoài họ của họ, một số tên châu Phi có thể dài hơn đáng kể so với hầu hết các tên châu Âu.

Đi với việc làm cho mỗi cột rộng như bạn có thể làm một cách hợp lý, có tính đến số lượng hàng tiềm năng. Tôi sử dụng 40 ký tự cho mỗi tên, tên và họ khác và chưa bao giờ tìm thấy bất kỳ vấn đề.


Cảm ơn câu trả lời, ngay cả khi nó đã được một lúc.
Nguy cơ tuyệt

9

Tôi thường đi với varchar (255) (255 là độ dài tối đa của một loại varchar trong MySQL).


30
Và bạn cũng có dự trữ 255 ký tự trong GUI và phương tiện khác trong đó tên / họ được hiển thị không? ;-)
AndrewBourgeois

2
Tôi đã từng nghĩ: "Tại sao không phải lúc nào cũng sử dụng varchar (255)?" Bây giờ tôi nhận ra các ràng buộc về chiều dài chủ yếu dành cho UI và các ràng buộc mà các nhà thiết kế có thể phụ thuộc vào khi thiết kế UI của họ, sau đó là về việc sử dụng quá nhiều không gian trong cơ sở dữ liệu.
jdg

6

Nếu đó là tên đầy đủ trong một trường, tôi thường đi với 128 - 64/64 cho lần đầu tiên và cuối cùng trong các trường riêng biệt - bạn không bao giờ biết.


6

@Ian Nelson: Tôi đang tự hỏi nếu người khác thấy vấn đề ở đó.

Giả sử bạn có các trường tách. Tổng cộng có 70 ký tự, 35 cho tên đầu tiên và 35 cho tên cuối cùng. Tuy nhiên, nếu bạn có một trường, bạn bỏ qua khoảng trắng phân tách tên và họ, thay đổi bạn bằng 1 ký tự. Chắc chắn, đó là "chỉ" một ký tự, nhưng điều đó có thể tạo ra sự khác biệt giữa ai đó nhập tên đầy đủ của họ và ai đó không. Do đó, tôi sẽ thay đổi đề xuất đó thành "35 ký tự cho mỗi Tên đã cho và Tên gia đình hoặc 71 ký tự cho một trường để giữ Tên đầy đủ".


2
Điểm quan trọng của tài liệu này là bạn có thể tương tác với các hệ thống chính phủ khác của Vương quốc Anh, do đó bạn không thể tự mình nâng cấp 70 đến 71 và gọi nó là một ngày, nếu không các hệ thống có giới hạn 70 char sẽ cắt văn bản của bạn. (Bạn không được phép lưu trữ dữ liệu ở cả hai dạng trong hệ thống của chính mình.) Nó thực sự trở nên tồi tệ hơn, vì Tên đầy đủ không chỉ bao gồm Gia đình / Được cung cấp, mà còn cả Tiêu đề và Hậu tố, mỗi loại cũng có giới hạn 35 ký tự cho 143 ký tự tối đa đầy thú vị trong các trường được nối thêm. Sucks là nhà phát triển phải trao đổi dữ liệu với cả hai hình thức lưu trữ tên.
mmitchell

3
Rõ ràng hướng dẫn được viết từ kỳ vọng rằng một cá nhân có thể có Tên được đặt dài (tối đa 35 ký tự) hoặc Tên gia đình dài (tối đa 35 ký tự), nhưng không chắc là có cả hai phần của tên đó quá dài.
Ian Nelson

3

Ở Anh, có một vài tiêu chuẩn của chính phủ giải quyết thành công phần lớn dân số Vương quốc Anh - Văn phòng Hộ chiếu, Cơ quan Cấp phép Lái ​​xe & Xe, Văn phòng Thăm dò ý kiến ​​và NHS. Họ sử dụng các tiêu chuẩn khác nhau, rõ ràng.

Thay đổi tên của bạn bằng Deed Poll cho phép 300 ký tự ;

Không có giới hạn pháp lý về độ dài của tên bạn, nhưng chúng tôi áp đặt giới hạn 300 ký tự (bao gồm khoảng trắng) cho tên đầy đủ của bạn.

Các NHS sử dụng 70 ký tự cho tên bệnh nhân

TÊN BỆNH NHÂN
Định dạng / chiều dài: tối đa 70

Văn phòng Hộ chiếu cho phép 30 + 30 đầu tiên / cuối cùng và Giấy phép lái xe (DVLA) là 30 tổng số.

Lưu ý rằng các tổ chức khác sẽ có những hạn chế riêng về những gì họ sẽ hiển thị trên các tài liệu họ sản xuất - đối với Văn phòng Hộ chiếu của HM, giới hạn là 30 ký tự cho mỗi tên và họ của bạn, và đối với DVLA, giới hạn là 30 ký tự cho bạn Họ và tên.



2

Những gì bạn thực sự hỏi là một câu hỏi có liên quan, nhưng thực chất khác nhau: tôi có thường xuyên cắt ngắn tên để phù hợp với chúng trong cơ sở dữ liệu không? Câu trả lời phụ thuộc cả vào tần suất của các độ dài khác nhau của tên cũng như độ dài tối đa được chọn. Mối quan tâm này được cân bằng bởi những lo ngại về tài nguyên được sử dụng bởi cơ sở dữ liệu. Xem xét mức độ chênh lệch trên không nhỏ giữa các độ dài tối đa khác nhau đối với trường varchar tôi thường nói sai về việc không bao giờ bị buộc phải cắt bớt tên và làm cho trường lớn như tôi dám.


1

Lưu ý rằng nhiều nền văn hóa có 'họ thứ hai' thường được gọi là tên gia đình. Ví dụ: nếu bạn đang giao dịch với người Tây Ban Nha, họ sẽ đánh giá cao việc có một tên gia đình được tách khỏi 'họ' của họ.

Đặt cược tốt nhất là xác định loại dữ liệu cho các thành phần tên, sử dụng loại dữ liệu cho loại dữ liệu cho họ và tinh chỉnh tùy thuộc vào miền địa phương.


Không có lợi thế nào để làm cho các giới hạn nhỏ hơn ở các địa phương có giá trị thống kê nhỏ hơn - kích thước của trường không ảnh hưởng đến không gian được sử dụng, trừ khi một số giá trị thực sự chiếm các ký tự được phép thêm đó (và điều đó có nghĩa là dù sao bạn cũng đã chọn đúng) !
Tao

0

Tên đầu tiên trung bình là khoảng 6 chữ cái. Đó là 43 cho một tên cuối cùng. :) Có vẻ như bạn có thể rút ngắn nó nếu bạn muốn.

Câu hỏi chính là bạn nghĩ bạn sẽ có bao nhiêu hàng? Tôi không nghĩ varchar (50) sẽ giết bạn cho đến khi bạn nhận được vài triệu hàng.


6
Nếu bạn có 50 triệu giá trị trong khoảng từ 10 đến 15 ký tự trong cột varchar (20) và cùng 50 triệu giá trị trong cột varchar (50), chúng sẽ chiếm chính xác cùng một không gian. Đó là toàn bộ quan điểm của varchar, trái ngược với char.
Tao


0

tùy thuộc vào người sẽ sử dụng cơ sở dữ liệu của bạn, ví dụ tên châu Phi sẽ làm với varchar (20) cho tên cuối cùng và tên được phân tách. tuy nhiên nó khác nhau giữa các quốc gia nhưng vì mục đích tiết kiệm tài nguyên và bộ nhớ cơ sở dữ liệu của bạn, hãy tách riêng các trường họ và tên và sử dụng varchar (30) nghĩ rằng nó sẽ hoạt động.

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.