Comment modéliser plus d'un «nom de famille»?

11

Dans les pays hispanophones, nous utilisons plus d'un nom de famille, comme:

Prénom ↘ ↙ Nom
                Pedro Arturo Rodríguez Loyola
        Prénom ↗ ↖ (?)

J'essaie de modéliser les données pour le nom du patient. Dans notre pays, c'est important, donc je ne peux pas négliger l'avant-dernier nom, mais je voudrais créer une application qui puisse avoir du sens pour d'autres développeurs, en particulier des pays anglophones.


J'ai créé une question similaire sur English.SE , il a quelques idées sur pourquoi il est important de persister les deux valeurs.

Pablo Olmos de Aguilera C.
la source
15
Y a-t-il la moindre raison pour laquelle une valeur de "nom de famille" ne devrait pas contenir des espaces? Voulez-vous vraiment utiliser un nom de famille dans certains cas d'utilisation et tous les noms de famille dans d'autres? Sinon, je ne vois pas le problème. Laissez le "nom de famille" exactement comme l'utilisateur l'a entré et vous êtes bon.
Kilian Foth
3
en néerlandais, un nom de type "van de Iets" est assez courant. laissez simplement le champ du nom de famille contenir des espaces
ratchet freak
2
Y a-t-il une raison pour laquelle vous ne pouvez pas avoir un seul namechamp?
asfallows
2
@asfallows: parce que si nous imprimons une liste de patients, nous devons les trier par nom de famille. Par exemple, si votre nom est "José Carlos Fernando Almodóvar Soto", comment suis-je censé savoir à l'avance que "Almodóvar" est le premier nom de famille?
Pablo Olmos de Aguilera C.
2
@FedericoPoloni: Quiconque recherche un patient par son nom de famille connaît probablement son nom de famille.
Mooing Duck

Réponses:

19

Q: Comment compte un DBA?

A: 0, 1, plusieurs

Un individu a un ou plusieurs prénoms et un ou plusieurs noms de famille, et éventuellement un titre. Ces noms ont un ordre pour eux. C'est à la localisation et à la culture de déterminer comment se référer à un individu.

ContactId
NamePart {"John", "Smith", ...}
NameType {titre, donné, famille, ???}
Ordre {1, 2, 3, ...}

Pour Pedro Arturo Rodríguez Loyola(contact # 1), vous auriez quatre lignes:

1 / Pedro / donné / 1
1 / Arturo / donné / 2
1 / Rodríguez / famille / 3
1 / Loyola / famille / 4

De cette façon, il n'est pas limité à une structure donnée mais a toujours du sens pour un contact donné là-bas. Que faites-vous lorsque vous avez quelqu'un avec 3 ou 4 prénoms ou noms de famille? ou un nom de jeune fille?

Notez que j'ai changé l'ordre d'une révision précédente de cette réponse - l'ordre est un ordre sur le nom entier plutôt que juste un ordre dans le type de nom parce que dans certaines cultures, le nom de famille vient en premier, vous pouvez avoir divisé parties de titre "Sir John Smith II".

Lecture supplémentaire

Dave Jarvis
la source
2
+1 Mais ce programmeur a travaillé avec de nombreux membres de l'équipe offshore, mais le nom le plus long que j'ai jamais vu est toujours "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso". Maltraitance des enfants ou pas?
Elliott Frisch
@Darkhogg utnapistim l'a comme premier lien 'This' dans sa réponse. C'est l'un de ces «guides définitifs».
J'aime l'idée en tant que concept, mais ce n'est pas un peu difficile de présenter à l'utilisateur qu'il va écrire le vrai nom? La seule chose que je peux trouver, c'est quelque chose comme les champs de contact "GMail", qui vous permettent "d'ajouter" des parties du nom. Avez-vous réfléchi à la façon dont vous pouvez réellement utiliser ce type de modèle de données?
Pablo Olmos de Aguilera C.
1
@Peteris souvent dans les applications médicales (la question d'origine mentionne «patient»), vous devez passer un nom structuré pour l'intégration avec d'autres systèmes. Avoir des données non structurées signifie que vous aurez beaucoup de difficulté à vous intégrer à d'autres systèmes, même des choses comme le transfert d'un patient d'un hôpital à un autre ou le remplissage de champs de formulaire pour les réclamations d'assurance. Et donc le problème sur la façon de structurer les données d'une manière qui vous permet de les manipuler de toutes les manières requises.
1
@Ben un champ de texte libre ne fonctionne pas bien lorsque l'application demande un tri par nom de famille ou lors d'une tentative d'interface avec un ancien système EDI pour le transfert d'un patient d'une ambulance à l'hôpital (ou vice versa), ou en remplissant le champs appropriés dans divers formulaires de réclamation d'assurance. Ce sont tous des domaines clés où il est plus facile d'avoir un peu de données qui désigne chaque partie du nom que d'essayer d'attribuer la signification après coup. Un champ de texte libre est bien, mais parfois ce n'est tout simplement pas une option pour travailler avec d'autres systèmes.
10

Cela peut aider. Le message est humoristique, mais perspicace.

[Prénom] [Nom] n'est pas une règle universelle pour les noms. Il est courant de voir où vous vivez. Si vous imposez des règles, vous aurez tôt ou tard des personnes qui ne pourront pas être ajoutées à votre système.

Fondamentalement, assurez-vous d'imposer le moins de restrictions possible et de permettre une flexibilité entre le nom stocké réel et tout autre nom supplémentaire.

J'irais avec quelque chose comme ça:

  • Nom d'affichage (pour des noms cohérents lors de l'affichage des formulaires / données): (devrait être [premier] [dernier]).
  • Autres noms / nom complet (pour la recherche, une correspondance plus précise, etc.). Ici, autorisez l'utilisateur à écrire n'importe quoi, jusqu'à une longueur donnée; la longueur doit être supérieure à ce que vous pensez être raisonnablement suffisant - par exemple, si vous pensez que 40 caractères devraient suffire, mettez 500 :)).
  • Adressage (M., Mme, Mme, Jr, Sr, -san, valeur personnalisée (comme Tov.) Etc.).
  • ID interne (cet ID doit identifier de manière unique chaque personne dans votre application, empêchant les collisions de noms).

Par exemple, mon nom n'est pas correctement inscriptible dans la plupart des langues européennes, en raison des signes diacritiques spécifiques au roumain (donc, chaque fois que j'écris mon nom en dehors de mon pays d'origine, techniquement je l'écris à tort - pour que les gens puissent le lire et le prononcer).

Quelques exemples de noms et liens intéressants:

http://en.wikipedia.org/wiki/Nicholas_Barbon

http://en.wikipedia.org/wiki/Prince_%28musician%29

http://en.wikipedia.org/wiki/P_diddy

http://en.wikipedia.org/wiki/Burmese_name

utnapistim
la source
Une autre chose à considérer est le tri. Il est souvent souhaitable de pouvoir trier une liste de personnes en fonction de leur nom de famille (ou uniquement nom, ou premier mot en nom de famille, etc.). Si l'application doit le faire, nous avons besoin d'un moyen d'identifier leur "nom de tri".
BenM
Mais j'aime cette idée dans l'ensemble. Au lieu de représenter des noms en fonction d'hypothèses culturelles, nous les représentons en fonction des fonctions dont ils ont besoin pour remplir le système.
BenM
J'aime ta réponse. Je ne comprends pas comment cela peut m'aider à mettre des noms. J'ai besoin de les trier par exemple, nous utilisons normalement le nom de famille. Comment les mettre sur un champ / une colonne appelé "autres noms" ou "nom d'affichage" pourrait m'aider avec cela par exemple?. Bravo pour le nom birman, cependant. Impressionnant.
Pablo Olmos de Aguilera C.
@pablox, mon point était que conceptuellement, vous ne devriez pas traiter le nom d'une personne comme une identité, mais comme des métadonnées pour l'identité (et l'id devrait être un code unique). Vous pouvez considérer ces métadonnées comme organisées, selon les besoins de votre application. Par exemple, vous pouvez choisir le rôle de "nom de tri" sur le deuxième nom (le cas échéant) dans "le groupe de jetons de nom", le rôle de "nom d'affichage" comme premier jeton et le rôle de "nom d'adressage" comme "Dr. | M. | Mme | etc" + "nom d'affichage".
utnapistim
Le tri des noms va généralement être un "tri d'annuaire téléphonique", où vous ignorez divers appendices au nom et triez la partie importante. Par exemple, "van de Bogart" serait trié sur "Bogart", pas sur "van". La façon dont un nom hispanique en plusieurs parties est géré va être culturellement dépendante - où est-il utilisé et comment son utilisation s'intègre-t-il?
Phil Perry
0

Ce n'est pas une chose compliquée ..... ou il me manque quelque chose.

Ayez ces champs: name(varchar), lastname(varchar).

Puis un formulaire pour remplir le nom complet, exemple: Jorge Patricioet le nom de famille Pèrez Gonzáles.

Dans la recherche, vous avez de nombreux opérateurs de comparaison, par exemple dans MySQL, likequi vous aideront à chercher.

La plupart du temps, les noms de famille composés sont toujours en ordre. Pérez Gonzálezdit surtout son nom de famille de cette façon, et non dans l'ordre inverse.

Vous allez sur-concevoir votre base de données d'une autre manière.

JorgeeFG
la source
1
Et si le nom de famille est donné en premier? link
1
@MichaelT, qu'en est-il? Décomposez le champ et recherchez dans la table des noms et des prénoms toute occurrence de la valeur. Supposons toujours que vous ayez un champ de recherche de type Google, sinon vous pourriez simplement avoir un formulaire comme "Nom:" et "Nom:"
JorgeeFG
0

Il existe trois types de noms personnels: Polynymes (noms à plusieurs composants), Mononymes (noms à un seul composant, ex "Cher") et Pictonymes (noms représentés par des images, ex The Artist ).

Une personne peut avoir plusieurs noms, jouer des rôles , par exemple le nom légal et le nom préféré.

Un polynyme a plusieurs composantes, dont le prénom et le nom de famille doivent être requis. Il existe plusieurs types de noms de famille:

  1. Noms de famille réguliers (Jones)
  2. Noms de famille à double canon ("Vaughn Williams" ou "Louis-Dreyfus")
  3. Vrais noms composés {prénom: "Juan Pablo" nom: "Fernández de Calderón", secondaireNom: "García-Iglesias"}

3 est important car on s'attendrait à ce qu'il soit appelé M. Fernández de Calderón , et non M. Fernández de Calderón García-Iglesias.

Donc, fondamentalement, ayez un champ de nom de famille obligatoire et un champ secondaireSurname nullable.

user118920
la source
0

Comment modélisez-vous les différentes composantes du nom d'une personne? Vous ne le faites pas . Au lieu de modéliser des champs séparés pour tous les composants du nom légal d'une personne, ainsi que sa salutation préférée, son appelation, son nom informel, son nom d'utilisateur, son surnom et son nom, modélisez uniquement ce qui vous intéresse.

Il y a de fortes chances que votre système se soucie au maximum de quatre "noms" pour quelqu'un:

  1. Un nom d'affichage qui leur permet de savoir qu'ils sont connectés au système.
  2. Un nom informel par lequel vous les adresseriez lors d'un appel téléphonique.
  3. Un nom officiel avec lequel vous vous référeriez à eux dans la correspondance.
  4. Un nom de tri qui exprime le n ° 2 de manière à ce qu'il soit ordonné dans une liste.

De nombreux systèmes utiliseraient simplement le nom formel de quelqu'un pour # 1 et # 2, laissant les seuls noms qui vous intéressent comme "une chaîne représentant le nom de l'utilisateur" et "une chaîne représentant comment le premier doit être trié".

Du point de vue de la modélisation des données, définissez uniquement les valeurs dont vous auriez réellement besoin. La meilleure façon d'optimiser le stockage de ces valeurs est un détail d'implémentation - celui pour lequel vous ne causerez des maux de tête que si vous sur-optimisez. (Bien sûr, vous "pourriez" simplement enregistrer un prénom et un nom, mais que feriez-vous pour quelqu'un qui n'a qu'un seul nom?)

DougM
la source
-1

Considérons cela d'une autre manière.

Votre système doit se connecter à d'autres systèmes, peu importe votre flexibilité si ce n'est pas le cas. Alors, que font les systèmes avec lesquels vous devez transférer des données?

Lorsque je téléphone à mon médecin pour un rendez-vous, il me demande ma date de naissance, les systèmes leur montrent alors une liste de personnes qui correspondent, puis ils me demandent mon nom, enfin la demande de mon adresse pour confirmer qu'ils ont sélectionné la bonne personne.

Le médecin a besoin de connaître le nom auquel je m'adresse lorsqu'il me parle; ils ont également besoin de connaître le nom pour mettre une lettre s'ils m'écrivent.

Par conséquent, pas seulement un champ de texte unique qui autorise les espaces. Il n'y a aucune raison de séparer le premier du nom de famille, à moins que vous ne les traitiez de la même manière.

Ian
la source
3
Vous remplissez un formulaire sur une réclamation d'assurance. Il a "Nom". La personne vient du Japon. Pendant que vous avez la version translittérée, vous devez mettre le nom de famille approprié dans le champ. De quel mot s'agit-il?
@MichaelT, Que dire que tout le monde a un nom de famille?
Ian
2
Obtenir un nom d'une personne en provenance du Japon (ou de nombreux autres pays de l' est du nom, le nom de famille est donné en premier. C'est ainsi qu'il est adressé. Cependant, lorsque vous remplissez un formulaire médical, il peut être nécessaire que le nom de famille et le prénom soient différents champs - comment prendre un champ et le faire correspondre au champ approprié? L'autre exemple donné est si vous triez sur le nom de famille et que vous avez "José Carlos Fernando Almodóvar Soto", vous devez trier Almodóvarplutôt que Fernando.
@MichaelT, il est donc nécessaire de traiter le nom de famille séparément, alors donnez-lui son propre champ et espérons que la personne qui saisit les détails comprend la dénomination orientale.
Ian