Definitely read https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-... if you haven't yet. Then think about what are the requirements your system needs when it comes to names. Does the app need to know what a user's name is at all or is a username enough? Does it need to distinguish the family part of their name for anything? A thing I think is the most general is to just have a Full Name field (min length 1…
There are 4 main name forms that I often see: * Full name (John Smith) * Index name (Smith, John) - mostly for meatspace compatibility. * Preferred name (John Smith) - used in lists with other people's names * Personal name (John) - used in direct communications
Then there is the difference between the "full" name and the legal full name, with all names spelled out. The latter is sometimes necessary, but it can be awkward or inappropriate to use it in most places that expect a full name.