I have a simple webform that will allow unauthenticated users to input their information, including name. I gave the name field a limit of 50 characters to coincide with my database table where the field is varchar(50), but then I started to wonder.
Is it more appropriate to use something like the Text column type or should I limit the length of the name to something reasonable?
I'm using SQL Server 2005, in case that matters in your response.
EDIT: I did not see this broader question regarding similar issues.
In the UK, there are a few government standards which deal successfully with the bulk of the UK population -- the Passport Office, the Driver & Vehicle Licensing Agency, the Deed Poll office, and the NHS. They use different standards, obviously.
Changing your name by Deed Poll allows 300 characters;
The NHS uses 70 characters for patient names
The Passport Office allows 30+30 first/last and Driving Licenses (DVLA) is 30 total.
The average first name is about 6 letters. That leaves 43 for a last name. :) Seems like you could probably shorten it if you like.
The main question is how many rows do you think you will have? I don't think varchar(50) is going to kill you until you get several million rows.
I usually go with varchar(255) (255 being the maximum length of a varchar type in MySQL).
We use 50.
What you're really asking is a related, but substantially different question: how often do I want to truncate names in order to fit them in the database? The answer depends both on the frequency of different lengths of names as well as the maximum lengths chosen. This concern is balanced by the concerns about resources used by the database. Considering how little overhead difference there is between different max lengths for a varchar field I'd generally err on the side of never being forced to truncate a name and make the field as large as I dared.