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.
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.
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.
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..
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"
}
]
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".
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.
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. :) :)
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/… ).
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 [email protected] haben. Mit Google Mail und einigen anderen E-Mail-Programmen können Sie außerdem [email protected] 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 [email protected] in Zeichen für insgesamt 90 Zeichen (wenn ich meine Mathematik richtig gemacht habe!).
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.
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!
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
Antworten:
Empfehlung von W3C:
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.quelle
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.
quelle
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..
quelle
Einige wahrscheinlich korrekte Spaltenlängen
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:
oder
oder
oder
Vor- und Nachnamen sowie Nachnamen können mehrere Wörter wie
"Billy Bob" Thornton
oder seinRalph "Vaughn Williams"
.quelle
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.
quelle
[N]Varchar
Größen wirken sich jedoch auf Ihre Indizes aus.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. :) :)
quelle
Ich wollte dasselbe finden und die in der akzeptierten Antwort erwähnten britischen Datenstandards klangen ideal. Keines davon schien jedoch mehr zu existieren - nach einer erweiterten Suche fand ich es in einem Archiv hier: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards / e-gif / datastandards.aspx . Sie müssen die Zip-Datei herunterladen, extrahieren und dann default.htm im HTML-Ordner öffnen.
quelle
Diese könnten für jemanden nützlich sein;
http://www.interoadvisory.com/2015/08/6-areas-inside-of-linkedin-with-character-limits/
quelle
Bearbeiten : Abstand hinzugefügt
quelle
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 [email protected] haben. Mit Google Mail und einigen anderen E-Mail-Programmen können Sie außerdem [email protected] 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 [email protected] in Zeichen für insgesamt 90 Zeichen (wenn ich meine Mathematik richtig gemacht habe!).
quelle
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.
quelle
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!
quelle
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
quelle