Welcome to MSDN Blogs Sign in | Join | Help

What’s in a name?

When you want to store the name of a person a typical design starts out by creating two fields (in database or class):

Person
First Name
Last Name

Soon you realize lot of people have middle name, especially, when name change occurs after marriages. So you go and add one more field:

Person
First Name
Middle Name
 
Last Name

This is all good… until you encounter people in countries such as Spain and Cuba who have custom to have two last names. Both are equally important and both are required in any official document (including ones your website or app may print out). So you go in and add one more field while thinking this ought to do it once and for all:

Person
First Name
Middle Name
 
Last Name
2nd Last Name

Not so fast…  Lot of people from Hong Kong and few other places in Asia actually carry two first names. One of these first names is traditional while other is typically a Western/Roman name. Both first names are important and often many people will know only Western/Roman first name of a person although official documents would only refer to traditional names.

For example, consider name of Hong Kong’s Chief Secretary Anson Chan Fang On Sang. Here Anson is English given name, On Sang is Chinese given name, Chan is husband’s surname and Fang is her own surname.

So time to add few more field so we can store everybody’s names on planet without loss of semantics:

Person
Traditional Given Name
English Given Name
Middle Name
 
Last Name
2nd Last Name

Ok… so are we done now? Well, almost! We are still missing at least two critical pieces of information: Salutation and Suffix.

Example of common salutations are Dr, Mr, Mrs, Mr. While salutations are quickly falling out of fashion it might be still required, for example, if you are printing out an official letter to your customer and don’t want to make it look very casual.

Example of common suffixes are Jr, Sr, III, IV etc. These are required in official/legal communication to avoid confusion with other family members of a person.

Person
Salutation
Traditional Given Name
English Given Name
Middle Name
 
Last Name
2nd Last Name
Suffix

Now we have covered most of the globe. There are still two more nice-to-have fields if you want to make your customers happy: Phonetic Given Name and Phonetic Last Name. Remember the times when you call customer support and each time you have a guy struggling to say your name? These two fields would avoid those moments:

Person
Salutation
Traditional Given Name
English Given Name
Middle Name
 
Last Name
2nd Last Name
Phonetic Given Name
Phonetic Last Name
Suffix

So there you have it. A structure that can store almost anybody’s name on planet while maintaining semantics of each component of a name.

Most applications won’t need to go to this extreme because it’s OK to just have one first name and one last name that correctly identifies a person for its purpose even if it’s culturally incorrectly and technically incomplete. However if you are in a business where legal implications are high or if any information loss about your customer is not tolerable then it’s good to think about these possibilities.

There are probably better solutions than giant structure like above just to store name of a person. Instead of having all these different fields you can simply have one free form field, say, Full Name and another field called Full Name Style which takes values indicating how different components of names are arranged:

Person
Full Name
Full Name Style

This structure will make searches for specific components of a name little difficult but it would extend well as your application grows around the planet.
Published Friday, August 07, 2009 5:32 PM by shitals

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

Friday, August 07, 2009 9:13 PM by NickMalik

# re: What’s in a name?

sounds like overengineering.

Maybe it is better to have a single field with the entire name in it, and another field that has the part of the name that should be used for alphabetization, and another field that should be used for the saluation (e.g. Mr. Smith).

Think about how you will use the name before you engineer a structure that is as unwieldly and unmaintainable as the one you describe.

Friday, August 07, 2009 9:23 PM by shitals

# re: What’s in a name?

I'm not the fan of this "unwieldly and unmaintainable" structure either. However lot of designs starts off with FirstName and LastName fields just to find at later stages that it was incomplete. I would much rather prefer just one field "Full Name" and another field that describes the format as I've mentioned at the end.

Friday, August 07, 2009 10:21 PM by JasonRosenberg

# re: What’s in a name?

Another that is a usual miss is "Nickname".  A name that the person is known by but differs from their First Name.

Saturday, August 08, 2009 3:53 AM by mark88online

# re: What’s in a name?

if it is related to the database that you are creating you should have a different query in order to change the last name of the person,,

Sunday, August 09, 2009 11:20 AM by suziee100

# re: What’s in a name?

I agree. When allocating data especially in Act etc I find that it is sometimes extremely over-engineered and would be helpful to offer fields that you can uniquely name and preference rather than all the predetermined data.

Monday, August 10, 2009 2:36 AM by ppindia

# re: What’s in a name?

It's great to hear that some one is debating it. My name is always screwed up by different systems. In my family there is no concept of first name and last name this is an unwanted western import. Some of these systems are blindly implemented causing a lot of hardship to users.

In my view only there should be:

Salutation

Full Name

Preferred Name(or display name)

Thursday, October 29, 2009 7:02 PM by Josh Einstein

# re: What’s in a name?

This is exactly why I named my first son DF2EB3AD-72FF-45E4-B667-6F7D03EC7BE4.

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker