Modélisation prénom et nom séparément

32

Quels arguments une personne doit-elle prendre en compte lors de la conception d'un nouveau système et doit-elle stocker le nom d'une personne sous la forme d'un champ ou séparément en tant que prénom / nom?

Avantages pour un seul champ:

  • Interface plus simple
  • Aucune ambiguïté lorsque vous essayez d'entrer le nom d'une personne qui a un nom très long (souvent non évident qui est le nom de famille / prénom ..)
  • Moins de complexité lors de la manipulation des titres (par exemple, pas besoin de champs séparés pour entrer "MD" ou "Dr.")

Avantages pour le champ divisé:

  • La communication personnalisée est possible "Cher M. X" ou "Chère Julie"
  • Si un service Web consommé a besoin du prénom / nom séparément, il peut être fourni facilement.
  • Meilleur choix pour tout secteur soumis à des exigences d’identification strictes (par exemple, médical, gouvernemental, etc.)
  • Choix plus sûr, car vous pouvez toujours revenir à l'alternative de champ unique

Voyez-vous un argument supplémentaire qui ne figure pas dans la liste ci-dessus?

Mise à jour: la question est de savoir quels arguments supplémentaires (= non répertoriés dans la question) peuvent être répertoriés pour chaque solution. Je pense que donner des avis au lieu d'avantages et inconvénients possibles conduit la discussion dans le mauvais sens. Chaque développeur doit prendre sa décision concernant ce problème. Le but de cette question est de constituer une liste d'arguments non triviaux pouvant être évalués si nécessaire.

Istvan Devai
la source
11
Qu'essayez-vous de faire avec ces noms? Avez-vous des exigences légales? Y at-il une conséquence autre que l’ affichage du nom de l’utilisateur?
Darkhogg
9
Distiction prénom / nom ne prend pas en charge les personnes ne possédant qu'un seul nom, tel que "Cher".
JacquesB
77
Je vous conseille de lire l'article suivant: kalzumeus.com/2010/06/17/… c'est une véritable révélation pour les noms.
Pieter B
10
Vous pouvez envisager de poser cette question sur l'expérience utilisateur . La communauté de cet endroit pourrait peut-être offrir une perspective différente sur ce problème essentiellement lié à l'interface utilisateur.
11684
9
@PieterB Certains points de cet article sont discutables et vous devez parfois faire des suppositions pour que les choses se passent bien. Cet article ne fournit pas de conseils utiles sur la façon de gérer les noms. Si un nom contient des caractères non-unicode, que faites-vous pour permettre à l'utilisateur de télécharger une image? Et s'il y a des aspects non visuels - autoriser une vidéo avec son? Que faire si un nom est une performance et ne peut être joué qu'à minuit à Hong Kong? À un moment donné, vous devez devenir réel et résoudre les problèmes au lieu de vous laisser aller à des situations théoriques imprévues que votre base d'utilisateurs ne rencontrera jamais.
Réintégrer Monica

Réponses:

50

Prénom et nom de famille ne sont pas des concepts utiles. Les noms fonctionnent différemment selon les pays. Dans la plupart des pays asiatiques, le nom de famille est écrit en premier, mais il est toujours utilisé pour le tri. Vous pouvez donc le nommer en tant que prénom et le tri sera erroné, ou en nom de famille, et l'affichage le sera. Et puis il y a des pays comme l'Islande où ils n'utilisent pas du tout les noms de famille, mais le prénom du père. Donc, ils trient simplement par prénom.

Les termes «prénom» et «nom» (ou «nom de famille») sont meilleurs à cet égard, mais je les évite quand même à moins que cela ne soit absolument nécessaire (les documents officiels comme les passeports en ont, alors vous en avez besoin), car ils ne font que compliquer les choses.

  • La communication personnalisée est possible "Cher M. X" ou "Chère Julie"

Sauf que vous ne savez pas s'il faut appeler une personne donnée par son prénom, son nom ou quoi. Et ne me lancez pas dans les langues accusatives, vous ne pouvez pas tirer d'accusatif de nominatif en général. Non, c'est mieux si vous demandez simplement à l'utilisateur comment l'appeler.

  • Si un service Web consommé a besoin du prénom / nom séparément, il peut être fourni facilement.

Si . Si vous dépendez d'un autre service, vous êtes condamné à leurs mauvais choix. Ce n'est pas un avantage pour vos propres conceptions.

  • Meilleur choix pour tout secteur soumis à des exigences d’identification strictes (par exemple, médical, gouvernemental, etc.)

Non, c'est un mauvais choix pour ceux-ci. Les documents officiels utilisent généralement les termes «prénom» et «nom de famille», qui sont moins ambigus.

  • Choix plus sûr, car vous pouvez toujours revenir à l'alternative de champ unique

En fait, en raison de l'ambiguïté des noms asiatiques, ce n'est pas si clair que vous le pouvez.

Jan Hudec
la source
2
Si l'application est utilisée dans différentes parties du monde, les étiquettes de champ doivent être localisées, ainsi que la manière dont elles sont combinées / utilisées.
JeffO
5
@JeffO, le vrai problème est que ces jours-ci, il est plutôt probable que des personnes de différents pays se trouvent dans le même système. Vous devez donc créer un système et trouver un moyen d'insérer des noms de différentes cultures pour qu'il fonctionne de manière raisonnablement cohérente. . N'entrez pas dans ce trou de lapin, sauf si vous en avez vraiment besoin.
Jan Hudec
4
@IstvanDevai Il y a eu un cas juridique en Californie où un contrat a été déclaré nul parce que les lois sur le crédit exigeaient le "nom de famille". La personne portait un nom de famille double hispanique, mais lorsqu'on lui a demandé son nom de famille, le premier nom de famille (paternel) a été donné, ce qui est courant. L’autre partie a perdu son dossier car son nom n’était pas son "dernier" nom, c’est-à-dire celui qui se trouvait à la fin de son nom complet. Un exemple de la manière dont first / last invite à la confusion et n’est pas entièrement synonyme de prénom / nom de famille.
6
@ Casey - les prénoms devraient être inclus dans le champ des prénoms, car c'est ce qu'ils sont: les prénoms secondaires. Si j'avais un dollar pour chaque fois que je voyais une personne hispanique qui n'avait pas de prénom, mais un nom de famille à deux prénoms qui donnait son nom de famille (et le plus important) poussé dans un champ de deuxième prénom, je serais déjà à la retraite. Si vous voulez savoir comment appeler une personne, ayez un champ pour cela, séparé du nom. Bartholomew Frank Edward Smith Wellington peut vous dire de les appeler Bart. Nous pouvons parler anglais, mais il y a des gens ici qui ne sont pas anglophones et leur nom est également inscrit.
4
-1. Bien que la réponse en soi ne soit pas totalement fausse, cela n’a pas beaucoup de sens pour la question à l’examen. Le PO recherche plus d'arguments pour utiliser soit un champ, soit deux champs pour les noms humains. Que ce soit appelé "premier / dernier" ou "donné / sur" n’est pas l’attention, c’est juste les étiquettes que le PO avait à l’esprit. Tous les autres points me semblent hautement motivés et, selon mon expérience personnelle en matière de création et de déploiement d'applications pour les gros clients, les hypothèses du PO sont tout à fait normales et se produisent ainsi. Cette réponse tente simplement de faire disparaître les paramètres de la question.
AnoE
31

Le seul argument qui compte est quelles sont les exigences de votre système?

Avez-vous besoin de traiter avec une seule culture? Si oui, conformez-vous à cette culture. Sinon, planifiez l'internationalisation (comme d'autres l'ont souligné).

Avez-vous besoin de données pour traiter avec les formulaires gouvernementaux, les soins de santé ou d’autres exigences légales / système? Suivez ce que ceux-ci dictent. Si cela signifie prénom et nom, faites-le. Si cela signifie quelque chose de différent, faites-le.

Avez-vous besoin d'une API avec nom et prénom (ou est-il raisonnablement probable, suffisamment pour justifier d'ignorer YAGNI)? Faites ce qui a du sens là-bas.

Si vous avez besoin de communications personnalisées, est-il raisonnable de demander à quelqu'un son nom préféré et de le stocker?

Les exigences de votre système devraient déterminer ce que vous faites. Faites ce que vous devez et YAGNI le reste.

Becuzz
la source
7
Il n’existe plus de "culture unique". Même les plus petites communautés ont des normes culturelles et des langues mélangées.
BobDalgleish
7
@BobDalgleish C'est vrai, mais parfois cela n'a pas d'importance. Parfois, le coût de la gestion de plusieurs cultures incite les hommes d’affaires à dire non.
Becuzz
9
@BobDalgleish Probablement quelle que soit la culture dominante sur le marché pour lequel l'application est développée? Je ne pense pas que ce soit aussi mystérieux ou rare.
Casey
3
@BobDalgleish - "culture" n'est pas pertinent. Personne ne pose de questions sur votre culture lorsque des documents vous sont délivrés. Si je n'avais besoin que de soutenir la Serbie (où j'en suis pour le moment), j'indiquerais le nom et le nom de famille tels qu'ils sont définis sur chaque document publié dans ce pays, et c'est tout. Peu importe votre culture. Votre passeport, permis de conduire, etc. auront le prénom et le nom, point.
Davor Ždralo
2
@icirellik Mauvais de quelle manière? Ces choses (limites de longueur, etc.) sont-elles fausses si vous essayez de modéliser parfaitement l'univers? Certainement. Mais on ne m'a jamais demandé de modéliser parfaitement l'univers et, de toutes les manières possibles, quelqu'un pourrait vouloir choisir un nom. Dois-je rendre compte des noms Klingons? Non mais pourquoi pas? Quelqu'un pourrait le faire un jour (honnêtement, cela ne me surprendrait pas si quelqu'un le faisait maintenant). Mais il arrive un moment où vous savez que certaines choses ne fonctionneront pas avec votre modèle. Et le temps de développement supplémentaire nécessaire pour gérer toutes les possibilités n'en vaut tout simplement pas la peine. (suite ...)
Becuzz
5

Si vous avez plus d’un moyen d’afficher et / ou d’utiliser le (s) nom (s), vous aurez probablement besoin de champs distincts. Parallèlement à la saisie des données, vous pouvez également fournir des commentaires pour montrer à l'utilisateur comment elles seront utilisées. La manière dont vous les combinez pourrait conduire à la conversion en un seul champ à l'avenir.

Avoir des étiquettes qui indiquent: Salut ou Nom complet: Prénom + Nom Organiser / Trier: Nom, Prénom

Lorsque vous ne savez pas comment cela sera utilisé à l'avenir, commencez par les noms de division, puis combinez-les en un seul champ lorsque vous réaliserez que c'est tout ce dont vous avez réellement besoin. Ce n’est pas qu’il soit difficile d’écrire un algorithme pour diviser un champ de nom unique en prénom et nom, mais vous allez faire une erreur sur quelques-uns et les gens n’aiment vraiment pas les erreurs avec leur nom. Avec les champs divisés, les utilisateurs peuvent ajuster la manière dont ils entrent leur nom quand ils voient comment il est utilisé. Les combiner dans un champ de nom unique permanent est moins risqué.

JeffO
la source
5

Je suis d'accord avec beaucoup de ce que @JanHudec a dit, bien que j'aimerais développer un peu cette question:

  • Vous devez savoir quelles sont vos véritables exigences, mais il est plus facile de combiner des informations que de les séparer une fois qu'elles sont à nouveau combinées.
  • Le tri sera toujours un défi, car les règles peuvent différer selon les lieux et les cultures.
  • De nombreuses cultures ne correspondent pas à la vôtre, ce qui conduit à de mauvaises hypothèses. (Ceci est le plus gros point de Jan)

La terminologie est importante

Des termes tels que prénom et nom de famille ou nom de famille ont une signification sémantique et votre base de données doit toujours refléter la sémantique de vos données. Des termes tels que prénom et nom ont une signification positionnelle, généralement basée sur les idées anglaise et américaine sur la manière dont les noms fonctionnent. Utilisez la terminologie appropriée pour la sémantique de vos données.

Jusqu'où avez-vous besoin de le décomposer?

Il existe des notions de titre (M. Dr. Mme etc.) ou ordinales (Jr., Sr., III, etc.), et même des certifications (PhD, MS, PCAM, etc.) qui peuvent être importantes en fonction contexte et but.

Beaucoup de localités ont le concept de plusieurs noms de famille (paternel et maternel), et certains n'en ont pas. Lorsque vous remplissez des formulaires, vous devez parfois choisir avec difficulté le nom à utiliser, par exemple en utilisant le nom de famille paternel pour le "nom de famille" dans un formulaire américain, ou en proposant un nom de famille basé sur le nom du père (Janson ).

Alors qu’en Amérique, il est courant d’avoir un ou plusieurs prénoms, il est souvent ignoré en dehors de votre famille.

Tri

Il est utile d’avoir un champ dédié pour le nom du tri. De cette façon, vous pouvez distinguer les règles lorsque vous créez un enregistrement. Cela garantit également que les noms sont triés dans le bon ordre à travers les frontières internationales.

Pratiques courantes

Vos vrais besoins dictent à quel point vous devez être correct concernant les noms. Si vous créez un site Web gouvernemental ou bancaire, vos conditions de stockage et de traitement des noms sont plus strictes que quelque chose d'informel comme Facebook.

Directives informelles

  • Avoir un champ qui décrit comment l'utilisateur veut être connu
  • Trier et afficher utilise ce nom

Directives semi-formelles

  • Avoir un champ pour un pseudo, ou comment l'utilisateur veut être adressé
  • Avoir deux champs, un pour le prénom et un pour le nom de famille (le nom de famille doit être facultatif)
  • Calculer un champ de tri en fonction des paramètres régionaux et de la combinaison donnée / nom de famille
  • Utilisez le surnom lorsque vous vous adressez directement à l'utilisateur
  • Utilisez le nom officiel lors de la liste des personnes

Directives formelles

  • Celles-ci sont dictées par les politiques et procédures existantes pour l'entité que vous soutenez.
  • Vous avez besoin d'autant de champs que le nombre maximum de parties de nom que vous allez prendre en charge, nommés sémantiquement pour ce qu'ils sont.
  • Incluez un champ de tri qui gère le tri comme vous le feriez dans le cas semi-formel
  • L'affichage est également dicté par les politiques et procédures existantes. Vous devez vous familiariser avec eux.
Berin Loritsch
la source
Est-ce que le sous-votant voudrait élaborer? J'ai peut-être manqué quelque chose?
Berin Loritsch
Cela me semble être exhaustif et le conseil le plus pragmatique donné ici.
Jesse Clark
4

Mis à part ce que @JanHudec a souligné et avec lequel je suis d'accord, il convient également de noter que, dans de nombreux pays, les personnes ont plus d'un nom de famille, de sorte qu'un seul champ de nom de famille peut ne pas être pertinent. Par exemple, en Espagne, les gens ont deux noms de famille et ils n'en utilisent qu'un ou les deux, selon la situation.

En outre, vous ne devez pas personnaliser les communications en fonction de vos suppositions, car dans certaines cultures, il peut sembler impoli d’appeler des personnes par leur nom de famille et, dans d’autres cas, cela pourrait être le contraire.

En outre, certaines cultures insistent sur des formes telles que «Mme» ou «Mme». Elles peuvent également associer ce mot à un prénom ou à un nom de famille, selon le cas.

Je me tournerais donc vers une solution où vous avez un champ de nom unique et peut-être des champs supplémentaires remplis par l'utilisateur qui indiquent comment s'adresser à l'utilisateur - quelque chose de similaire à ce que font de nombreuses compagnies aériennes lorsque vous achetez un billet en ligne. Cela peut également résoudre le problème de la division des noms si vous en avez besoin pour un service Web externe que vous avez mentionné.

KjMag
la source
1
On peut supposer que si vous localisez, vous pouvez utiliser un modèle différent pour différentes langues
Casey
4

En ajoutant encore plus à ce que @JanHudec et @KjMag ont souligné, même dans des cultures / langues très proches de l'anglais, cela devient un problème. Prenez l'allemand par exemple. Vous avez le concept de Vornamen, Prénoms, Nachnamen, Nom, et Rufname, le nom que vous avez appelé. Prenons mon père par exemple, il a 3 prénoms, sur son acte de naissance, ils sont énumérés dans l'ordre Christoph Stephan Andreas. Et il a un nom de famille. Comment penses-tu que le nom s'appelle-t-il?

La bonne réponse: Andreas. C’est son nom Rufname. En Amérique, il a choisi ce prénom pour s’adapter au modèle américain. Vous pouvez donc supposer qu'en Allemagne, le dernier de vos prénoms est le nom qui vous a été appelé, mais ensuite vous avez mon frère: Christoph Sebastian Herbert Maria. (Maintenant j'ai abandonné, nous sommes bavarois) Ou ma soeur Christine Gabriele. Selon vous, quels sont les noms qui s'appellent? Sebastian et Christine respectivement.

Je voudrais troisièmement les réponses qui disent un champ pour un nom complet. Et j'ajouterais à cela: peut-être ajouter un autre champ pour un nom de famille et poser la question: par quel nom seriez-vous trié dans une liste? Et puis un dernier champ pour: comment voulez-vous être adressé?

Hangman4358
la source
1
"Nom" est simplement un autre nom pour "nom de famille", pas littéralement le mot qui apparaît en dernier dans l'ordre. Le nom de famille de Nakayama Taro est "Nakayama".
Casey
2
Pour ajouter un autre cas: Mon grand-père s'appelait "Antoon Leendert van Ingen Schenau" => prénom (s): "Antoon Leendert"; appelé: "Leen"; nom de famille: "van Ingen Schenau" à trier sous "Ingen". Ni le nom de l'appelant, ni le tri correct ne peuvent être facilement dérivés d'une entrée prénom / nom.
Bart van Ingen Schenau
1
@ Casey selon qui? Au Japon, il s'agit du "nom supérieur", par exemple, pas du "nom".
eis
1
@ eis Au Japon c'est 名字. Mais ici, dans le monde anglo-saxon, "nom de famille" est synonyme de "nom de famille" et non pas littéralement "le dernier mot de la séquence de noms de quelqu'un".
Casey
1
@ eis je ne suis pas sûr de ce que vous voulez dire. Les utilisateurs ne connaîtront pas la différence si vous appelez le champ de la base de données last_name à la place du nom de famille; l'un n'est qu'un synonyme de l'autre. Si votre problème est de présenter le logiciel à des non-anglophones, cela n'a pas d'importance, car "nom de famille" et "nom de famille" sont des termes anglais et vous devez utiliser le terme dans la langue de votre choix pour localiser la page. Si le problème est que vous souhaitiez que les personnes ne connaissant pas l'anglais puissent utiliser la page anglaise, eh bien, cela semble être un moyen plutôt timide de s'attaquer au problème.
Casey
-2

Si vous envisagez une application globale, vous modéliserez probablement le nom d'une personne sous la forme d'un tableau de chaînes. Par exemple, considérons le nom du président dans le film Idiocracy:

  • Dwayne Elzondo Rosée de la Montagne Herbert Camacho

C'est son nom complet. Le nom contient 6 éléments dans le tableau. Pour la culture américaine, le prénom est le premier élément du tableau (Dwayne) et le nom de famille est le dernier élément du tableau (Camacho). Mais ce n'est pas toujours le cas.

On pourrait appliquer des règles spécifiques à la culture pour déterminer le "premier" nom si le prénom est en fait le dernier élément, et ainsi de suite, en fonction de la manière dont les noms fonctionnent dans différentes cultures / localités.

De plus, dans le cas des États-Unis, nous avons des cas où le dernier élément n'est pas le nom de famille tel que:

  • Dwayne Elzondo Rosée de la Montagne Herbert Camacho Jr.

Donc, un champ de suffixe de nom ou il faudrait peut-être analyser le dernier élément à la recherche de suffixes connus basés sur la culture pour obtenir le nom de famille correct.

Donc, il est toujours préférable de stocker le nom dans un élément (le nom complet), puis d'appliquer une routine de "normalisation / assainissement" afin d'analyser les éléments spécifiques selon les besoins. Une stratégie similaire existe pour les adresses. Ils sont généralement collectés sous la forme d'une chaîne, puis envoyés à un service pour analyser les parties.

Jon Raynor
la source
3
Un seul champ puis "analyser" est une très mauvaise idée. Prenons l'exemple d'une personne dont le nom de famille est "Senior": comment analysez-vous cela? Qu'en est-il de "de la Jolla" comme nom de famille?
BobDalgleish
J'ai mentionné l'analyse ou un champ de suffixe de nom. Si une solution générique est nécessaire, vous aurez besoin d'un analyseur de nom afin de pouvoir traiter chaque cas comme "Senior" et "de la Jolla". On pourrait utiliser l'IA et l'entraîner à reconnaître les noms. Je parie que si on lui fournissait assez de données, il serait capable de reconnaître le "de la Jollas" du monde. Mais c'est une solution possible. Certes, la collecte de parties discrètes est également possible, mais présente des inconvénients.
Jon Raynor