views:

201

answers:

7
+1  A: 

I would start by looking at the vCard standard; it needs a bit of normalization.

Scott
+2  A: 

The standard way is to look at your requirements, and store the data required. While this is an interesting academic problem, the truth is, in the dozens of systems I've worked on, first and last name is usually sufficient. Sometimes we will store a middle initial, but most of the time even that isn't required.

If you have a requirement to store all of Dr. John Quintus Maximus Public-Doe III Ph.D. MD. RPh's information, then you devise storage for that. But as long as your last name allows for enough data, then Dr. Maximus can type as much or as little as he would like to be stored about his name and titles.

NerdFury
A: 

From my experience it is usually

  • Title (as a FK, linking out to a table of titles)
  • Forename
  • Middle name
  • Last name
  • Previous last name (if needed, to catch change of name for married women)
  • Suffix

Anything else tends to be overkill (unless needed in your specific application) and a pain to manage

CResults
+4  A: 

I prefer AD naming style

First Name  givenName
Last Name   sn
Initials    initials
Display Name    displayName
Description description
Office  physicalDeliveryOfficeName
Telephone Number    telephoneNumber
Telephone: Other    otherTelephone
E-Mail  mail
Web Page    wWWHomePage
Web Page: Other url
WooYek
+1: First name, Last name (for sorting), and Display Name (to include all the decorations that people like to have.) And reasonably compatible with other ways of storing information about people. That's what LDAP (and AD) are for.
S.Lott
+1 (to LDAP) for encapsulating the most needed fields in a standard way, -100 for way inconsistent naming (`givenName`, `sn`... What?) and bizarre camelCaps (`wWWHomePage`? Seriously?).
calmh
A: 

The following is a bad idea (see the first comment):

KISS! Free yourself and just use "FullName" :-) (In case you need it, the last word in the string is the "Lastname")

You can always use: Dear "Fullname".

How you handle honorifics depends on your requirements and your audience. You could collect "salutation".

Robert
Bad idea in general. Yes you can have a fullname field but it should be built on separate fileds, otherwise ordering by lastname or seraching by lastname means using like '%Smith%' which means you can;t use the index. I would never store only fullname.
HLGEM
Good point :-) I changed the answer. (May be for some public web applications this would be good enough - where you apply YAGNI and don't even collect the Lastname. (But this was not the question). ...
Robert
+1  A: 

You should design your storage format around how you expect to use the data. If you need to know the difference between the first name(s) and last name(s), then have columns for each. Likewise, if you (or your business) cares about suffix/prefix/middle names/etc... enough to want to use them in a specific manner (e.g. spamming all customers who are Doctors), then have columns for each. But if all your need it for is to identify them in a report, or in a email salutation, then consider an easier approach of: First_names, Last_Names, and leave it at that.

Ask yourself what realistic benefit your organisation would get out of storing each component of a persons name separately. Look at government forms and see how much information about a persons name they feel the need to capture.

Mike
A: 

Unless you are dealing with a specialized group of peole like doctors where you might need to store all the suffixes in an way that makes it easy to search (we often search on professional suffix here), then you can store them either in the lastname field or in a separate suffix field (makes searching all the people named smith more reliable if sufffix is a separate field). but with a comma delimited list. Same for prefixes. I would suggest that firstname, lastname and middlename (Helps distinguish dups and without the filed it is less likely to be put in even if the user knows it) are generally necessary for being able to properly search and report on the data. I wopuld also suggest a calculated field that formats the fullname the way you want it displayed on emails, etc.

HLGEM