Elenco di lunghezze standard per i campi del database


395

Sto progettando una tabella di database e ancora una volta mi faccio la stessa stupida domanda: quanto deve essere lungo il campo del nome?

Qualcuno ha un elenco di lunghezze ragionevoli per i campi più comuni , come nome, cognome e indirizzo e-mail?


1
Assicurati solo di consentire caratteri non alfabetici nei nomi! indica il trattino nel suo cognome
Chris Marasti-Georg,

3
Vedere "Lunghezza massima di un ID e-mail valido" per la lunghezza massima dell'indirizzo e-mail.
uscita il

2
Una nota: non richiedono sia un "nome" che un "cognome". Alcune persone, come me, hanno un solo nome. (Prova: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai

Che dire di URL, come blog o link al profilo?
AlikElzin-Kilaka,

Fottuto se il nome è lungo quanto questo gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Risposte:


35

Raccomandazione del W3C:

Se stai progettando un modulo o un database che accetterà nomi da persone con una varietà di sfondi, dovresti chiederti se hai davvero bisogno di avere campi separati per il nome e il cognome.

... Ricorda che i nomi in alcune culture possono essere molto più lunghi dei tuoi. ... Evitare di limitare la dimensione del campo per i nomi nel database . In particolare, non dare per scontato che un nome giapponese di quattro caratteri in UTF-8 si adatterà a quattro byte - probabilmente avrai bisogno di 12.

https://www.w3.org/International/questions/qa-personal-names

Per i campi del database, VARCHAR(255)è una scelta predefinita sicura, a meno che tu non possa effettivamente trovare una buona ragione per usare qualcos'altro. Per le tipiche applicazioni Web, le prestazioni non saranno un problema. Non ottimizzare prematuramente.


26
Sono passati 10 anni da quando ho fatto quella domanda. Con altri 10 anni di esperienza alle spalle, sono propenso a concordare con te.
Patrick McElhaney,

2
Come stamperesti esattamente un nome lungo 255 caratteri su una busta?
Michael Potter,

316

Ho appena interrogato il mio database con milioni di clienti negli Stati Uniti.

  • La lunghezza massima del nome era 46. Vado con 50. (Naturalmente, solo 500 di questi erano oltre 25, ed erano tutti casi in cui le importazioni di dati portavano a una liquidazione aggiuntiva in quel campo.)

  • Il cognome era simile al nome.

  • Gli indirizzi e-mail sono al massimo di 62 caratteri. La maggior parte dei più lunghi erano in realtà elenchi di indirizzi e-mail separati da punti e virgola.

  • L'indirizzo massimo è di 95 caratteri. I lunghi erano tutti validi.

  • La lunghezza massima della città era 35.

Questa dovrebbe essere una diffusione statistica decente per le persone negli Stati Uniti. Se devi prendere in considerazione la localizzazione, i numeri potrebbero variare in modo significativo.


4
Rispetto al tuo, i database a cui ho accesso sono minuscoli, ma anche lì ho trovato un indirizzo e-mail di 138 caratteri. Il componente localpart è ovviamente una sorta di nome distinto LDAP (o AD?).
Bernd Jendrissek,

2
E i numeri di telefono?
ceving

@EricZBeard "indirizzo" include il numero civico?
noɥʇʎԀʎzɐɹƆ

3
La lunghezza media degli indirizzi e-mail nel database non è una buona misura per la raccomandazione. La lunghezza massima valida di un indirizzo e-mail è di 254 caratteri e deve essere la lunghezza specificata nel database. Inoltre, avere elenchi di indirizzi e-mail in una singola colonna significa per me che i tuoi dati non sono normalizzati e quindi invalida ulteriormente la tua risposta.
Mario,

1
@MGOwen In primo luogo, non si conosce lo scopo del database, in alcune impostazioni a cui viene negato l'accesso a qualcuno a causa di un problema frivolo come la loro e-mail "troppo lunga" potrebbe essere un grosso problema. In secondo luogo, il link che hai pubblicato dice "Il più lungo valido è 89", dove come dice questo è 62. Qual è giusto? Se vuoi solo scegliere un numero arbitrario o hai un motivo valido come il nome deve essere incluso come parte dell'indirizzo, va bene. Tuttavia è ancora ragionevole che in caso di dubbio si faccia riferimento alle specifiche. Continuo a ritenere che una sola persona che dice "il mio database maxes at x" è aneddotica.
Mario,

171

Il catalogo degli standard dei dati del governo britannico descrive in dettaglio gli standard del Regno Unito per questo tipo di cose. Suggerisce 35 caratteri per ciascuno di Nome e cognome, o 70 caratteri per un singolo campo per contenere il nome completo e 255 caratteri per un indirizzo e-mail. Tra le altre cose..


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,

20
Solo un pensiero ... non dovrebbero essere 71 caratteri per il nome e il cognome in un singolo campo, dato che deve esserci uno spazio?
Joseph Redfern,

8
Bene, chiaramente anticipano il nome lungo occasionale (fino a 35 caratteri) e il cognome lungo occasionale (fino a 35 caratteri), ma non si aspettano necessariamente un individuo con una combinazione di nome lungo e cognome. Sarebbe solo goloso ;-)
Ian Nelson,

6
Se il signor El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi effettivamente utilizza tutti i suoi nomi durante la compilazione dei moduli online, sarei colpito. Ho due secondi nomi, ma ne uso sempre e solo uno su forme ufficiali (cioè governative).
Leon,

2
@ ian-nelson Lunghezza e-mail secondo RFC 3696: tale limite è un massimo di 64 caratteri (ottetti) nella "parte locale" (prima di "@") e un massimo di 255 caratteri (ottetti) nella parte di dominio (dopo la "@") per una lunghezza totale di 320 caratteri. I sistemi che gestiscono la posta elettronica dovrebbero essere pronti a elaborare indirizzi così lunghi, anche se raramente vengono rilevati.
Piotr Nawrot il

54

Probabilmente alcune lunghezze di colonna corrette

                            Min Max

Hostname                    1   255
Domain Name                 4   253
Email Address               7   254
Email Address [1]           3   254
Telephone Number            10  15      
Telephone Number [2]        3   26  
HTTP(S) URL w domain name   11  2083        
URL [3]                     6   2083    
Postal Code [4]             2   11
IP Address (incl ipv6)      7   45
Longitude                   numeric 9,6
Latitude                    numeric 8,6
Money[5]                    numeric 19,4

[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale

Una lunga attesa sui nomi personali

Un nome personale è un Polynym (un nome con più componenti ordinabili ), un Mononimo (un nome con un solo componente) o un Pictonym (un nome rappresentato da un'immagine - questo esiste a causa di persone come Prince).

Una persona può avere più nomi, interpretare ruoli, come LEGALE, MARITTIMO, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM, ecc. Potresti avere regole commerciali, come "una persona può avere solo un nome legale alla volta, ma più pseudonimi Al tempo".

Qualche esempio:

names: [
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"George",
    middle:"Herman",
    moniker:"Babe",
    surname:"Ruth",
    generation:"JUNIOR"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Sultan of Swat"
  }
]

o

names: [
  {
    type:"POLYNYM",
    role:"PREFERRED",
    given:"Malcolm",
    surname:"X"
  },
  {
    type:"POLYNYM",
    role:"BIRTH",
    given:"Malcolm",
    surname:"Little"
  },
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Malik",
    surname:"El-Shabazz"
  }
]

o

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Prince",
    middle:"Rogers",
    surname:"Nelson"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"Prince"
  },
  {
    type:"PICTONYM",
    role:"LEGAL",
    url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
  }
]

o

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Juan Pablo",
    surname:"Fernández de Calderón",
    secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
  }
]

Dati nomi, secondi nomi, cognomi possono essere più parole come "Billy Bob" Thornton, o Ralph "Vaughn Williams".


5
Questa è una risposta molto istruttiva ma non super utile. La prossima volta che avrò bisogno di una risposta "probabilmente corretta" ti farò sapere.
n8bar,

16

Direi di sbagliare nella parte alta. Dal momento che probabilmente utilizzerai varchar, qualsiasi spazio extra che permetti non consumerà spazio extra a meno che qualcuno non ne abbia bisogno. Vorrei dire per i nomi (primo o ultimo), andare almeno 50 caratteri e per l'indirizzo e-mail, renderlo almeno 128. Ci sono alcuni indirizzi e-mail davvero lunghi là fuori.

Un'altra cosa che mi piace fare è andare su Lipsum.com e chiedergli di generare del testo. In questo modo puoi avere una buona idea di come appaiono 100 byte.


6
Oh mio Dio - la prima persona a notare che i campi più grandi non significano necessariamente più spazio di archiviazione, quindi il "var" in varchar. Tuttavia NVarchar di solito avrebbe più senso per i nomi.
Tao,

Dipende dall'attuazione. Non è necessario NVARCHAR se VARCHAR supporta UTF-8.
dan04

2
[N]Varchardimensioni fanno tuttavia, influenzano gli indici.
RBarryYoung,

11

Praticamente utilizzo sempre una potenza di 2 a meno che non ci sia una buona ragione per non farlo, come un'interfaccia rivolta al cliente in cui un altro numero ha un significato speciale per il cliente.

Se ti attieni a poteri di 2 ti mantiene in un set limitato di dimensioni comuni, il che è una buona cosa, e rende più facile indovinare la dimensione di oggetti sconosciuti che potresti incontrare. Vedo un buon numero di altre persone che lo fanno, e c'è qualcosa di esteticamente piacevole al riguardo. In genere mi fa sentire bene quando lo vedo, significa che il progettista stava pensando come un ingegnere o un matematico. Anche se probabilmente sarei preoccupato se fossero usati solo numeri primi. :)


3
È discutibile che 2ⁿ - 1, 2ⁿ - 2 o anche 2ⁿ - 4, due sarebbero una decisione ingegneristica migliore perché spesso le stringhe sono rappresentate come arays di carattere a indice zero e terminate con un carattere nullo, byte o due byte (UTF-8 ). Inoltre, con alcuni database che superano 255 su un varchar richiede un byte aggiuntivo per l'archiviazione (consultare stackoverflow.com/questions/2340639/… ).
Tasche e



2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

Modifica : aggiunta una spaziatura


1
Perché non usare solo VARCHAR 255 per tutto ciò che è una stringa? VARCHAR non utilizza il riempimento e termina con uno o due byte aggiuntivi.
Radtek,

varchar potrebbe essere un po 'lento.
kta,

1

Solo guardando i miei archivi di posta elettronica, ci sono un certo numero di "nomi" piuttosto lunghi (ovviamente ciò che si intende per primo è variabile in base alla cultura). Un esempio è Krishnamurthy - che è lungo 13 lettere. Una buona ipotesi potrebbe essere da 20 a 25 lettere basate su questo. L'email dovrebbe essere molto più lunga poiché potresti avere firstname.lastname@somedomain.com. Inoltre, gmail e alcuni altri programmi di posta ti consentono di usare firstname.lastname+sometag@somedomain.com dove "sometag" è tutto ciò che vuoi mettere lì in modo da poterlo utilizzare per ordinare le e-mail in arrivo. Mi capita spesso di imbattermi in moduli web che non mi consentono di inserire il mio indirizzo email completo senza considerare alcun tag. Quindi, se hai bisogno di un campo email fisso forse qualcosa come 25,25 + 15@ 20,3 in caratteri per un totale di 90 caratteri (se avessi fatto bene la mia matematica!).


0

Di solito vado con:

Nome : 30 caratteri
Cognome : 30 caratteri
Email : 50 caratteri
Indirizzo : 200 caratteri

Se sono preoccupato per i campi lunghi per i nomi, a volte potrei andare anche con 50 per i campi dei nomi, poiché lo spazio di archiviazione è raramente un problema in questi giorni.


11
50 per e-mail? 254 è il massimo in realtà
Marko

0

Se hai bisogno di prendere in considerazione la localizzazione (per quelli di noi al di fuori degli Stati Uniti!) Ed è possibile nel tuo ambiente, suggerirei:

Definisci i tipi di dati per ciascun componente del nome - NOTA: alcune culture hanno più di due nomi! Quindi avere un tipo per il nome completo,

Quindi la localizzazione diventa semplice (per quanto riguarda i nomi).

Lo stesso vale per gli indirizzi, a proposito: diversi formati!


-1

è varchar giusto? Quindi non importa se usi 50 o 25, meglio essere al sicuro e usare 50, che ha detto che credo che il più lungo che abbia visto sia circa 19 o giù di lì. I cognomi sono più lunghi

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.