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:
Avantages pour le champ divisé:
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.
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.
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.
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é.
Je suis d'accord avec beaucoup de ce que @JanHudec a dit, bien que j'aimerais développer un peu cela:
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
Directives semi-formelles
Directives formelles
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é.
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é?