For our application, which has a website and a backend, we really like the notion of capturing a “full name” for people to allow for the many different ways of expressing someone’s name. However;
- The payment service provider wants “all first names, surname” which
are obligatory for card payments - The newsletter guys want a singular “first name” so the company can be seen to be more ‘personal’
- The accounts people want to be able to sort by “surname”
- We programmers have noticed the following clients in our database:
- Simon Mária – her “first name” is Mária and her “surname” is Simon
- Danesh – only one name (although I assume it’s different written in the appropriate character set!)
- 陳心蘭 – not sure which is the first name or surname (presumably, this client would have written in a roman character set if forced to do so)
These make it necessary to capture each of the elements of someone’s name separately, and somehow making names that don’t really fit into “title, first name, surname” pattern fit anyway.
So, without having a field for every part of “Right Hon. Chev. John Barrington Smythe Doe III OBE LLD MEng” or only one field where just “John” might be entered, how do you structure your application and database in practice so that you don’t get caught out later?
I’ve already looked through the SO posts such as:
First name, middle name, last name. Why not Full Name? and
Person name structure in separate database table but haven’t seen any examples of how people implement the best practice method (capturing “full_name”) in the real world when having to deal with other systems which perhaps aren’t current or best practice…
Thanks!
EDITED – for clarity
The best response I have came from a similar question:
Personal names in a global application: What to store
The answer by Pontus linked to a document, which doesn’t specifically describe how to record a name in a database, but it does provide the most complete description of the problem so far:
http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/PersonName.html
Perhaps if anyone has any experience of database implementations which adhere to this, then feel free to add another answer!