Come modellare più di un "cognome"?


11

Nei paesi di lingua spagnola utilizziamo più di un cognome, come:

Nome ↘ ↙ Cognome
                Pedro Arturo Rodríguez Loyola
        Secondo nome ↗ ↖ (?)

Sto cercando di modellare i dati per il nome del paziente. Nel nostro paese è importante, quindi non posso trascurare il secondo cognome, ma vorrei creare un'applicazione che possa avere senso per altri sviluppatori, specialmente da paesi di lingua inglese.


Ho creato una domanda simile su English.SE , ha alcune intuizioni sul perché è importante mantenere entrambi i valori.


15
C'è la minima ragione per cui un valore "cognome" non dovrebbe contenere spazi? Vuoi davvero usare un cognome in alcuni casi d'uso e tutti i cognomi in altri? In caso contrario, non riesco a vedere il problema. Lascia il "cognome" esattamente come l'utente lo ha inserito e sei bravo.
Kilian Foth,

3
in olandese un nome di tipo "van de Iets" è abbastanza comune. lascia che il campo del cognome contenga spazi
maniaco del cricchetto,

2
C'è un motivo per cui non potresti avere un solo namecampo?
Asfallows

2
@asfallows: perché se stampiamo un elenco di pazienti dobbiamo ordinarli in base al cognome. Ad esempio, se il tuo nome è "José Carlos Fernando Almodóvar Soto", come posso sapere in anticipo che "Almodóvar" è il primo cognome?
Pablo Olmos de Aguilera C.

2
@FedericoPoloni: Chi cerca un paziente con il cognome probabilmente conosce il cognome del paziente.
Mooing Duck,

Risposte:


19

D: Come conta un DBA?

A: 0, 1, molti

Una persona ha 1 o più nomi e 1 o più cognomi, e possibilmente un titolo. Questi nomi hanno un ordine per loro. Spetta alla localizzazione e alla cultura determinare come fare riferimento a un individuo.

ContactId
NamePart {"John", "Smith", ...}
NameType {titolo, dato, famiglia, ???}
Ordine {1, 2, 3, ...}

Per Pedro Arturo Rodríguez Loyola(contatto n. 1), avresti quattro righe:

1 / Pedro / dato / 1
1 / Arturo / dato / 2
1 / Rodríguez / famiglia / 3
1 / Loyola / famiglia / 4

In questo modo non è limitato a una determinata struttura, ma ha ancora senso per un determinato contatto. Cosa fai quando hai qualcuno con 3 o 4 nomi o cognomi? o un nome da nubile?

Nota che ho cambiato l'ordine da una precedente revisione di questa risposta - l'ordine è un ordine sull'intero nome piuttosto che solo un ordine all'interno del tipo di nome perché in alcune culture, il nome della famiglia viene prima, potresti aver diviso parti del titolo "Sir John Smith II".

Letture aggiuntive


2
+1 Ma questo programmatore ha lavorato con molti membri del team offshore, ma il nome più lungo che abbia mai visto è ancora "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso". Abuso di minori o no?
Elliott Frisch,

@Darkhogg utnapistim lo ha come primo link "Questo" nella sua risposta. È una di quelle "guide definitive".

Mi piace l'idea come concetto, ma non è difficile presentare all'utente che scriverà il vero nome? L'unica cosa che mi viene in mente è qualcosa come i campi di contatto "GMail", che ti permettono di "aggiungere" parti del nome. Hai pensato a come puoi effettivamente utilizzare quel tipo di modello di dati?
Pablo Olmos de Aguilera C.,

1
@Peteris spesso in applicazioni mediche (la domanda originale menziona 'paziente') è necessario passare un nome strutturato per l'integrazione con altri sistemi. Avere dati non strutturati significa che avrai notevoli difficoltà a integrarsi con altri sistemi, anche cose come il trasferimento di un paziente da un ospedale a un altro o la compilazione di campi modulo per richieste di risarcimento assicurativo. E quindi il problema su come strutturare i dati in un modo che ti consenta di manipolarli in tutti i modi richiesti.

1
@Ben un campo di testo libero non funziona bene quando l'applicazione richiede l'ordinamento per nome della famiglia o quando si tenta di interfacciarsi con un vecchio sistema EDI per il trasferimento di un paziente da un'ambulanza all'ospedale (o viceversa) o la compilazione del campi appropriati in vari moduli di richiesta assicurativa. Queste sono tutte aree chiave in cui è più facile avere un po 'di dati che designano ogni parte del nome piuttosto che cercare di assegnare il significato dopo il fatto. Un campo di testo libero è carino, ma a volte non è un'opzione per lavorare con altri sistemi.

10

Questo può aiutare. Il post è divertente, ma perspicace.

[Nome] [Cognome] non è una regola universale per i nomi. È comune dove vivi. Se imponi delle regole in questo, prima o poi avrai persone che non possono essere aggiunte al tuo sistema.

Fondamentalmente, assicurati di imporre il minor numero di restrizioni possibile e di consentire la flessibilità tra il nome effettivo memorizzato e quelli extra.

Vorrei andare con qualcosa del genere:

  • Nome visualizzato (per nomi coerenti quando si mostrano moduli / dati): (dovrebbe essere [primo] [ultimo]).
  • Altri nomi / nome completo (per la ricerca, una corrispondenza più precisa, ecc.). Qui, consenti all'utente di scrivere qualsiasi cosa, fino a una determinata lunghezza; la lunghezza dovrebbe essere più di quanto pensi dovrebbe essere ragionevolmente sufficiente - ad esempio se pensi che 40 caratteri dovrebbero essere sufficienti, metti 500 :)).
  • Indirizzamento (Mr, Mrs, Ms, Jr, Sr, -san, valore personalizzato (come Tov.) Ecc.).
  • ID interno (questo ID dovrebbe identificare in modo univoco ogni persona all'interno dell'applicazione, evitando collisioni di nomi).

Ad esempio, il mio nome non è correttamente scrivibile nella maggior parte delle lingue europee, a causa dei segni diacritici specifici del rumeno (quindi, ogni volta che scrivo il mio nome fuori dal mio paese di origine, tecnicamente lo scrivo in modo errato, in modo che le persone possano leggerlo e pronunciarlo).

Alcuni esempi e collegamenti di nomi interessanti:

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


Un'altra cosa da considerare è l'ordinamento. È spesso desiderabile poter ordinare un elenco di persone in base al loro cognome (o solo nome, o prima parola nel cognome, ecc.). Se l'applicazione deve farlo, allora abbiamo bisogno di un modo per identificare il loro "nome di ordinamento".
BenM,

Ma questa idea mi piace nel complesso. Invece di rappresentare nomi basati su presupposti culturali, li rappresentiamo in base alle funzioni che devono svolgere nel sistema.
BenM,

Mi piace la tua risposta. Non capisco però come questo possa aiutarmi a mettere i nomi. Ho bisogno di ordinarli per esempio, normalmente usiamo il cognome. In che modo inserirli in un campo / colonna chiamato "altri nomi" o "nome visualizzato" potrebbe aiutarmi ad esempio? Complimenti per il nome birmano, però. Eccezionale.
Pablo Olmos de Aguilera C.,

@pablox, il mio punto era che concettualmente, non dovresti trattare il nome di una persona come un'identità, ma come metadati per l'identità (e l'id dovrebbe essere un codice univoco). Puoi considerare quei metadati come organizzati, in base alle esigenze della tua applicazione. Ad esempio, è possibile scegliere il ruolo di "nome ordinamento" in base al secondo nome (se presente) nel "gruppo di token nome", il ruolo di "nome visualizzato" come primo token e il ruolo di "indirizzo nome" come "Dr. | Mr. | Ms. | etc" + "nome visualizzato".
utnapistim,

L'ordinamento dei nomi in genere sarà "ordinamento dell'elenco telefonico", in cui si ignorano varie appendici al nome e si ordinano nella parte importante. Ad esempio, "van de Bogart" verrebbe ordinato su "Bogart", non su "van". Il modo in cui viene gestito un nome ispanico in più parti dipenderà culturalmente - dove viene utilizzato e in che modo si adatta.
Phil Perry,

0

Non è una cosa complicata ..... o mi manca qualcosa.

Hanno questi campi: name(varchar), lastname(varchar).

Quindi un modulo per riempire il nome completo, esempio: Jorge Patricioe il cognome Pèrez Gonzáles.

Nella ricerca, hai molti operatori di confronto, ad esempio in MySQL, likeche ti aiuteranno a cercare.

Principalmente i cognomi composti sono sempre in ordine. Pérez Gonzálezper lo più dice il suo cognome in quel modo, e non in ordine inverso.

Progetterai in modo eccessivo il tuo database in altro modo.


1
Cosa succede se il nome della famiglia viene dato per primo? link

1
@MichaelT, che ne pensi? Esplodi il campo e cerca nella tabella nome e cognome l'eventuale occorrenza del valore. Supponendo sempre che tu abbia un campo di ricerca simile a Google, in alternativa potresti avere un modulo come "Nome:" e "Cognome:"
JorgeeFG

0

Esistono tre tipi di nomi personali: polin palestra (nomi con più componenti), mononimi (nomi con un solo componente, ex "Cher") e pictonimi (nomi rappresentati da immagini, ex The Artist ).

Una persona può avere più nomi, ruoli , ad esempio Nome legale e Nome preferito.

Un polynym ha diversi componenti, di cui dovrebbero essere richiesti nome e cognome. Esistono alcuni tipi di cognomi:

  1. Cognomi regolari (Jones)
  2. Cognomi a doppia canna ("Vaughn Williams" o "Louis-Dreyfus")
  3. Veri cognomi composti {dato Nome: cognome "Juan Pablo": "Fernández de Calderón", secondario Cognome: "García-Iglesias"}

3 è importante perché dovrebbe essere considerato Fernández de Calderón , non Fernández de Calderón García-Iglesias.

Quindi, fondamentalmente, hanno un campo cognome obbligatorio e un campo Cognome secondario annullabile.


0

Come modellate i vari componenti del nome di qualcuno? Tu no . Invece di modellare campi separati per tutti i componenti del nome legale di qualcuno, più il loro saluto preferito, la denominazione, il nome informale, il nome utente, il nickname e la gestione, modellano solo ciò che ti interessa.

Le probabilità sono che il tuo sistema si preoccupi solo di al massimo quattro "nomi" per qualcuno:

  1. Un nome visualizzato che consente loro di sapere che sono connessi al sistema.
  2. Un nome informale con il quale li indirizzeresti durante una telefonata.
  3. Un nome formale con il quale faresti riferimento a loro in corrispondenza.
  4. Un nome di ordinamento che esprime # 2 in un modo che sarebbe ordinato in un elenco.

Molti sistemi userebbero semplicemente il nome formale di qualcuno per # 1 e # 2, lasciando gli unici nomi che ti interessano come "una stringa che rappresenta il nome dell'utente" e "una stringa che rappresenta come ordinare il primo".

Dal punto di vista della modellazione dei dati, definisci solo i valori di cui avresti effettivamente bisogno. Il modo migliore per ottimizzare l'archiviazione di questi valori è un dettaglio dell'implementazione, uno che causerà mal di testa solo se si ottimizza eccessivamente. (Certo, "potresti" semplicemente memorizzare un nome e un cognome, ma cosa faresti per qualcuno che ha un solo nome?)


-1

Consideriamo questo in un altro modo.

Il tuo sistema deve connettersi ad altri sistemi, non importa quanto tu sia flessibile se non lo sono. Cosa fanno i sistemi con cui trasferire i dati?

Quando telefono al mio dottore per un appuntamento, mi chiedono la mia data di nascita, i sistemi quindi mostrano loro un elenco di persone corrispondenti, quindi mi chiedono il mio nome, infine il mio indirizzo per confermare che hanno selezionato la persona giusta.

Il medico ha bisogno di sapere il nome a cui rivolgersi quando mi parla; hanno anche bisogno di sapere il nome da mettere su una lettera se mi scrivono.

Pertanto, non solo un singolo campo di testo che consente spazi. Non vi è alcun motivo per separare il primo dal cognome, a meno che non vengano elaborati allo stesso modo.


3
Stai compilando un modulo per un reclamo di assicurazione. Ha "Cognome". La persona viene dal Giappone. Mentre hai la versione traslitterata, devi inserire il nome della famiglia corretta nel campo. Che parola è?

@MichaelT, cosa dire che ognuno ha un cognome?
Ian,

2
Ottenere un nome da una persona dal Giappone (o da molti altri paesi della denominazione orientale il nome della famiglia viene dato per primo. Ecco come viene indirizzato. Tuttavia, quando si compila un modulo medico si può richiedere che il nome di famiglia e il nome siano diversi campi: come si prende un campo e si abbina al campo corretto? L'altro esempio è se si sta ordinando il nome della famiglia e si ottiene "José Carlos Fernando Almodóvar Soto" che è necessario ordinare Almodóvarpiuttosto che Fernando.

@MichaelT, quindi è necessario elaborare il nome della famiglia separatamente, quindi assegnagli il suo campo e spera che la persona che digita nei dettagli comprenda la denominazione orientale.
Ian,
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.