Liste der Standardlängen für Datenbankfelder


394

Ich entwerfe eine Datenbanktabelle und stelle mir noch einmal die gleiche dumme Frage: Wie lang sollte das Feld Vorname sein?

Hat jemand eine Liste mit angemessenen Längen für die häufigsten Felder wie Vorname, Nachname und E-Mail-Adresse?


1
Stellen Sie einfach sicher, dass die Namen Nicht-Alpha-Zeichen enthalten! Punkte auf Bindestrich in seinem Nachnamen
Chris Marasti-Georg

3

2
Ein Hinweis: Benötigen Sie nicht sowohl einen "Vornamen" als auch einen "Nachnamen". Einige Leute, wie ich, haben nur einen Namen. (Beweis: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai

Was ist mit URLs wie Blogs oder Links zu Profilen?
AlikElzin-Kilaka

Geschraubt, wenn der Name so lang ist wie dieser gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Antworten:


34

Empfehlung von W3C:

Wenn Sie ein Formular oder eine Datenbank entwerfen, die Namen von Personen mit unterschiedlichem Hintergrund akzeptieren, sollten Sie sich fragen, ob Sie wirklich separate Felder für Vorname und Familienname benötigen.

… Denken Sie daran, dass Namen in einigen Kulturen viel länger sein können als Ihre eigenen. … Vermeiden Sie es, die Feldgröße für Namen in Ihrer Datenbank zu begrenzen . Nehmen Sie insbesondere nicht an, dass ein vierstelliger japanischer Name in UTF-8 in vier Bytes passt - Sie benötigen wahrscheinlich tatsächlich 12.

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

Für Datenbankfelder VARCHAR(255)ist dies eine sichere Standardauswahl, es sei denn, Sie können tatsächlich einen guten Grund finden, etwas anderes zu verwenden. Bei typischen Webanwendungen ist die Leistung kein Problem. Nicht vorzeitig optimieren.


26
Es ist 10 Jahre her, seit ich diese Frage gestellt habe. Mit weiteren 10 Jahren Erfahrung bin ich geneigt, Ihnen zuzustimmen.
Patrick McElhaney

2
Wie genau würden Sie einen Namen mit 255 Zeichen auf einen Umschlag drucken?
Michael Potter

316

Ich habe gerade meine Datenbank mit Millionen von Kunden in den USA abgefragt.

  • Die maximale Länge des Vornamens betrug 46. Ich gehe mit 50. (Natürlich waren nur 500 von ihnen über 25 Jahre alt, und dies waren alles Fälle, in denen Datenimporte dazu führten, dass zusätzlicher Müll in diesem Feld auftauchte.)

  • Nachname war ähnlich wie Vorname.

  • E-Mail-Adressen mit maximal 62 Zeichen. Die meisten längeren waren Listen von E-Mail-Adressen, die durch Semikolons getrennt waren.

  • Die Adresse beträgt maximal 95 Zeichen. Die langen waren alle gültig.

  • Max Stadt Länge betrug 35.

Dies sollte eine anständige statistische Streuung für die Menschen in den USA sein. Wenn Sie die Lokalisierung berücksichtigen müssen, können die Zahlen erheblich variieren.


4
Im Vergleich zu Ihren sind die Datenbanken, auf die ich Zugriff habe, winzig, aber selbst dort habe ich eine E-Mail-Adresse mit 138 Zeichen gefunden. Die localpart-Komponente ist offensichtlich eine Art LDAP (oder AD?) - Name.
Bernd Jendrissek

2
Wie wäre es mit Telefonnummern?
Ceving

@EricZBeard Enthält "Straße" die Hausnummer?
noɥʇʎԀʎzɐɹƆ

3
Die durchschnittliche Länge der E-Mail-Adressen in Ihrer Datenbank ist kein gutes Maß für eine Empfehlung. Die maximal gültige Länge einer E-Mail-Adresse beträgt 254 Zeichen und sollte der in der Datenbank angegebenen Länge entsprechen. Wenn ich außerdem Listen mit E-Mail-Adressen in einer einzigen Spalte habe, bedeutet dies für mich, dass Ihre Daten nicht normalisiert sind und Ihre Antwort dadurch weiter ungültig wird.
Mario

1
@MGOwen Erstens kennen Sie den Zweck der Datenbank nicht. In bestimmten Einstellungen kann jemandem, dem der Zugriff aufgrund eines leichtfertigen Problems verweigert wird, z. B. dass seine E-Mail "zu lang" ist, ein großes Problem sein. Zweitens lautet der von Ihnen gepostete Link "Der längste gültige ist 89", wobei dieser wie 62 sagt. Was ist richtig? Wenn Sie nur eine beliebige Nummer auswählen möchten oder einen gültigen Grund haben, z. B. muss der Name als Teil der Adresse angegeben werden. Es ist jedoch immer noch vernünftig, dass Sie sich im Zweifelsfall auf die Spezifikation beziehen. Ich bin immer noch der Meinung, dass eine einzelne Person, die sagt "meine Datenbank ist maximal bei x", anekdotisch ist.
Mario

170

Der Datenstandardkatalog der britischen Regierung enthält Einzelheiten zu den britischen Standards für solche Dinge. Es werden 35 Zeichen für jeden Vornamen und Familiennamen oder 70 Zeichen für ein einzelnes Feld für den vollständigen Namen und 255 Zeichen für eine E-Mail-Adresse vorgeschlagen. Unter anderem..


3
Der Link muss ab dem 22. Oktober 2010 aktualisiert werden. Ich habe gegoogelt nach: site: *. Gov.uk Name "35 Zeichen" und dieses Dokument gefunden Justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R

20
Nur ein Gedanke ... sollten es nicht 71 Zeichen für den Vor- und Nachnamen in einem einzelnen Feld sein, da ein Leerzeichen vorhanden sein muss?
Joseph Redfern

8
Natürlich erwarten sie den gelegentlichen langen Vornamen (bis zu 35 Zeichen) und den gelegentlichen langen Nachnamen (bis zu 35 Zeichen), erwarten jedoch nicht unbedingt eine Person mit einer Kombination aus langem Vor- und Nachnamen. Das wäre einfach gierig ;-)
Ian Nelson

6
Wenn Herr El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi beim Ausfüllen von Online-Formularen tatsächlich alle seine Namen verwendet, wäre ich beeindruckt. Ich habe zwei zweite Vornamen, aber ich verwende immer nur einen von ihnen, abgesehen von offiziellen (dh Regierungs-) Formularen.
Leon

2
@ ian-nelson E-Mail-Länge gemäß RFC 3696: Diese Grenze beträgt maximal 64 Zeichen (Oktette) im "lokalen Teil" (vor dem "@") und maximal 255 Zeichen (Oktette) im Domain-Teil (danach) das "@") für eine Gesamtlänge von 320 Zeichen. Systeme, die E-Mails verarbeiten, sollten darauf vorbereitet sein, so lange Adressen zu verarbeiten, auch wenn sie selten vorkommen.
Piotr Nawrot

53

Einige wahrscheinlich korrekte Spaltenlängen

                            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

Ein langer Scherz über persönliche Namen

Ein persönlicher Name ist entweder ein Polynym (ein Name mit mehreren Sortierbarkeiten Komponenten), ein Mononym (ein Name mit nur einer Komponente) oder ein Piktonym (ein Name, der durch ein Bild dargestellt wird - dies existiert aufgrund von Personen wie Prince).

Eine Person kann mehrere Namen haben und Rollen spielen, wie z. B. RECHTLICH, MARITAL, MAIDEN, BEVORZUGT, SOBRIQUET, PSEUDONYM usw. Sie haben möglicherweise Geschäftsregeln wie "Eine Person kann jeweils nur einen legalen Namen haben, aber mehrere Pseudonyme zu einer Zeit ".

Einige Beispiele:

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

oder

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

oder

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

oder

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

Vor- und Nachnamen sowie Nachnamen können mehrere Wörter wie "Billy Bob" Thorntonoder sein Ralph "Vaughn Williams".


5
Dies ist sehr informativ, aber keine sehr nützliche Antwort. Wenn ich das nächste Mal eine "wahrscheinlich richtige" Antwort brauche, werde ich es Sie wissen lassen.
n8bar

16

Ich würde sagen, auf der hohen Seite zu irren. Da Sie wahrscheinlich varchar verwenden, wird jeder zusätzliche Speicherplatz, den Sie zulassen, keinen zusätzlichen Speicherplatz verbrauchen, es sei denn, jemand benötigt ihn. Ich würde sagen, für Namen (erste oder letzte), mindestens 50 Zeichen und für E-Mail-Adresse mindestens 128. Es gibt einige wirklich lange E-Mail-Adressen da draußen.

Eine andere Sache, die ich gerne mache, ist, zu Lipsum.com zu gehen und es zu bitten, Text zu generieren. Auf diese Weise erhalten Sie eine gute Vorstellung davon, wie 100 Bytes aussehen.


6
Oh mein Gott - die erste Person, die bemerkt, dass größere Felder nicht unbedingt mehr Speicherplatz bedeuten, daher das "var" in varchar. NVarchar ist jedoch normalerweise für Namen sinnvoller.
Tao

Kommt auf die Umsetzung an. Sie benötigen NVARCHAR nicht, wenn VARCHAR UTF-8 unterstützt.
Dan04

2
[N]VarcharGrößen wirken sich jedoch auf Ihre Indizes aus.
RBarryYoung

11

Ich verwende so ziemlich immer eine Zweierpotenz, es sei denn, es gibt einen guten Grund, dies nicht zu tun, z. B. eine Schnittstelle mit Kundenkontakt, bei der eine andere Zahl für den Kunden eine besondere Bedeutung hat.

Wenn Sie sich an Potenzen von 2 halten, bleiben Sie innerhalb eines begrenzten Satzes gängiger Größen, was selbst eine gute Sache ist, und es erleichtert das Erraten der Größe unbekannter Objekte, auf die Sie möglicherweise stoßen. Ich sehe eine ganze Reihe anderer Leute, die dies tun, und es hat etwas Ästhetisches. Es gibt mir im Allgemeinen ein gutes Gefühl, wenn ich das sehe, es bedeutet, dass der Designer wie ein Ingenieur oder Mathematiker dachte. Obwohl ich wahrscheinlich besorgt wäre, wenn nur Primzahlen verwendet würden. :) :)


3
Es ist fraglich, ob 2ⁿ - 1, 2ⁿ - 2 oder sogar 2ⁿ - 4, zwei eine bessere technische Entscheidung wären, da Zeichenfolgen häufig als nullindexierte Zeichenarrays dargestellt und mit einem Nullzeichen, Byte oder zwei Bytes (UTF-8) abgeschlossen werden ). Bei einigen Datenbanken, die auf einem Varchar über 255 liegen, ist ein zusätzliches Byte für die Speicherung erforderlich (siehe stackoverflow.com/questions/2340639/… ).
Taschen und



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

Bearbeiten : Abstand hinzugefügt


1
Warum nicht einfach VARCHAR 255 für alles verwenden, was eine Zeichenfolge ist? VARCHAR verwendet keine Auffüllung und endet mit einem oder zwei zusätzlichen Bytes.
Radtek

varchar könnte etwas langsam sein.
kta

1

Wenn ich nur meine E-Mail-Archive durchschaue, gibt es eine Reihe ziemlich langer "Vornamen" (natürlich ist das, was mit "zuerst" gemeint ist, kulturell variabel). Ein Beispiel ist Krishnamurthy - das 13 Buchstaben lang ist. Eine gute Vermutung könnten 20 bis 25 Buchstaben sein. E-Mails sollten viel länger sein, da Sie möglicherweise Vorname.Nachname@Somedomain.com haben. Mit Google Mail und einigen anderen E-Mail-Programmen können Sie außerdem firstname.lastname+sometag@somedomain.com verwenden, wobei "sometag" alles ist, was Sie dort ablegen möchten, damit Sie eingehende E-Mails damit sortieren können. Ich stoße häufig auf Webformulare, mit denen ich meine vollständige E-Mail-Adresse nicht eingeben kann, ohne Tags zu berücksichtigen. Also, wenn Sie ein festes E-Mail-Feld benötigen, vielleicht so etwas wie 25.25+15@20.3 in Zeichen für insgesamt 90 Zeichen (wenn ich meine Mathematik richtig gemacht habe!).


0

Ich gehe normalerweise mit:

Vorname : 30 Zeichen
Nachname : 30 Zeichen
E-Mail : 50 Zeichen
Adresse : 200 Zeichen

Wenn ich mir Sorgen über lange Felder für die Namen mache, kann ich manchmal auch 50 für die Namensfelder wählen, da Speicherplatz heutzutage selten ein Problem darstellt.


11
50 für E-Mail? 254 ist das Maximum tatsächlich
Marko

0

Wenn Sie eine Lokalisierung in Betracht ziehen müssen (für diejenigen von uns außerhalb der USA!) Und dies in Ihrer Umgebung möglich ist, würde ich vorschlagen:

Definieren Sie Datentypen für jede Komponente des Namens - HINWEIS: Einige Kulturen haben mehr als zwei Namen! Dann haben Sie einen Typ für den vollständigen Namen,

Dann wird die Lokalisierung einfach (was die Namen betrifft).

Gleiches gilt für Adressen, übrigens - verschiedene Formate!


-1

es ist varchar richtig? Es ist also egal, ob Sie 50 oder 25 verwenden, seien Sie besser sicher und verwenden Sie 50, das heißt, ich glaube, die längste, die ich gesehen habe, ist ungefähr 19 oder so. Nachnamen sind länger

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.