Wie modelliere ich mehr als einen 'Nachnamen'?

11

Im spanischsprachigen Raum verwenden wir mehr als einen Nachnamen, wie zum Beispiel:

Vorname ↘ ↙ Nachname
                Pedro Arturo Rodríguez Loyola
        Zweiter Vorname ↗ ↖ (?)

Ich versuche, Daten für den Namen des Patienten zu modellieren. In unserem Land ist es wichtig, daher kann ich den vorletzten Namen nicht vernachlässigen, aber ich möchte eine Anwendung erstellen, die für andere Entwickler, insbesondere aus englischsprachigen Ländern, sinnvoll ist.


Ich habe eine ähnliche Frage zu English.SE erstellt . Sie enthält einige Erkenntnisse darüber, warum es wichtig ist, beide Werte beizubehalten.

Pablo Olmos de Aguilera C.
quelle
15
Gibt es den geringsten Grund, warum ein "Nachname" -Wert keine Leerzeichen enthalten darf? Möchten Sie in einigen Anwendungsfällen wirklich einen Nachnamen und in anderen alle Nachnamen verwenden? Wenn nicht, sehe ich das Problem nicht. Lassen Sie den "Nachnamen" genau so, wie der Benutzer ihn eingegeben hat, und Sie sind gut.
Kilian Foth
3
auf Niederländisch ist ein Typname "van de Iets" weit verbreitet. Lassen Sie einfach das Nachnamenfeld Leerzeichen enthalten
Ratschenfreak
2
Gibt es einen Grund, warum Sie nicht nur ein einziges nameFeld haben könnten ?
Asfallows
2
@asfallows: Wenn wir eine Patientenliste drucken, müssen wir sie nach dem Nachnamen sortieren. Wenn Sie beispielsweise "José Carlos Fernando Almodóvar Soto" heißen, wie soll ich dann im Voraus wissen, dass "Almodóvar" der erste Nachname ist?
Pablo Olmos de Aguilera C.
2
@FedericoPoloni: Jeder, der einen Patienten mit dem Nachnamen sucht, kennt wahrscheinlich den Nachnamen des Patienten.
Mooing Duck

Antworten:

19

F: Wie zählt ein DBA?

A: 0, 1, viele

Eine Person hat 1 oder mehr Vornamen und 1 oder mehrere Familiennamen und möglicherweise einen Titel. Diese Namen haben eine Reihenfolge. Es liegt an der Lokalisierung und Kultur, zu bestimmen, wie auf eine Person Bezug genommen werden soll.

ContactId
NamePart {"John", "Smith", ...}
NameType {Titel, gegeben, Familie, ???}
Bestellung {1, 2, 3, ...}

Für Pedro Arturo Rodríguez Loyola(Kontakt Nr. 1) hätten Sie vier Zeilen:

1 / Pedro / gegeben / 1
1 / Arturo / gegeben / 2
1 / Rodríguez / Familie / 3
1 / Loyola / Familie / 4

Auf diese Weise ist es nicht auf eine bestimmte Struktur beschränkt, macht aber dennoch Sinn für einen bestimmten Kontakt dort. Was machst du, wenn du jemanden mit 3 oder 4 Vornamen oder Familiennamen hast? oder ein Mädchenname?

Beachten Sie, dass ich die Reihenfolge gegenüber einer früheren Überarbeitung dieser Antwort geändert habe. Die Reihenfolge ist eine Reihenfolge über den gesamten Namen und nicht nur eine Reihenfolge innerhalb des Namenstyps, da in einigen Kulturen der Familienname an erster Stelle steht und Sie sich möglicherweise getrennt haben Titelstimmen "Sir John Smith II".

Zusätzliche Lektüre

Dave Jarvis
quelle
2
+1 Aber dieser Programmierer hat mit vielen Offshore-Teammitgliedern zusammengearbeitet, aber der längste Name, den ich je gesehen habe, ist immer noch "Pablo Diego José Francisco von Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso". Kindesmisshandlung oder nicht?
Elliott Frisch
@Darkhogg utnapistim hat es als ersten "Dies" -Link in seiner Antwort. Es ist einer dieser "endgültigen Führer".
Ich mag die Idee als Konzept, aber es ist nicht schwer, dem Benutzer zu präsentieren, dass sie den tatsächlichen Namen schreiben wird? Das einzige, was ich finden kann, sind so etwas wie "GMail" -Kontaktfelder, mit denen Sie Teile des Namens "hinzufügen" können. Haben Sie darüber nachgedacht, wie Sie ein solches Datenmodell tatsächlich verwenden können?
Pablo Olmos de Aguilera C.
1
@Peteris In medizinischen Anwendungen (in der ursprünglichen Frage wird häufig "Patient" erwähnt) müssen Sie einen strukturierten Namen für die Integration in andere Systeme weitergeben. Unstrukturierte Daten bedeuten, dass Sie erhebliche Schwierigkeiten haben, sich in andere Systeme zu integrieren, selbst wenn Sie beispielsweise einen Patienten von einem Krankenhaus in ein anderes übertragen oder Formularfelder für Versicherungsansprüche ausfüllen. Und damit das Problem, wie die Daten so strukturiert werden können, dass Sie sie auf alle erforderlichen Arten bearbeiten können.
1
@Ben Ein Freitextfeld funktioniert nicht gut, wenn die Anwendung eine Sortierung nach Familiennamen erfordert oder wenn versucht wird, eine Schnittstelle zu einem alten EDI-System herzustellen, um einen Patienten von einem Krankenwagen ins Krankenhaus zu bringen (oder umgekehrt) oder das Feld auszufüllen entsprechende Felder in verschiedenen Versicherungsfallformularen. Dies sind alles Schlüsselbereiche, in denen es einfacher ist, Daten zu haben, die jeden Teil des Namens kennzeichnen, als zu versuchen, die Bedeutung nachträglich zuzuweisen. Ein Freitextfeld ist nett, aber manchmal ist es einfach keine Option für die Arbeit mit anderen Systemen.
10

Dies kann helfen. Der Beitrag ist humorvoll, aber aufschlussreich.

[Vorname] [Nachname] ist keine universelle Regel für Namen. Es ist nur üblich, wo Sie leben. Wenn Sie hier Regeln festlegen, werden Sie früher oder später Personen haben, die Ihrem System nicht hinzugefügt werden können.

Stellen Sie grundsätzlich sicher, dass Sie so wenig Einschränkungen wie möglich auferlegen und Flexibilität zwischen dem tatsächlich gespeicherten Namen und zusätzlichen Namen zulassen.

Ich würde mit so etwas gehen:

  • Anzeigename (für konsistente Namen beim Anzeigen von Formularen / Daten): (sollte [first] [last] sein).
  • Andere Namen / vollständiger Name (zum Suchen, genaueren Abgleichen usw.). Erlauben Sie dem Benutzer hier, alles bis zu einer bestimmten Länge zu schreiben. Die Länge sollte größer sein, als Sie denken, sollte vernünftigerweise ausreichen - wenn Sie beispielsweise denken, dass 40 Zeichen ausreichen sollten, setzen Sie 500 :)).
  • Adressierung (Herr, Frau, Frau, Jr., Sr., -san, Zollwert (wie Tov.) Usw.).
  • interne ID (diese ID sollte jede Person in Ihrer Anwendung eindeutig identifizieren, um Namenskollisionen zu vermeiden).

Zum Beispiel ist mein Name in den meisten europäischen Sprachen aufgrund rumänisch-spezifischer Diakritika nicht richtig beschreibbar (wenn ich meinen Namen also außerhalb meines Heimatlandes schreibe, schreibe ich ihn technisch falsch - damit die Leute ihn lesen und aussprechen können).

Einige interessante Namensbeispiele und Links:

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
quelle
Eine weitere zu berücksichtigende Sache ist das Sortieren. Es ist oft wünschenswert, eine Liste von Personen nach ihrem Nachnamen (oder nur nach Namen oder Vorwort im Nachnamen usw.) sortieren zu können. Wenn die Anwendung dies tun muss, benötigen wir eine Möglichkeit, ihren "Sortiernamen" zu identifizieren.
BenM
Aber diese Idee gefällt mir insgesamt. Anstatt Namen basierend auf kulturellen Annahmen darzustellen, stellen wir sie basierend auf den Funktionen dar, die sie im System ausführen müssen.
BenM
Ich mag deine Antwort. Ich verstehe jedoch nicht, wie dies mir helfen kann, Namen zu setzen. Ich muss sie zum Beispiel sortieren, wir verwenden normalerweise den Nachnamen. Wie könnte es mir dabei helfen, sie in ein Feld / eine Spalte mit dem Namen "andere Namen" oder "Anzeigename" zu setzen? Ein großes Lob für den birmanischen Namen. Genial.
Pablo Olmos de Aguilera C.
@pablox, mein Punkt war, dass Sie den Namen einer Person konzeptionell nicht als Identität behandeln sollten, sondern als Metadaten für die Identität (und die ID sollte ein eindeutiger Code sein). Sie können diese Metadaten entsprechend den Anforderungen Ihrer Anwendung als organisiert betrachten. Sie können beispielsweise die Rolle des "Sortierens des Namens" für den zweiten Namen (falls vorhanden) in "der Gruppe der Namenstoken", die Rolle des "Anzeigenamens" als erstes Token und die Rolle des "Adressierungsnamens" auswählen. als "Dr. | Mr. | Ms. | etc" + "Anzeigename".
utnapistim
Das Sortieren von Namen wird normalerweise als "Telefonbuchsortierung" bezeichnet, bei der Sie verschiedene Anhänge zum Namen ignorieren und nach dem wichtigen Teil sortieren. ZB würde "van de Bogart" nach "Bogart" sortiert, nicht nach "van". Wie mit einem mehrteiligen hispanischen Namen umgegangen wird, hängt kulturell davon ab - wo wird er verwendet und wie passt er?
Phil Perry
0

Es ist keine komplizierte Sache ... oder mir fehlt etwas.

Haben Sie diese Felder: name(varchar), lastname(varchar).

Dann ein Formular zum Ausfüllen des vollständigen Namens, Beispiel: Jorge Patriciound des Nachnamens Pèrez Gonzáles.

Bei der Suche haben Sie viele Vergleichsoperatoren, zum Beispiel in MySQL, likedie Ihnen beim Suchen helfen.

Meist sind die zusammengesetzten Nachnamen immer in Ordnung. Pérez GonzálezMeistens sagt es seinen Nachnamen so und nicht in umgekehrter Reihenfolge.

Sie werden Ihre Datenbank auf andere Weise überarbeiten.

JorgeeFG
quelle
1
Was ist, wenn der Familienname zuerst angegeben wird? link
1
@ MichaelT, was ist damit? Explodieren Sie das Feld und suchen Sie in der Tabelle mit Namen und Nachnamen nach dem Auftreten des Werts. Angenommen, Sie haben ein Google-ähnliches Suchfeld, andernfalls könnten Sie einfach ein Formular wie "Name:" und "Nachname:" haben
JorgeeFG
0

Es gibt drei Arten von persönlichen Namen: Polynyme (Namen mit mehreren Komponenten), Mononyme (Namen mit nur einer Komponente, ex "Cher") und Piktonyme (Namen, die durch Bilder dargestellt werden, ex The Artist ).

Eine Person kann mehrere Namen haben und Rollen spielen , z. B. Legal Name und Preferred Name.

Ein Polynym besteht aus mehreren Komponenten, von denen Vor- und Nachname erforderlich sein sollten. Es gibt einige Arten von Nachnamen:

  1. Regelmäßige Nachnamen (Jones)
  2. Doppelte Familiennamen ("Vaughn Williams" oder "Louis-Dreyfus")
  3. Echte zusammengesetzte Nachnamen {Vorname: "Juan Pablo" Nachname: "Fernández de Calderón", sekundärer Nachname: "García-Iglesias"}

3 ist wichtig, da erwartet wird, dass er als Herr Fernández de Calderón angesprochen wird , nicht als Herr Fernández de Calderón García-Iglesias.

Haben Sie also grundsätzlich ein obligatorisches Feld für den Nachnamen und ein nullbares Feld für den sekundären Nachnamen.

user118920
quelle
0

Wie modellieren Sie die verschiedenen Komponenten des Namens einer Person? Das tust du nicht . Anstatt separate Felder für alle Komponenten des legalen Namens einer Person sowie deren bevorzugte Anrede, Bezeichnung, informellen Namen, Benutzernamen, Spitznamen und Handle zu modellieren , modellieren Sie nur das, was Sie interessiert.

Wahrscheinlich kümmert sich Ihr System nur um höchstens vier "Namen" für jemanden:

  1. Ein Anzeigename , mit dem sie erkennen können, dass sie am System angemeldet sind.
  2. Ein informeller Name, unter dem Sie sie bei einem Telefonanruf ansprechen würden.
  3. Ein formaler Name, mit dem Sie auf der Korrespondenz auf sie verweisen würden.
  4. Ein Sortiername, der # 2 so ausdrückt, dass er in einer Liste sortiert ist.

Viele Systeme verwenden einfach den formalen Namen einer Person für Nr. 1 und Nr. 2, wobei die einzigen Namen, die Sie interessieren, "eine Zeichenfolge, die den Namen des Benutzers darstellt" und "eine Zeichenfolge, die angibt, wie der erstere sortiert werden soll".

Definieren Sie aus Sicht der Datenmodellierung nur die Werte, die Sie tatsächlich benötigen würden. Wie Sie die Speicherung dieser Werte am besten optimieren können, ist ein Implementierungsdetail, bei dem Sie nur dann Kopfschmerzen verursachen, wenn Sie zu viel optimieren. (Sicher, Sie könnten nur einen Vor- und Nachnamen speichern, aber was würden Sie für jemanden tun, der nur einen einzigen Namen hat?)

DougM
quelle
-1

Betrachten wir dies auf eine andere Weise.

Ihr System muss eine Verbindung zu anderen Systemen herstellen. Es spielt keine Rolle, wie flexibel Sie sind, wenn dies nicht der Fall ist. Was machen die Systeme, mit denen Sie Daten übertragen müssen?

Wenn ich meinen Arzt anrufe, um einen Termin zu vereinbaren, fragen sie mich nach meinem Geburtsdatum. Das System zeigt ihnen dann eine Liste der übereinstimmenden Personen an. Dann fragen sie mich nach meinem Namen und schließlich nach meiner Adresse, um zu bestätigen, dass sie ausgewählt haben die richtige Person.

Der Arzt muss den Namen kennen, unter dem er mich anspricht, wenn er mit mir spricht. Sie müssen auch den Namen kennen, um einen Brief schreiben zu können, wenn sie mir schreiben.

Daher nicht nur ein einziges Textfeld, das Leerzeichen zulässt. Es gibt keinen Grund, den Vor- oder Nachnamen zu trennen, es sei denn, Sie verarbeiten sie auf die gleiche Weise.

Ian
quelle
3
Sie füllen ein Formular für einen Versicherungsanspruch aus. Es hat "Nachname". Die Person kommt aus Japan. Während Sie die transliterierte Version haben, müssen Sie den richtigen Familiennamen in das Feld eingeben. Welches Wort ist das?
@ MichaelT, Was soll ich sagen, dass jeder einen Familiennamen hat?
Ian
2
Wenn Sie einen Namen von einer Person aus Japan (oder vielen anderen Ländern mit östlichen Namen) erhalten, wird der Familienname zuerst angegeben. So wird er angesprochen. Beim Ausfüllen eines medizinischen Formulars kann es jedoch erforderlich sein, dass der Familienname und der Vorname unterschiedlich sind Felder - Wie nehmen Sie das eine Feld und stimmen es mit dem richtigen Feld überein? Das andere Beispiel lautet: Wenn Sie nach dem Familiennamen sortieren und "José Carlos Fernando Almodóvar Soto" angeben, müssen Sie Almodóvareher sortieren als Fernando.
@MichaelT, daher muss der Familienname separat verarbeitet werden. Geben Sie ihm also ein eigenes Feld und hoffen Sie, dass die Person, die die Details eingibt, die östliche Benennung versteht.
Ian