web-dev-qa-db-fra.com

Prénom deuxième prénom nom de famille. Pourquoi pas le nom complet?

J'essaie de trouver une meilleure approche pour stocker le nom des gens dans le tableau. Quels sont les avantages de 3 champs sur 1 champ pour stocker le nom des personnes?

[~ # ~] mise à jour [~ # ~]

Voici une discussion et des ressources intéressantes sur le stockage des noms et l'expérience utilisateur

Fusion du prénom/nom dans un champ

43
ashraf

Gardez vos données aussi propres que possible!

Comment?

Demandez à votre utilisateur seulement le moins de choses dont vous avez absolument besoin au moment où vous le demandez.

La façon dont vous stockez le nom n'a pas d'importance. Ce qui compte c'est que

  1. l'expérience utilisateur est aussi bonne que possible
  2. vous n'avez pas de fausses données dans votre système

Si vous ennuyez les utilisateurs avec des champs obligatoires à remplir et à les remettre en question plusieurs fois, ils peuvent se fâcher et ne pas adhérer à votre application immédiatement. Vous voulez éviter à tout moment les mauvaises expériences utilisateur.

Aucun utilisateur ne se soucie de la facilité avec laquelle vous pouvez rechercher dans votre base de données son deuxième prénom. Il veut vivre une expérience facile et agréable, c'est tout.

Que font les utilisateurs s'ils sont obligés de saisir des données telles que leur adresse postale ou même leur adresse e-mail lorsqu'ils souhaitent uniquement un compte "en lecture seule" sans notification? Ils mettent des données de déchets dans votre système. Cela rendra vos super algorithmes de recherche et de tri inutiles de toute façon.

Ainsi, mon conseil serait dans n'importe quelle application de collecter aussi peu d'informations de votre utilisateur que vous avez vraiment besoin pour les servir, pas plus.

Si, par exemple, vous gérez une boutique en ligne d'aliments pour animaux de compagnie, ne demandez pas à vos utilisateurs lors de l'inscription quel type d'animaux de compagnie ils possèdent. Faites-en une option pour eux de remplir une fois qu'ils sont connectés et tous heureux (nouveaux clients). Ne leur demandez pas leur adresse postale jusqu'à ce qu'ils commandent des trucs qui sont réellement transportés à leur domicile, des trucs pour lesquels ils paient et donc se soucient que VOUS ayez leurs coordonnées exactes .

Cela conduira à une bien meilleure qualité des données et c'est ce dont vous devez vous soucier, pas des détails techniques dont l'utilisateur n'a aucun avantage ....

Dans votre exemple, je demanderais simplement le nom complet (pas sûr cependant) et une fois que l'utilisateur s'abonne volontiers à votre newsletter, laissez l'utilisateur décider comment il/elle veut être adressé ...

37
raoulsson

Vous pouvez toujours construire un nom complet à partir de ses composants, mais vous ne pouvez pas toujours déconstruire un nom complet en ses composants.

Supposons que vous souhaitiez rédiger un e-mail commençant par "Dear Richie" - vous pouvez le faire de manière triviale si vous avez un given_name champ, mais déterminer le prénom d'une personne à partir de son nom complet n'est pas anodin.

Vous pouvez également rechercher ou trier trivialement par given_name, ou family_name, ou peu importe.

(Notez que j'utilise given_name, family_name, etc. plutôt que first_name, last_name, parce que différentes cultures mettent leurs noms dans des ordres différents.)

Il est difficile de résoudre ce problème dans le cas général - voici un article qui donne un aperçu de la difficulté: Représentation des noms de personnes dans Dublin Core .

64
RichieHindle

Comme d'autres l'ont dit, comment décomposer un nom complet en ses composants.

  • Colin Angus Mackay
  • Jean Michel Jarre
  • Vincent Van Gogh
  • Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso

Comment décomposez-vous ce lot de manière fiable?

Pour en savoir plus, voir les programmeurs mensongers croient aux noms .

17
Colin Mackay

Je cherchais la Guerre civile espagnole l'autre jour, et j'ai trouvé cette exception à la plupart des règles:


La prochaine fois que je travaillerai sur un système qui doit stocker des noms, je vais essayer quelque chose de radical: concevoir à partir des exigences.

Pourquoi allons-nous utiliser les noms?

  1. Nom sur une étiquette d'adresse du service postal
  2. Salutation sur le site
  3. Nom informel

En fonction de l'utilisation des noms, nous déterminerions la quantité d'informations à stocker. Peut-être que nous permettons à l'utilisateur d'entrer les trois, y compris les sauts de ligne dans le premier cas (le généralissimo Franco pourrait vouloir que ses titres et rendez-vous complets soient répertoriés, s'il n'était pas encore mort). Peut-être que nous proposons First, Middle, Last, Generation en option et remplissons le reste par défaut. Peut-être que nous offrons d'autres options courantes comme nom de famille, prénom.

C'est en contraste avec l'ancien, le premier, le dernier, le style que nous avons utilisé depuis avant de commencer à programmer en COBOL en 1975, et qui ont "fait leur chemin" depuis.

13
John Saunders

Malheureusement, c'est un peu comme demander quelle est la meilleure façon de stocker un numéro dans la base de données. Cela dépend de ce que vous allez en faire - parfois vous voulez un entier, d'autres fois un octet, et parfois un flottant. Avec les noms, cela dépend de choses telles que les cultures que vous attendez de vos utilisateurs, ce que vous prévoyez de faire avec les noms (utiliserez-vous ces noms pour vous connecter à un autre système qui stocke les noms comme "nom, prénom"? ), et combien vous pouvez vous permettre d'ennuyer vos utilisateurs. S'il s'agit d'une application RH interne, vous pouvez probablement vous permettre de déranger beaucoup les utilisateurs et d'avoir une répartition très structurée et formelle des composants de nom (il y en a bien plus de 3 - n'oubliez pas mr/mrs, jr, III, plusieurs prénoms, noms de famille avec trait d'union et qui sait quoi d'autre si vous essayez de gérer des noms de toutes les cultures. Si vous avez une application Web qui peut ou non intéresser les utilisateurs, vous ne pouvez pas leur demander de trop s'en soucier.

11
Peter Recore

Vous voudrez peut-être rechercher dans les 3 champs séparés pour un et son peu coûteux à concaténer pour le nom complet.

par exemple. Si vous souhaitez rechercher tous les Mr. Nolans, votre question serait

SELECT Title+' '+FirstName+' '+Surname As FullName  
from table where firstname = 'Mr' and surname ='Nolan'

faire cela avec seulement les noms complets serait une douleur.

7
Johnno Nolan

Garder les champs séparés vous permet de prendre en charge différents formats de sortie et cultures où le nom de famille est écrit en premier

4
Ken Keenan

Je suis anglais et n'ai qu'un seul nom. Je le mets normalement dans le champ "nom de famille" pour la moindre aggravation. Je suis généralement obligé de mettre quelque chose dans le champ "prénom" aussi, ce qui par définition est faux.

Toute tentative d'imposer autre chose que "Nom" est vouée à l'erreur au moins une partie du temps, et parfois très frustrante pour les utilisateurs. Les noms uniques sont courants dans le sud de l'Inde, en Indonésie et au Pakistan (ce qui représente des centaines de millions de personnes) ainsi que dans le bizarre occasionnel au Royaume-Uni comme moi.

La `` première, moyenne, dernière '' est très centrée sur les États-Unis. Peu d'autres pays pensent aux noms de cette façon. Veuillez arrêter de le faire.

4
Wookey

Des choses comme ORDER BY firstname ou ORDER BY lastname sont possibles lorsque vous divisez le nom en plusieurs champs.

Pas aussi facile à faire lorsque vous écrasez tous les noms dans un seul champ.

4
bobobobo

La seule chose à laquelle je peux penser est à des fins de recherche. Il est préférable de rechercher un champ en utilisant [=] plutôt que de dire [comme].

Si vous n'avez pas besoin d'afficher le nom sous forme de mots séparés, choisissez un seul champ.

Mais si vous avez besoin de faire quelque chose comme [Cher M. Achu], alors peut-être une approche à 3 champs serait mieux.

2
griegs

La plupart du temps, il est là pour prendre en charge l'écriture de lettres types telles que "M. Untel", ou pour rechercher/trier par nom de famille, ce qui est très courant.

Étant donné que premier/milieu/dernier peut ne pas s'appliquer à toutes les cultures, il pourrait y avoir une meilleure approche. Il pourrait être mieux exprimé par "nom informel"/"nom formel"/"nom légal" ou quelque chose comme ça.

Pourtant, à ce stade, premier/milieu/dernier est très commun, et du point de vue de la saisie de données, c'est ce que tout le monde attend.

2
Chris Arguin

Voici la chose, même les humains ne peuvent pas toujours faire les choses correctement, il y a tout simplement trop de données et trop de cas spéciaux. Je pourrais changer mon nom en ce moment pour avoir 20 parties, avec le milieu 13 comme mon "premier" nom. Les parties de noms peuvent contenir n'importe quel nombre de mots et il peut y avoir n'importe quel nombre de parties de noms. Certaines personnes n'ont qu'un seul nom (pas de nom de famille). Certaines personnes ont beaucoup de prénoms. Certaines personnes ont des prénoms ou des noms de famille composés de plusieurs mots. Certaines personnes citent d'abord leur nom de famille. Certaines personnes s'appellent par leur deuxième prénom. Certaines personnes portent des surnoms qui ne sont pas évidemment liés à leur prénom.

Si vous essayez de deviner ces conventions dans le logiciel, VOUS ÉCHOUEREZ. Période. Peut-être que vous réussirez parfois, peut-être même la plupart du temps, mais cela en vaut-il la peine? À mon avis, vous devez stocker les noms dans un seul champ et arrêter d'essayer d'être mignon en utilisant des prénoms pour désigner une personne. Si vous avez besoin d'informations supplémentaires sur un nom (par exemple un surnom), demandez à l'utilisateur!

2
Wedge

Je ne sais pas dans quelle mesure ce serait pratique, mais peut-être si la sensibilité culturelle est importante dans le contexte de l'application en cours de développement, peut-être qu'un nom devrait être une collection avec chaque élément de la collection portant une valeur indiquant si le nom est le "prénom" adressable "ou le" nom de famille "adressable et ainsi de suite pour" titre "ou tout autre élément qui doit être identifié. Un identifiant de nom pourrait être utilisé pour identifier l'ordre des éléments pour recomposer le nom complet.

1
Lloyd McFarlin

Chacun des noms individuels est une donnée atomique. Lorsqu'ils sont stockés séparément, il est plus facile de les imprimer dans différents formats tels que Prénom Nom et Prénom, Prénom.

1
geofflane

Il n'y a aucun avantage si vous n'avez jamais besoin de trier ou de rechercher par prénom, deuxième prénom ou nom de famille.

1
dkretz

La flexibilité.

par exemple. Si quelqu'un avait un nom de famille à double canon et pas de deuxième prénom.

1
Smalltown2k

J'ai voté pour certaines de ces réponses, mais si vous cherchez à éviter la concaténation répétitive ou redondante ou désordonnée dans votre code, vous pouvez toujours utiliser une colonne calculée dans la base de données ou une méthode dans une classe qui expose le nom reconstruit de manière cohérente. Si ces concaténations sont coûteuses (car vous imprimez un million de relevés), vous pouvez utiliser une colonne persistante.

Souvent, vous autorisez les utilisateurs à spécifier des noms tels que des surnoms ou des noms conviviaux, afin que vous ne vous y référiez pas par le nom dans leurs enregistrements ou toujours en tant que M. Smith.

Tout dépend de vos besoins. Il n'y a pas de bonne réponse sans l'environnement auquel il est censé satisfaire.

1
Cade Roux

Il suffit d'avoir deux champs, "Nom complet" et "Nom préféré" - c'est facile. Prend en charge tous les noms existants (tant que la langue a des symboles lexicaux ... Donc, oui, cela exclut les langues qui n'ont pas de forme écrite).

Assurez-vous simplement qu'elles sont gérées dans un format Unicode et que le code d'application gère correctement la conversion Unicode.

1
Arafangion

Le problème i18n peut être un bug dans les deux cas. certaines cultures utilisent le nom de famille en premier et le prénom en dernier, ce qui évoque l'idée des prénoms et des noms de famille, nous passons donc aux champs pour les noms de famille et les prénoms. Attendez , certaines cultures n'ont pas de nom de famille ou le nom de famille est modifié par le sexe du nom.
Nous pouvons entrer dans les cultures tribales où la personne est renommée à l'âge adulte. Le nom d'enfance de "Sitting Bull" était "Jumping Badger".
. Il devrait y avoir au moins un not null champ "Prénom" et un champ optional "Nom de famille" lié à un PK qui est un entier. Si les exigences susmentionnées sont respectées, des champs peuvent être ajoutés sans problème d'interruption des requêtes.

0
WolfmanDragon

Pour moi, il est simplement préférable de stocker 3 noms afin qu'une analyse explicite soit nécessaire plus tard si les composants individuels sont nécessaires.

0
phpnewbie

Vous ne pouvez pas toujours séparer le nom de famille du nom complet de manière claire et fiable, il y a donc de bonnes raisons de le séparer, car vous avez souvent besoin d'un nom de famille. Après cela, il existe deux approches courantes:

  1. prénom et deuxième prénom; ou
  2. prénoms.

(2) est sans doute plus préférable parce que les gens ont parfois plus de deux prénoms et (1) est plus rigide à cet égard.

En outre, un autre champ commun est Preferred_name (en plus du précédent).

0
cletus

Certains des problèmes peuvent être résolus en stockant également une colonne supplémentaire comme PreferredName. Nous le faisons dans notre base de données et stockons également une colonne de préfixe et une colonne de suffixe. par exemple 'Prof Henry W Jones Jnr' avec le nom préféré comme 'Indiana Jones'.

0
softveda