Liste des longueurs standard pour les champs de base de données

395

Je suis en train de concevoir une table de base de données et je me pose à nouveau la même question stupide: combien de temps le champ du prénom doit-il être?

Quelqu'un a-t-il une liste de longueurs raisonnables pour les champs les plus courants , tels que le prénom, le nom et l'adresse e-mail?

Patrick McElhaney
la source
1
Assurez-vous simplement d'autoriser les caractères non alpha dans les noms! pointe un trait d'union dans son nom de famille
Chris Marasti-Georg
3
Voir «Longueur maximale d'un identifiant de messagerie valide» pour la longueur maximale de l'adresse e-mail.
2011
2
Une remarque: ne nécessite pas à la fois un "prénom" et un "nom de famille". Certaines personnes, comme moi, n'ont qu'un seul nom. (Preuve: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai
Qu'en est-il de l'URL, comme le blog ou le lien vers le profil?
AlikElzin-kilaka
Vissé si le nom est aussi long que celui-ci gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Réponses:

35

Recommandation du W3C:

Si vous concevez un formulaire ou une base de données qui acceptera les noms de personnes d'horizons divers, vous devez demander si vous avez vraiment besoin d'avoir des champs séparés pour le prénom et le nom de famille.

… Gardez à l'esprit que les noms dans certaines cultures peuvent être beaucoup plus longs que les vôtres. … Évitez de limiter la taille des champs pour les noms dans votre base de données . En particulier, ne supposez pas qu'un nom japonais à quatre caractères en UTF-8 tiendra sur quatre octets - vous en aurez probablement besoin de 12.

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

Pour les champs de base de données, VARCHAR(255) est un choix par défaut sûr, sauf si vous pouvez réellement trouver une bonne raison d'utiliser autre chose. Pour les applications Web classiques, les performances ne seront pas un problème. N'optimisez pas prématurément.

jrc
la source
26
Cela fait 10 ans que je pose cette question. Avec encore 10 ans d'expérience à mon actif, je suis enclin à être d'accord avec vous.
Patrick McElhaney,
2
Comment imprimeriez-vous exactement un nom de 255 caractères sur une enveloppe?
Michael Potter
316

Je viens d'interroger ma base de données auprès de millions de clients aux États-Unis.

  • La longueur maximale du prénom était de 46. J'y vais avec 50. (Bien sûr, seulement 500 d'entre eux avaient plus de 25 ans, et ce sont tous des cas où les importations de données ont entraîné une liquidation supplémentaire dans ce domaine.)

  • Le nom de famille était similaire au prénom.

  • Les adresses e-mail sont limitées à 62 caractères. La plupart des plus longues étaient en fait des listes d'adresses e-mail séparées par des points-virgules.

  • L'adresse de la rue ne dépasse pas 95 caractères. Les longs étaient tous valables.

  • La longueur maximale de la ville était de 35.

Cela devrait être un écart statistique décent pour les personnes aux États-Unis. Si vous avez une localisation à considérer, les nombres peuvent varier considérablement.

Eric Z Beard
la source
4
Par rapport à la vôtre, les bases de données auxquelles j'ai accès sont minuscules, mais même là, j'ai trouvé une adresse e-mail de 138 caractères. Le composant localpart est évidemment une sorte de nom distinctif LDAP (ou AD?).
Bernd Jendrissek
2
Et les numéros de téléphone?
ceving
@EricZBeard Est-ce que "l'adresse municipale" comprend le numéro de la maison?
noɥʇʎԀʎzɐɹƆ
3
La longueur moyenne des adresses e-mail dans votre base de données n'est pas une bonne mesure de recommandation. La longueur maximale valide d'une adresse e-mail est de 254 caractères et doit être la longueur spécifiée dans la base de données. De plus, avoir des listes d'adresses e-mail dans une seule colonne signifie pour moi que vos données ne sont pas normalisées et invalide donc davantage votre réponse.
Mario
1
@MGOwen Premièrement, vous ne connaissez pas le but de la base de données, dans certains contextes, le refus d'accès à quelqu'un en raison d'un problème frivole comme le fait que son courrier électronique soit "trop ​​long" pourrait être un problème majeur. Deuxièmement, le lien que vous avez affiché dit "Le plus long et valide est 89", alors que celui-ci indique qu'il est 62. Lequel est vrai? Si vous voulez simplement choisir un numéro arbitraire ou si vous avez une raison valable comme le nom doit être inclus dans l'adresse, très bien. Cependant, il est toujours raisonnable, qu'en cas de doute, vous vous référez à la spécification. Je soutiens toujours qu'une seule personne disant "ma base de données max à x" est anecdotique.
Mario
171

Le catalogue des normes de données du gouvernement britannique détaille les normes britanniques pour ce genre de chose. Il suggère 35 caractères pour chacun des prénoms et noms de famille, ou 70 caractères pour un seul champ contenant le nom complet, et 255 caractères pour une adresse e-mail. Entre autres choses..

Ian Nelson
la source
3
Le lien doit être mis à jour le 22 octobre 2010. J'ai recherché sur: site: *. Gov.uk Nommez "35 caractères" et j'ai trouvé ce document justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R
20
Juste une pensée ... ne devrait-il pas y avoir 71 caractères pour le prénom et le nom dans un seul champ, étant donné qu'il doit y avoir un espace?
Joseph Redfern
8
Eh bien, ils anticipent clairement le prénom long occasionnel (jusqu'à 35 caractères) et le nom de famille long occasionnel (jusqu'à 35 caractères), mais ne s'attendent pas nécessairement à un individu avec une combinaison de prénom et de nom longs. Ce serait juste gourmand ;-)
Ian Nelson
6
Si M. El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi utilise réellement tous ses noms lors du remplissage des formulaires en ligne, je serais impressionné. J'ai deux prénoms, mais je n'utilise que l'un d'eux en dehors des formulaires officiels (c'est-à-dire du gouvernement).
Leon
2
@ Longueur d'email ian-nelson selon la RFC 3696: Cette limite est un maximum de 64 caractères (octets) dans la "partie locale" (avant le "@") et un maximum de 255 caractères (octets) dans la partie domaine (après le "@") pour une longueur totale de 320 caractères. Les systèmes qui gèrent le courrier électronique doivent être prêts à traiter des adresses aussi longues, même si elles sont rarement rencontrées.
Piotr Nawrot
54

Certaines longueurs de colonne probablement correctes

                            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

Une longue diatribe sur les noms de personnes

Un nom personnel est soit un Polynym (un nom avec plusieurs triables composants ), un Mononym (un nom avec un seul composant), ou un Pictonym (un nom représenté par une image - cela existe en raison de personnes comme Prince).

Une personne peut avoir plusieurs noms, jouer des rôles, tels que LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM, etc. à la fois".

Quelques exemples:

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"
  }
]

ou

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"
  }
]

ou

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"
  }
]

ou

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 */
  }
]

Les prénoms, les prénoms et les noms de famille peuvent être des mots multiples tels que "Billy Bob" Thornton, ou Ralph "Vaughn Williams".

Neil McGuigan
la source
5
C'est très instructif mais pas une réponse super utile. La prochaine fois que j'ai besoin d'une réponse "probablement correcte", je vous le ferai savoir.
n8bar
16

Je dirais de pécher par excès. Puisque vous utiliserez probablement varchar, tout espace supplémentaire que vous autorisez n'utilisera pas réellement d'espace supplémentaire, sauf si quelqu'un en a besoin. Je dirais pour les noms (en premier ou en dernier), faites au moins 50 caractères et pour l'adresse e-mail, faites-en au moins 128. Il y a des adresses e-mail vraiment longues.

Une autre chose que j'aime faire est d'aller sur Lipsum.com et de lui demander de générer du texte. De cette façon, vous pouvez avoir une bonne idée de ce à quoi ressemble 100 octets.

Kibbee
la source
6
Oh mon Dieu - la première personne à noter que des champs plus grands ne signifient pas nécessairement plus d'espace de stockage, d'où le "var" dans varchar. NVarchar aurait généralement plus de sens pour les noms.
Tao
Dépend de la mise en œuvre. Vous n'avez pas besoin de NVARCHAR si VARCHAR prend en charge UTF-8.
dan04
2
[N]Varchartailles n'affectent cependant vos index.
RBarryYoung
11

J'utilise presque toujours une puissance de 2, sauf s'il existe une bonne raison de ne pas le faire, comme une interface orientée client où un autre numéro a une signification particulière pour le client.

Si vous vous en tenez à des puissances de 2, cela vous maintient dans un ensemble limité de tailles communes, ce qui est en soi une bonne chose, et il est plus facile de deviner la taille des objets inconnus que vous pouvez rencontrer. Je vois un bon nombre d'autres personnes faire cela, et il y a quelque chose d'esthétique à ce sujet. Cela me donne généralement une bonne impression quand je vois cela, cela signifie que le concepteur pensait comme un ingénieur ou un mathématicien. Bien que je serais probablement inquiet si seuls des nombres premiers étaient utilisés. :)

Mike
la source
3
On peut soutenir que 2ⁿ - 1, 2ⁿ - 2 ou même 2ⁿ - 4, deux serait une meilleure décision d'ingénierie car souvent les chaînes sont représentées comme des tableaux de caractères indexés zéro et se terminent par un caractère nul, un octet ou deux octets (UTF-8 ). De plus, certaines bases de données dépassant 255 sur un varchar nécessitent un octet supplémentaire pour le stockage (voir stackoverflow.com/questions/2340639/… ).
Pocketsand
4

Je voulais trouver la même chose et les normes de données du gouvernement britannique mentionnées dans la réponse acceptée semblaient idéales. Cependant, aucun de ces éléments ne semblait plus exister - après une recherche approfondie, je l'ai trouvé dans une archive ici: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards / e-gif / datastandards.aspx . Vous devez télécharger le zip, l'extraire puis ouvrir default.htm dans le dossier html.

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

Modifier : Ajout d'un peu d'espacement

Micheal Mouner Mikhail Youssif
la source
1
Pourquoi ne pas simplement utiliser VARCHAR 255 pour tout ce qui est une chaîne? VARCHAR n'utilise pas de remplissage et se termine par un ou deux octets supplémentaires.
radtek
varchar pourrait être un peu lent.
kta
1

En regardant mes archives de courrier électronique, il y a un certain nombre de "prénoms" assez longs (bien sûr, ce que l'on entend par premier est variable selon la culture). Un exemple est Krishnamurthy - qui compte 13 lettres. Une bonne supposition pourrait être de 20 à 25 lettres sur cette base. L'email devrait être beaucoup plus long car vous pourriez avoir [email protected]. De plus, gmail et certains autres programmes de messagerie vous permettent d'utiliser [email protected] où "someag" est tout ce que vous voulez y mettre afin de pouvoir l'utiliser pour trier les e-mails entrants. Je rencontre fréquemment des formulaires Web qui ne me permettent pas de saisir mon adresse e-mail complète sans tenir compte des balises. Donc, si vous avez besoin d'un champ de messagerie fixe, peut-être quelque chose comme [email protected] en caractères pour un total de 90 caractères (si j'ai bien fait mes calculs!).

Loren Charnley
la source
0

Je vais généralement avec:

Prénom : 30 caractères
Nom : 30 caractères
Courriel : 50 caractères
Adresse : 200 caractères

Si je suis préoccupé par les champs longs pour les noms, je pourrais parfois aller avec 50 pour les champs de nom aussi, car l'espace de stockage est rarement un problème de nos jours.

kaybenleroll
la source
11
50 pour le courrier électronique? 254 est le maximum en fait
Marko
0

Si vous avez besoin de considérer la localisation (pour ceux d'entre nous en dehors des États-Unis!) Et c'est possible dans votre environnement, je vous suggère:

Définissez les types de données pour chaque composant du nom - REMARQUE: certaines cultures ont plus de deux noms! Ensuite, ayez un type pour le nom complet,

La localisation devient alors simple (en ce qui concerne les noms).

La même chose s'applique aux adresses, BTW - différents formats!

ColinYounger
la source
-1

c'est varchar non? Donc, peu importe si vous utilisez 50 ou 25, mieux vaut être sûr et utiliser 50, cela dit, je crois que le plus long que j'ai vu est d'environ 19 ou plus. Les noms de famille sont plus longs

SQLMenace
la source