This may help. The post is humorous, but insightful.
[First name] [Last name] is not a universal rule for names. It is just common where you live. If you impose rules in this, sooner or later you will have people who cannot be added to your system.
Basically, make sure you impose as littlefew restrictions as possible, and allow flexibility between the actually nameactual stored name, and any extra ones.
I would go with something like this:
- Display name (for consistent names when showing forms/data): (should be [first] [last]).
- Other names/full name (for searching, more precise matching, etc). Here, allow user to write anything, up to given length; length should be more than you think should reasonably be enough - e.g. if you think 40 characters should be enough, put 150500 :) ).
- Addressing (Mr, Mrs, Ms, Jr, Sr, -san, custom value (like Tov.) etc).
- internal ID (this ID should uniquely identify every person within your application, preventing name collisions).
For example, my name isn't correctly writable in most European languages, due to Romanian-specific diacritics (so, whenever I write my name outside my home country, technically I write it wrongly - so people can read and pronounce it).
Some interesting name examples and links:
http://en.wikipedia.org/wiki/Nicholas_Barbon
http://en.wikipedia.org/wiki/Prince_%28musician%29