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.
la source
Réponses:
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.
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 . Si vous dépendez d'un autre service, vous êtes condamné à leurs mauvais choix. Ce n'est pas un avantage pour vos propres conceptions.
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.
En fait, en raison de l'ambiguïté des noms asiatiques, ce n'est pas si clair que vous le pouvez.
la source
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.
la source
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é.
la source
Je suis d'accord avec beaucoup de ce que @JanHudec a dit, bien que j'aimerais développer un peu cette question:
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
Directives semi-formelles
Directives formelles
la source
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é.
la source
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é?
la source
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:
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:
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.
la source