web-dev-qa-db-fra.com

Modéliser le prénom et le nom séparément

Quels arguments quelqu'un doit-il prendre en compte lors de la conception d'un nouveau système et doit soit stocker le nom d'une personne dans un champ, soit séparément comme prénom/nom?

Avantages pour un seul domaine:

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

Avantages pour le champ divisé:

  • Une communication personnalisée est possible "Dear Mr X" ou "Dear Julie"
  • Si un service Web consommé a besoin du prénom/nom séparément, il peut être fourni facilement.
  • Meilleur choix pour toute industrie ayant des exigences d'identification strictes (par exemple médicales, gouvernementales, etc.)
  • Un choix plus sûr, car vous pouvez toujours revenir à l'alternative de champ unique

Voyez-vous un argument supplémentaire qui n'est pas répertorié ci-dessus?

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

33
Istvan Devai

Le prénom et le nom 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 mettre en prénom, et le tri sera incorrect, ou en nom de famille, et l'affichage sera. Et puis il y a des pays comme l'Islande où ils n'utilisent pas du tout les noms de famille, mais plutôt le prénom du père. Ils trient donc simplement par prénom.

Les termes "prénom" et "nom de famille" (ou "nom de famille") sont meilleurs à cet égard, mais je les éviterais à moins que cela ne soit absolument nécessaire (c'est-à-dire que les documents officiels comme les passeports en ont, alors vous en avez besoin), car ils rendent les choses plus compliquées.

  • Une communication personnalisée est possible "Dear Mr X" ou "Dear Julie"

Sauf que vous n'avez aucune idée d'appeler une personne donnée par son prénom, son nom ou quoi. Et ne me lancez pas sur les langues qui ont l'accusatif - vous ne pouvez pas dérivez l'accusatif du 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 verrouillé sur leurs mauvais choix. Ce n'est aucun avantage pour vos propres conceptions.

  • Meilleur choix pour toute industrie ayant des exigences d'identification strictes (par exemple médicales, gouvernementales, etc.)

Non, c'est un choix faux pour ceux-ci. Les documents officiels utilisent généralement les termes "prénom" et "nom de famille" (ou "nom de famille"), qui sont moins ambigus.

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

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

50
Jan Hudec

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

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

Avez-vous besoin d'obtenir des données pour gérer les formulaires gouvernementaux, les soins de santé ou d'autres exigences légales/système? Suivez tout ce qui vous dicte. 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-ce raisonnablement probable, suffisant pour justifier d'ignorer YAGNI)? Faites ce qui est logique là-bas.

Si vous avez besoin de communications personnalisées, est-il raisonnable de simplement 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 avez à faire et YAGNI le reste.

32
Becuzz

Si vous avez plusieurs façons d'afficher et/ou d'utiliser le (s) nom (s), vous aurez probablement besoin de champs séparés. Parallèlement à la saisie des données, vous pouvez fournir des commentaires pour montrer à l'utilisateur comment ils seront utilisés. La façon dont vous les combinerez pourrait conduire à une conversion dans un seul champ à l'avenir.

Ayez des étiquettes qui indiquent: Nom de salutation ou d'affichage: Prénom + Nom Organisation/Tri: Nom, Prénom

Lorsque vous n'êtes pas sûr de savoir comment cela sera utilisé à l'avenir, commencez par des noms fractionnés, puis vous pouvez les combiner en un seul champ lorsque vous réalisez que c'est tout ce dont vous avez vraiment besoin. Ce n'est pas qu'il est difficile d'écrire un algorithme pour diviser un champ de nom unique en prénom et nom, mais vous ferez une erreur sur quelques-uns et les gens n'aiment vraiment pas les erreurs avec leurs noms. Avec les champs divisés, les utilisateurs peuvent ajuster la façon dont ils entrent leur nom lorsqu'ils voient comment il est utilisé. Les combiner dans un champ de nom unique permanent est moins risqué.

5
JeffO

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

  • Vous devez connaître vos besoins réels, 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 régions et les cultures.
  • De nombreuses cultures ne correspondent pas à la vôtre, ce qui conduit à de mauvaises hypothèses. (C'est le plus gros point de Jan)

La terminologie est importante

Des termes comme prénom et nom de famille ou le nom de famille a une signification sémantique et votre base de données doit toujours refléter la sémantique de vos données. Des termes comme prénom et nom ont une signification positionnelle, généralement basée sur Idées anglaises et américaines sur le fonctionnement des noms. 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 concepts de titre (M. Dr. Mme etc.) ou ordinal (Jr., Sr., III, etc.), et même certifications (PhD, MS, PCAM, etc.) qui peuvent être important selon le contexte et le but.

De nombreux lieux ont le concept de plusieurs noms de famille (paternel et maternel), et certains n'en ont pas. Lors du remplissage des formulaires, les gens doivent parfois faire des choix difficiles quant au nom à utiliser, par exemple en utilisant le nom de famille paternel pour le "nom de famille" dans une forme américaine, 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 de tri. De cette façon, vous pouvez lever les ambiguïtés lorsque vous créez l'enregistrement. Il garantit également que les noms sont triés dans le bon ordre à travers les frontières internationales.

Pratiques courantes

Vos véritables exigences dictent à quel point vous devez être correct sur les noms. Si vous créez un site Web gouvernemental ou bancaire, vous avez plus d'exigences pour stocker et gérer des noms que quelque chose d'informel comme Facebook.

Lignes directrices informelles

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

Directives semi-formelles

  • Avoir un champ pour un surnom, 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 devrait être facultatif)
  • Calculer un champ de tri en fonction des paramètres régionaux et du combo donné/nom de famille
  • Utilisez le surnom lorsque vous vous adressez directement à l'utilisateur
  • Utilisez le nom officiel lors de l'inscription des personnes

Directives formelles

  • Celles-ci sont dictées par les politiques et procédures existantes de l'entité que vous soutenez
  • Vous avez besoin d'autant de champs que le nombre maximum de parties de nom que vous prendrez en charge, nommées sémantiquement pour ce qu'elles sont.
  • Inclure un champ de tri qui gère le tri comme vous le feriez dans le cas semi-formel
  • L'affichage est également généralement dicté par les politiques et procédures existantes. Vous devez vous familiariser avec eux.
5
Berin Loritsch

En dehors de ce que @JanHudec a souligné et avec lequel je suis d'accord, il convient également de noter que dans de nombreux pays, les gens ont plus d'un nom de famille, donc 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 hypothèses, car dans certaines cultures, vous pouvez sembler grossier lorsque vous appelez des personnes par leur nom de famille et dans le cas d'autres, cela pourrait être le contraire.

De plus, certaines cultures mettent l'accent sur des formes comme "Mme" vs "Mme", et elles peuvent également combiner ce mot avec des prénoms ou des noms de famille selon un cas particulier.

Je pencherais donc vers une solution où vous avez un champ de nom unique et peut-être des champs supplémentaires que l'utilisateur remplit qui indiquent comment se tourner vers 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 répartition des noms si vous en avez besoin pour un service Web externe que vous avez mentionné.

4
KjMag

Pour ajouter encore plus à ce que @JanHudec et @KjMag ont souligné, même dans les 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, Noms de famille et Rufname, le nom que vous êtes appelé. Prenons mon père par exemple, il a 3 prénoms, sur son acte de naissance ils sont listés dans l'ordre Christoph Stephan Andreas. Et il a un nom de famille. À votre avis, comment s'appelle-t-il?

La bonne réponse: Andreas. C'est son Rufname, en Amérique, il met cela comme son prénom pour s'adapter au modèle américain. Donc, vous pourriez supposer qu'en Allemagne, le dernier de vos prénoms est le nom que vous vous appelez, mais vous avez ensuite mon frère: Christoph Sebastian Herbert Maria. (Maintenant que j'ai donné, nous sommes bavarois) Ou ma sœur Christine Gabriele. Selon vous, quels sont les noms qui les appellent? Sebastian et Christine respectivement.

Je voudrais tiers 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/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 abordé?

4
Hangman4358