Modellazione di nome e cognome separatamente


32

Quali argomenti qualcuno dovrebbe prendere in considerazione quando si progetta un nuovo sistema e deve memorizzare il nome di una persona come un campo o separatamente come nome / cognome?

Pro per singolo campo:

  • Interfaccia utente più semplice
  • Nessuna ambiguità quando si cerca di inserire il nome di una persona, che ha un nome molto lungo (spesso non evidente quale sia il cognome / nome ..)
  • Minore complessità nella gestione dei titoli (ad esempio, non è necessario inserire un campo separato per inserire "MD" o "Dr.")

Pro per il campo diviso:

  • È possibile la comunicazione personalizzata "Dear Mr X" o "Dear Julie"
  • Se un servizio Web consumato necessita del nome / cognome separatamente, può essere fornito facilmente.
  • Scelta migliore per qualsiasi settore con severi requisiti di identificazione (ad es. Medici, governativi, ecc.)
  • Scelta più sicura, poiché puoi sempre tornare all'alternativa a campo singolo

Vedi qualche argomento aggiuntivo che non è elencato sopra?

Aggiornamento: la domanda è: cosa aggiuntiva (= non elencato nella questione) argomenti possono essere elencati per ogni soluzione. Penso che dare opinioni invece di possibili pro e contro spinga la discussione nel modo sbagliato. Ogni sviluppatore deve prendere la sua decisione su questo problema, lo scopo di questa domanda è quello di mettere insieme un elenco di argomenti non banali che possono essere valutati se necessario.


11
Cosa stai cercando di fare con quei nomi? Hai dei requisiti legali? Esistono conseguenze diverse dalla visualizzazione per il nome dell'utente?
Darkhogg

9
La distinzione nome / cognome non supporta le persone con un solo nome come "Cher".
Jacques B

77
Ti consiglio di leggere il seguente articolo: kalzumeus.com/2010/06/17/… è un vero colpo d'occhio quando si pensa ai nomi.
Pieter B

10
Potresti considerare di porre questa domanda sull'esperienza utente , la comunità potrebbe essere in grado di offrire una prospettiva diversa su questo problema essenzialmente dell'interfaccia utente.
11684

9
@PieterB Alcuni dei punti in quell'articolo sono discutibili e talvolta devi fare ipotesi per fare le cose. Quell'articolo non fornisce consigli utili su come gestire i nomi. Se un nome contiene caratteri non unicode, cosa fai, consenti all'utente di caricare un'immagine? E se ci fossero aspetti non visivi: consentire un video con audio? Cosa succede se un nome è performance art e può essere eseguito solo a mezzanotte a Hong Kong? Ad un certo punto devi diventare reale e continuare a risolvere i problemi invece di cimentarti in casi teorici angolari che la tua base di utenti non incontrerà mai.
Ripristina Monica il

Risposte:


50

Nome e cognome non sono concetti utili. I nomi funzionano in modo diverso nei diversi paesi. Nella maggior parte dei paesi asiatici, il nome della famiglia viene scritto per primo, ma è ancora utilizzato per l'ordinamento, quindi è possibile inserirlo nel nome e l'ordinamento sarà errato o nel cognome e la visualizzazione sarà. E poi ci sono paesi come l'Islanda dove non usano affatto i cognomi, ma invece il nome del padre. Quindi ordinano semplicemente per nome.

I termini "nome" e "cognome" (o "cognome") sono migliori in questo senso, ma li eviterei comunque a meno che non siano assolutamente necessari (cioè documenti ufficiali come i passaporti li hanno, quindi allora ne hai bisogno), perché rendono le cose più complicate.

  • È possibile la comunicazione personalizzata "Dear Mr X" o "Dear Julie"

Tranne il fatto che non hai idea di come chiamare una determinata persona con il suo nome o cognome o cosa. E non farmi iniziare con le lingue che hanno accusativo: non puoi derivare accusativo dal nominativo in generale. No, è meglio se chiedi semplicemente all'utente come chiamarli.

  • Se un servizio Web consumato necessita del nome / cognome separatamente, può essere fornito facilmente.

Se . Se dipendi da un altro servizio, sei bloccato per le loro scelte sbagliate. Non è un vantaggio per i tuoi progetti.

  • Scelta migliore per qualsiasi settore con severi requisiti di identificazione (ad es. Medici, governativi, ecc.)

No, è una scelta sbagliata per questi. I documenti ufficiali generalmente usano i termini "nome" e "cognome" (o "cognome"), che sono meno ambigui.

  • Scelta più sicura, poiché puoi sempre tornare all'alternativa a campo singolo

In realtà, a causa dell'ambiguità con i nomi asiatici, non è così chiaro che puoi.


2
Se l'app viene utilizzata in diverse parti del mondo, le etichette dei campi dovrebbero essere localizzate insieme al modo in cui vengono combinate / utilizzate.
JeffO

5
@JeffO, il vero problema è che in questi giorni è più probabile che tu abbia persone di diversi paesi nello stesso sistema, quindi devi creare un sistema e trovare un modo per inserire nomi di culture diverse in esso in modo che funzioni ragionevolmente in modo coerente . Non entrare in quella tana di coniglio a meno che tu non ne abbia davvero bisogno.
Jan Hudec,

4
@IstvanDevai c'è stato un caso legale in California in cui un contratto è stato dichiarato nullo perché le leggi sul credito richiedevano il "cognome". La persona aveva un doppio cognome ispanico, ma quando gli veniva chiesto il cognome, veniva dato il primo cognome (paterno), il che è comune. L'altra parte ha perso il caso di raccolta perché il nome nel contratto non era il suo "cognome", cioè quello alla fine del suo nome completo. Un esempio di come il primo / ultimo invita alla confusione e non è del tutto sinonimo di nomi / cognomi.

6
@Casey - i nomi secondari dovrebbero essere inclusi nel campo dei nomi, perché è quello che sono: nomi secondari. Se avessi un dollaro per ogni volta che vedo una persona ispanica che non ha un secondo nome, ma un doppio cognome ottiene il suo primo (e più importante) cognome inserito in un campo di secondo nome, sarei già in pensione. Se vuoi sapere come chiamare una persona, disponi di un campo per quello, separato dal nome. Quindi Bartolomeo Frank Edward Smith Wellington può dirti di chiamarli Bart. Possiamo parlare inglese, ma qui ci sono persone provenienti da luoghi non di lingua inglese, e anche i loro nomi vengono inseriti.

4
-1. Sebbene la risposta stessa non sia totalmente sbagliata, non ha molto senso per la domanda in corso. L'OP cerca altri argomenti per utilizzare uno o due campi per i nomi umani. Che si tratti di "primo / ultimo" o "dato / sur" non è il punto focale, sono solo le etichette che l'OP aveva in mente. Tutti gli altri punti mi sembrano altamente motivati ​​e, nella mia esperienza personale con la creazione e la distribuzione di applicazioni per grandi clienti, i presupposti dell'OP sono del tutto normali e accadono in questo modo. Questa risposta cerca solo di arginare i parametri della domanda.
AnoE

31

L'unico argomento che conta è quali sono i requisiti del tuo sistema?

Hai bisogno di occuparti di una sola cultura? In tal caso, conformarsi a quella cultura. Altrimenti, piano per l'internazionalizzazione (come altri hanno sottolineato).

È necessario ottenere dati per gestire moduli governativi, assistenza sanitaria o altri requisiti legali / di sistema? Segui qualunque cosa dettino. Se ciò significa nome e cognome, fallo. Se significa qualcosa di diverso, fallo.

Hai un requisito per un'API con nome e cognome (o è ragionevolmente probabile, abbastanza da giustificare l'ignoranza di YAGNI)? Fai ciò che ha senso lì.

Se hai bisogno di comunicazioni personalizzate, è ragionevole chiedere a qualcuno il suo nome preferito e memorizzarlo?

I requisiti del tuo sistema dovrebbero determinare cosa fai. Fai quello che devi e YAGNI il resto.


7
Non esiste più una "cultura". Anche le comunità più piccole hanno norme e lingue culturali miste.
BobDalgleish,

7
@BobDalgleish Vero, ma a volte non importa. A volte il costo di supportare più culture fa sì che gli uomini d'affari dicano semplicemente di no.
Becuzz

9
@BobDalgleish Presumibilmente, quale cultura è dominante nel mercato per il quale si sta sviluppando l'applicazione? Non penso che questo sia in realtà così misterioso o raro.
Casey,

3
@BobDalgleish - la "cultura" è irrilevante. Nessuno ti chiede della tua cultura quando ti vengono rilasciati documenti. Se avessi bisogno di supportare solo la Serbia (dove mi trovo al momento), includerei nome e cognome in quanto sono definiti su ogni documento rilasciato in questo paese, e basta. Non importa quale sia la tua cultura. Il passaporto, la patente di guida ecc. Avranno nome e cognome, punto.
Assapora Ždralo il

2
@icirellik Sbagliato in che modo? Queste cose (limiti di lunghezza, ecc.) Sono sbagliate se stai cercando di modellare perfettamente l'universo? Certamente. Ma non mi è mai stato chiesto di modellare perfettamente l'universo e ogni possibile modo in cui qualcuno potrebbe voler scegliere un nome. Conto i nomi Klingon? No. Ma perché no? Qualcuno potrebbe farlo un giorno (onestamente non mi sorprenderebbe se qualcuno lo facesse ora). Ma arriva un punto in cui sai solo che ci saranno alcune cose che semplicemente non funzioneranno con il tuo modello. E il tempo di sviluppo extra per gestire ogni possibilità non ne vale la pena. (cont ...)
Becuzz

5

Se hai più di un modo per visualizzare e / o utilizzare i nomi, probabilmente avrai bisogno di campi separati. Insieme all'immissione dei dati, è possibile fornire un feedback per mostrare all'utente come verrà utilizzato. Il modo in cui li combini potrebbe portare alla conversione in un singolo campo in futuro.

Hanno alcune etichette che mostrano: Saluto o Nome visualizzato: Nome + Cognome Organizzazione / ordinamento: Cognome, Nome

Quando non sei sicuro di come verrà utilizzato in futuro, inizia con i nomi divisi e quindi puoi combinarli in un unico campo quando ti rendi conto che è tutto ciò di cui hai veramente bisogno. Non è difficile scrivere un algoritmo per dividere un singolo campo del nome in nome e cognome, ma commetterai un errore su alcuni e alla gente davvero non piacciono gli errori con i loro nomi. Con i campi divisi, gli utenti possono regolare il modo in cui immettono il loro nome quando vedono come viene utilizzato. Combinarli in un campo permanente a nome singolo è meno rischioso.


5

Sono d'accordo con molto di ciò che ha detto @JanHudec, anche se mi piacerebbe approfondire un po 'quello:

  • Devi sapere quali sono i tuoi reali requisiti, ma è più facile combinare le informazioni piuttosto che dividerle una volta che sono combinate di nuovo.
  • L'ordinamento sarà sempre una sfida, poiché le regole possono differire tra locali e culture.
  • Molte culture non corrispondono alle tue, il che porta a cattive ipotesi. (Questo è il punto più grande di Jan)

La terminologia è importante

Termini come dato nome e cognome o il nome di famiglia hanno un significato semantico, e il database deve sempre rispecchiare la semantica dei dati. Termini come nome e cognome hanno un significato posizionale, generalmente basato su idee inglesi e americane su come funzionano i nomi. Utilizzare la terminologia corretta per la semantica dei dati.

Quanto lontano devi scomporlo?

Esistono concetti di titolo (Mr. Dr. Mrs. ecc.) O ordinali (Jr., Sr., III, ecc.) E persino certificazioni (PhD, MS, PCAM, ecc.) Che possono essere importanti a seconda del contesto e scopo.

Molti locali hanno il concetto di più nomi di famiglia (paterni e materni), e alcuni non ne hanno. Quando si compilano i moduli, a volte le persone devono fare delle scelte difficili su quale nome usare, ad esempio usando il cognome paterno per il "cognome" in una forma americana, o trovando un cognome basato sul nome del padre (Janson ).

Mentre in America è comune avere uno o più secondi nomi, viene spesso ignorato al di fuori della tua famiglia.

Ordinamento

Aiuta ad avere un campo dedicato per il nome dell'ordinamento. In questo modo puoi chiarire le regole quando crei il record. Assicura inoltre che i nomi siano ordinati nell'ordine corretto oltre i confini internazionali.

Pratiche comuni

I tuoi reali requisiti dettano quanto devi essere corretto riguardo ai nomi. Se stai creando un sito web governativo o bancario, allora hai più requisiti per la memorizzazione e la gestione dei nomi di qualcosa di informale come Facebook.

Linee guida informali

  • Avere un campo che descriva come l'utente vuole essere conosciuto
  • Ordina e visualizza usa quel nome

Linee guida semi formali

  • Avere un campo per un nickname o come l'utente vuole essere indirizzato
  • Hanno due campi, uno per nome e uno per cognome (il cognome dovrebbe essere facoltativo)
  • Calcola un campo di ordinamento in base alla locale e alla combinazione data / cognome
  • Utilizzare il soprannome per rivolgersi direttamente all'utente
  • Usa il nome formale per elencare le persone

Linee guida formali

  • Questi sono dettati da politiche e procedure esistenti per l'entità che si sta supportando
  • È necessario un numero di campi pari al numero massimo di parti del nome che verranno supportate, denominate semanticamente per quello che sono.
  • Includi un campo di ordinamento che gestisca l'ordinamento come faresti nel caso semi-formale
  • Anche la visualizzazione è in genere dettata da politiche e procedure esistenti. Devi familiarizzare con loro.

Il downvoter si preoccuperebbe di elaborare? Forse mi sono perso qualcosa?
Berin Loritsch,

Questo mi sembra completo e il consiglio più pragmatico dato qui.
Jesse Clark,

4

A parte quanto ha sottolineato @JanHudec e con cui concordo, vale anche la pena notare che in molti paesi le persone hanno più di un cognome, quindi il campo del cognome potrebbe essere irrilevante. Ad esempio, in Spagna le persone hanno due cognomi e usano solo uno o entrambi a seconda della situazione.

Inoltre, non dovresti personalizzare le comunicazioni in base ai tuoi presupposti, poiché in alcune culture potresti sembrare scortese quando chiami le persone con il loro cognome e, nel caso di altre, potrebbe essere il contrario.

Inoltre, alcune culture pongono l'accento su forme come "Mrs" vs "Ms", e possono anche combinare questa parola con il nome o il cognome a seconda di un caso particolare.

Quindi propenderei per una soluzione in cui hai un singolo campo nome e forse campi aggiuntivi che l'utente riempie che suggeriscono come rivolgersi all'utente - qualcosa di simile a quello che fanno molte compagnie aeree quando acquisti un biglietto online. Questo potrebbe anche risolvere il problema di come dividere i nomi se ne hai bisogno per un servizio web esterno che hai citato.


1
Presumibilmente se si sta effettivamente localizzando è possibile utilizzare un modello diverso per lingue diverse
Casey

4

Per aggiungere ancora di più a ciò che @JanHudec e @KjMag hanno sottolineato, anche nelle culture / lingue molto vicine all'inglese questo diventa un problema. Prendi il tedesco per esempio. Hai il concetto di Vornamen, Nomi, Nachnamen, Cognome e Rufname, il nome che ti viene chiamato. Prendiamo ad esempio mio padre, ha 3 nomi, sul suo certificato di nascita sono elencati nell'ordine Christoph Stephan Andreas. E ha un cognome. Come pensi che sia il nome da cui viene chiamato?

La risposta corretta: Andreas. Questo è il suo nome Rufname, in America lo pone come il suo primo nome per adattarsi al modello americano. Quindi potresti presumere che in Germania l'ultimo dei tuoi nomi sia quello che ti chiami ma poi hai mio fratello: Christoph Sebastian Herbert Maria. (Ora ho dato via siamo bavaresi) O mia sorella Christine Gabriele. Come pensi che siano i nomi che vengono chiamati? Sebastian e Christine rispettivamente.

Terrei le risposte che dicono un campo per un nome completo. E aggiungerei a questo: forse aggiungere un altro campo per un cognome / cognome e porre la domanda: con quale nome verrebbe ordinato in un elenco? E poi un campo finale per: come vuoi essere indirizzato?


1
"Cognome" è solo un altro nome per "cognome", non letteralmente la parola che appare per ultima nella sequenza. Il cognome di Nakayama Taro è "Nakayama".
Casey,

2
Per aggiungere un altro caso: mio nonno si chiamava "Antoon Leendert van Ingen Schenau" => nome (i) dato (i): "Antoon Leendert"; chiamato: "Leen"; cognome: "van Ingen Schenau" da ordinare in "Ingen". Né il nome chiamante, né l'ordinamento corretto possono essere facilmente derivati ​​da una voce nome / cognome.
Bart van Ingen Schenau,

1
@ Casey secondo chi? in Giappone è "nome superiore", ad esempio, non "cognome".
eis,

1
@eis In Giappone è 名字. Ma qui nel mondo di lingua inglese, "cognome" è sinonimo di "cognome" e non letteralmente "l'ultima parola nella sequenza di nomi di qualcuno".
Casey,

1
@eis non sono sicuro di ciò che vuoi sottolineare. Gli utenti non conosceranno la differenza se si chiama il campo del database last_name anziché cognome; l'uno è solo un sinonimo dell'altro. Se la tua preoccupazione è presentare il software a persone che non parlano inglese, è irrilevante perché sia ​​"cognome" che "cognome" sono termini inglesi e dovresti usare il termine in qualunque lingua tu intenda localizzare la pagina. Se la preoccupazione è che vuoi che le persone che non conoscono l'inglese siano in grado di usare la pagina inglese, beh, questo sembra un modo piuttosto spensierato per affrontare il problema reale.
Casey,

-2

Se si sta cercando un'applicazione globale, probabilmente si modellerebbe il nome di una persona come una matrice di stringhe. Ad esempio, considera il nome del presidente nel film Idiocracy:

  • Dwayne Elzondo Mountain Dew Herbert Camacho

Questo è il suo nome completo. Il nome contiene 6 elementi nell'array. Per la cultura americana, il nome è il primo elemento dell'array (Dwayne) e il cognome è l'ultimo elemento dell'array (Camacho). Ma questo non è sempre il caso.

Si potrebbero applicare regole specifiche per la cultura per determinare il "nome" se il nome è in realtà l'ultimo elemento e così via, a seconda di come funzionano i nomi nelle diverse culture / località.

Inoltre, nel caso degli Stati Uniti, abbiamo casi in cui l'ultimo elemento non è il cognome come:

  • Dwayne Elzondo Mountain Dew Herbert Camacho Jr.

Quindi, forse un campo di suffisso nome o uno dovrebbe analizzare l'ultimo elemento alla ricerca di suffissi noti basati sulla cultura per ottenere il cognome corretto.

Quindi, è sempre meglio memorizzare il nome in un elemento (il nome completo) e quindi applicare una routine di "standardizzazione / risanamento" contro di esso per analizzare gli elementi specifici secondo necessità. Una strategia simile esiste per gli indirizzi. Di solito vengono raccolti come una stringa e quindi inviati a un servizio per analizzare le parti.


3
Un singolo campo e quindi "l'analisi" è una pessima idea. Considera una persona il cui cognome è "Senior": come lo analizzi? Che dire di "de la Jolla" come cognome?
BobDalgleish,

Ho menzionato l'analisi o un campo Suffisso nome. Se è necessaria una soluzione generica, è necessario un parser di nomi in modo da poter gestire ciascun caso come "Senior" e "de la Jolla". Si potrebbe usare l'IA e addestrarlo come riconoscere i nomi. Scommetto che se uno gli fornisse un set di dati abbastanza grande, sarebbe in grado di riconoscere il "de la Jollas" del mondo. Ma questa è una possibile soluzione. Certamente è anche possibile raccogliere parti discrete, ma questo ha i suoi lati negativi.
Jon Raynor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.