Qual è un limite di lunghezza ragionevole nei campi "Nome" della persona?


138

Ho un semplice modulo web che consentirà agli utenti non autenticati di inserire le loro informazioni, incluso il nome. Ho dato al campo del nome un limite di 50 caratteri per coincidere con la mia tabella di database in cui il campo è varchar (50), ma poi ho iniziato a chiedermi.

È più appropriato usare qualcosa come il tipo di colonna di testo o devo limitare la lunghezza del nome a qualcosa di ragionevole?

Sto usando SQL Server 2005, nel caso in cui ciò che conta nella tua risposta.

EDIT: non ho visto questa domanda più ampia riguardo a problemi simili.


1
Controlla questa domanda correlata per molte discussioni sull'argomento.
Chris Marasti-Georg,

2
Qualcosa da notare, in questa era di globalizzazione varchar NON è di solito il tipo di dati giusto, è probabile che dovresti usare nvarchar.
Tao,

@Tao: dato che usa MS SQL Server, sono d'accordo. Ma VARCHAR è il tipo di dati giusto in altre implementazioni SQL che hanno un supporto migliore per UTF-8.
dan04,

Risposte:


142

Il Catalogo degli standard di dati governativi del Regno Unito suggerisce 35 caratteri per ciascuno di Nome e cognome, o 70 caratteri per un singolo campo per contenere il Nome completo.


3
Il link deve essere aggiornato a partire dal 22 ottobre 2010. Ho cercato su Google: site: *. Gov.uk Nome "35 caratteri" e ho trovato questo documento justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R,

I loro collegamenti sembrano essere davvero cattivi ... a partire dall'8/2012: webarchive.nationalarchives.gov.uk/+/http://…
Thomas B

6
Il nome completo "ragionevole" più lungo che ho trovato è "Gisele Marie-Louise Marguerite LaFleche" (39 byte).
user1154664

54 caratteri un po 'più grandi: gw.geneanet.org/…
mestachs

3
La Nuova Zelanda limita i nomi completi: devono contenere meno di 100 caratteri, spazi inclusi, e non possono contenere simboli o numeri. Immagino che i trattini siano ammessi nei cognomi.
Glutnix,

27

So di essere in ritardo su questo, ma aggiungerò comunque questo commento, poiché altri potrebbero venire qui in futuro con domande simili.

Fai attenzione alle dimensioni delle colonne di modifica che dipendono dalle impostazioni locali. Per cominciare, ti prepara per un incubo di manutenzione, lasciando da parte il fatto che le persone migrano e portano i loro nomi con sé.

Ad esempio, gli spagnoli con quei cognomi extra possono trasferirsi e vivere in un paese di lingua inglese e possono ragionevolmente aspettarsi che venga utilizzato il loro nome completo. I russi hanno patronimici oltre ai loro cognomi, alcuni nomi africani possono essere considerevolmente più lunghi della maggior parte dei nomi europei.

Procedi con l'estensione di ogni colonna quanto puoi ragionevolmente fare, tenendo conto del potenziale conteggio delle righe. Uso 40 caratteri ciascuno per nome, altri nomi e cognomi e non ho mai riscontrato alcun problema.


Grazie per la risposta, anche se è passato un po 'di tempo.
EndangeredMassa,

9

Di solito vado con varchar (255) (255 è la lunghezza massima di un tipo varchar in MySQL).


30
E riservi anche 255 caratteri di spazio nelle tue GUI e altri media in cui viene visualizzato il nome / cognome? ;-)
AndrewBourgeois,

2
Pensavo: "Perché non usare sempre varchar (255)?" Ora mi rendo conto che i vincoli di lunghezza sono principalmente per l'interfaccia utente e i vincoli da cui i progettisti possono fare affidamento quando progettano la loro interfaccia utente, quindi si tratta di utilizzare troppo spazio nel database.
giovedì

6

Se è il nome completo in un campo, di solito vado con 128 - 64/64 per il primo e l'ultimo in campi separati - semplicemente non lo sai mai.


6

@Ian Nelson: mi chiedo se gli altri vedano il problema lì.

Diciamo che hai campi divisi. Sono in totale 70 caratteri, 35 per il nome e 35 per il cognome. Tuttavia, se hai un campo, trascuri lo spazio che separa il nome e il cognome, cambiandoti in breve di 1 carattere. Certo, è "solo" un personaggio, ma questo potrebbe fare la differenza tra qualcuno che inserisce il suo nome completo e qualcuno no. Pertanto, cambierei questo suggerimento in "35 caratteri per ciascuno di Nome e cognome, o 71 caratteri per un singolo campo per contenere il nome completo".


2
Il punto di seguire quel documento è che sei interoperabile con altri sistemi del governo del Regno Unito, quindi non puoi aumentare individualmente i 70 a 71 e chiamarlo un giorno, altrimenti i sistemi con un limite di 70 caratteri tagliano il tuo testo. (Non dovresti archiviare i dati in entrambe le forme all'interno del tuo sistema.) In realtà peggiora, poiché il nome completo include non solo Famiglia / Dato, ma anche Titolo e Suffisso, che hanno anche un limite di 35 caratteri ciascuno, per un massimo di 143 caratteri al massimo nei campi allegati. Fa schifo di essere lo sviluppatore che deve scambiare dati con entrambe le forme di memorizzazione dei nomi.
mmitchell

3
Chiaramente la guida è scritta dall'aspettativa che un individuo possa avere un Nome dato lungo (fino a 35 caratteri) o un Nome famiglia lungo (fino a 35 caratteri), ma è improbabile che ENTRAMBE parti del nome siano così lunghe.
Ian Nelson,

3

Nel Regno Unito, ci sono alcuni standard governativi che gestiscono con successo la maggior parte della popolazione del Regno Unito: l'ufficio passaporti, l'agenzia per le licenze di conducenti e veicoli, l'ufficio per i sondaggi di proprietà e il SSN. Usano standard diversi, ovviamente.

La modifica del nome tramite Deed Poll consente di 300 caratteri ;

Non esiste un limite legale per la lunghezza del tuo nome, ma imponiamo un limite di 300 caratteri (spazi inclusi) per il tuo nome completo.

Il servizio sanitario nazionale utilizza 70 caratteri per i nomi dei pazienti

NOME PAZIENTE
Formato / lunghezza: max an70

L'ufficio passaporti consente 30 + 30 primi / ultimi e le patenti di guida (DVLA) sono 30 in totale.

Nota che altre organizzazioni avranno le proprie restrizioni su ciò che mostreranno sui documenti che producono - per HM Passport Office il limite è di 30 caratteri ciascuno per il tuo nome e cognome, e per DVLA il limite è di 30 caratteri in totale per il tuo nome e cognome.



2

Quello che stai davvero ponendo è una domanda correlata, ma sostanzialmente diversa: con quale frequenza desidero troncare i nomi per adattarli al database? La risposta dipende sia dalla frequenza delle diverse lunghezze dei nomi sia dalle lunghezze massime scelte. Questa preoccupazione è bilanciata dalle preoccupazioni relative alle risorse utilizzate dal database. Considerando la poca differenza ambientale tra le diverse lunghezze massime per un campo varchar, generalmente commetterei un errore dal momento che non sarei mai costretto a troncare un nome e rendere il campo più grande di quanto osassi.


1

Si noti che molte culture hanno "secondi cognomi" spesso chiamati nomi di famiglia. Ad esempio, se hai a che fare con persone spagnole, apprezzeranno il fatto di avere un cognome separato dal loro "cognome".

La soluzione migliore è definire un tipo di dati per i componenti del nome, utilizzare quelli per un tipo di dati per il cognome e modificare a seconda delle impostazioni locali.


Non c'è alcun vantaggio nel ridurre i limiti in locali che statisticamente hanno valori più piccoli - la dimensione del campo non influisce sullo spazio occupato, a meno che alcuni valori non occupino effettivamente quei caratteri extra consentiti (e quindi ciò significa che hai fatto comunque la scelta giusta) !
Tao,

0

Il nome medio è di circa 6 lettere. Ciò lascia 43 per un cognome. :) Sembra che potresti accorciarlo se vuoi.

La domanda principale è: quante righe pensi di avere? Non credo che varchar (50) ti ucciderà fino a quando non otterrai diversi milioni di file.


6
Se hai 50 milioni di valori tra 10 e 15 caratteri in una colonna varchar (20) e gli stessi 50 milioni di valori in una colonna varchar (50), occuperanno esattamente lo stesso spazio. Questo è l'intero punto di Varchar, al contrario di Char.
Tao,


0

a seconda di chi utilizzerà il database, ad esempio i nomi africani faranno con varchar (20) come cognome e nome separati. tuttavia è diverso da nazione a nazione, ma per salvare le risorse e la memoria del database, separare i campi del cognome e del nome e utilizzare varchar (30) che funzionerà.

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.