Список стандартних довжин для полів бази даних


394

Я розробляю таблицю бази даних і ще раз задаю собі те саме дурне запитання: як довго має бути поле ім'я?

Чи є у когось список розумних розмірів для найбільш поширених полів , таких як ім’я, прізвище та адреса електронної пошти?


1
Просто переконайтеся, що ви допускаєте в іменах символи, що не містять альфа! окулярів на дефіс на його прізвище
Кріс Марасті-Георг

3
Див. "Максимальна довжина дійсного ідентифікатора електронної пошти" для максимальної довжини адреси електронної пошти.
outis

2
Одна примітка: не потрібно вимагати як "ім'я", так і "прізвища". Деякі люди, як я, мають лише одне ім’я. (Доказ: web.archive.org/web/20130115074449/http://saizai.com/… )
Сай

Що з URL-адресою, як-от блог чи посилання на профіль?
АлікЕльзін-кілака

Накручується, якщо ім'я дорівнює цьому gintama.wikia.com/wiki/Jugem_Jugem
瀬 絵 里

Відповіді:


34

Рекомендація W3C:

Якщо ви розробляєте форму або базу даних, яка буде приймати імена людей з різним походженням, вам слід запитати себе, чи дійсно потрібно мати окремі поля для вказаного імені та прізвища.

... Майте на увазі, що імена в деяких культурах можуть бути набагато довшими, ніж ваші власні. … Уникайте обмеження розміру поля для імен у вашій базі даних . Зокрема, не припускайте, що чотири символи японського імені в UTF-8 вмістяться в чотири байти - вам, ймовірно, потрібно 12.

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

Для полів баз даних VARCHAR(255)це безпечний вибір за замовчуванням, якщо ви насправді не можете створити вагомий привід використовувати щось інше. Для типових веб-додатків продуктивність не буде проблемою. Не передчасно оптимізуйте.


26
Минуло 10 років, як я задав це питання. Маючи ще 10 років досвіду роботи під своїм поясом, я схильний погодитися з вами.
Патрік МакЕлхані

2
Як саме ви надрукували на конверті ім’я, яке має 255 символів?
Майкл Поттер

316

Я просто запитав свою базу даних з мільйонами клієнтів у США.

  • Максимальна довжина імені - 46. Я переживаю 50. (Звичайно, лише 500 з них було старше 25 років, і це всі випадки, коли імпорт даних призводив до того, що в цьому полі закінчувалися зайві сміття.)

  • Прізвище було схожим на ім'я.

  • Адреси електронної пошти , розміщені в 62 символи. Більшість довших були фактично списками електронних адрес, розділених крапками з комою.

  • Вулична адреса не більше 95 символів. Довгі були всі дійсні.

  • Максимальна довжина міста - 35.

Це має бути гідним статистичним розкидом для людей у ​​США. Якщо ви маєте враховувати локалізацію, то цифри можуть суттєво відрізнятися.


4
У порівнянні з вашою, бази даних, до яких я маю доступ, крихітні, але навіть там я знайшов адресу електронної пошти із 138 символів. Очевидно, що компонент localpart - це якесь виділене ім'я LDAP (або AD?).
Bernd Jendrissek

2
Як щодо номерів телефонів?
припинення

@EricZBeard Чи включає "адреса вулиці" номер будинку?
noɥʇʎԀʎzɐɹƆ

3
Середня довжина адрес електронної пошти у вашій базі даних не є хорошим показником для рекомендацій. Максимально допустима довжина електронної адреси - 254 символів і повинна бути довжиною, зазначеною в базі даних. Додатково наявність списків електронних адрес в одному стовпчику означає для мене, що ваші дані не нормалізуються, і, таким чином, надалі виправдаєте вашу відповідь.
Маріо

1
@MGOwen По-перше, ви не знаєте мети бази даних, оскільки в певних налаштуваннях комусь забороняють доступ через легковажну проблему, як-от "електронна електронна пошта" занадто довга, це може стати головною проблемою. По-друге, у посиланні, яке ви розмістили, написано: "Найдовший дійсний - 89", де, як і цей, йдеться про 62. Що правильно? Якщо ви просто хочете вибрати довільне число або у вас є поважна причина, наприклад, ім'я має бути включене як частина адреси, добре. Однак все ще розумно, якщо ви сумніваєтеся, ви посилаєтесь на специфікацію. Я все ще вважаю, що одна людина, яка говорить "моя база даних максимум на x", є анекдотичною.
Маріо

170

Каталог стандартів урядових даних Великобританії детально описує стандарти Великобританії для подібних речей. Він пропонує 35 символів для кожного з вказаних імен та прізвища, або 70 символів для одного поля для повного імені та 255 символів для електронної адреси. Серед іншого ..


3
Посилання має бути оновлено 22 жовтня 2010 року. Я переглянув: site: *. Gov.uk Ім'я "35 символів" і знайшов цього документа Justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R

20
Лише думка ... чи не повинно це бути 71 символ для імені та прізвища в одному полі, враховуючи, що має бути пробіл?
Джозеф Редферн

8
Добре, вони чітко передбачають, що випадкові довге прізвище (до 35 символів) та прізвище з часом (до 35 символів), але не обов'язково сподіватися на особу, що поєднує як довге ім'я, так і прізвище. Це було б просто жадібно ;-)
Ян Нельсон

6
Якщо містер Ель Тахір Ель Фаділ Ель Сіддіг Абдеррахман Мохаммед Ахмед Абдель Карім Ель Махді насправді використовує всі його імена під час заповнення онлайн-форм, я був би вражений. У мене є два прізвища, але я коли-небудь використовую одне з них, крім офіційних (тобто урядових) форм.
Леон

2
@ ian-nelson Довжина електронної пошти відповідно до RFC 3696: Цей ліміт - це не більше 64 символів (октетів) у "локальній частині" (перед "@") і максимум 255 символів (октетів) у частині домену (після "@") загальною довжиною 320 символів. Системи, які обробляють електронну пошту, повинні бути готові обробляти такі довгі адреси, хоча вони рідко зустрічаються.
Piotr Nawrot

53

Деякі, ймовірно, правильні довжини стовпців

                            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

Довгий сказ на особисті імена

Особисте ім’я - це або полінім (назва з декількома компонентами для сортування ), мононім (назва лише з одним компонентом), або піктонім (ім’я, представлене малюнком - це існує завдяки людям, як Принц).

Людина може мати кілька імен, граючи ролі, такі як ЮРИДИЧНИЙ, МАРІТАЛЬНИЙ, ГОЛОВНИЙ, ПРЕФЕРЕДНИЙ, СОБРИКЕТ, ПСЕУДОНИМ і т. Д. Можливо, ви маєте правила ведення бізнесу, наприклад, "людина може мати лише одне юридичне ім'я одночасно, але кілька псевдонімів зараз".

Деякі приклади:

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:"PREFERRED",
    given:"Malcolm",
    surname:"X"
  },
  {
    type:"POLYNYM",
    role:"BIRTH",
    given:"Malcolm",
    surname:"Little"
  },
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Malik",
    surname:"El-Shabazz"
  }
]

або

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

або

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

Дані імена, прізвища, прізвища можуть бути декількома словами, такими як "Billy Bob" Thornton, або Ralph "Vaughn Williams".


5
Це дуже інформативна, але не надто корисна відповідь. Наступного разу, коли мені потрібна відповідь "напевно, правильна", я дам вам знати.
n8bar

16

Я б сказав, щоб помилитися з високої сторони. Оскільки ви, ймовірно, будете використовувати varchar, будь-який додатковий простір, який ви дозволяєте, насправді не використовуватиме зайвий простір, якщо комусь це не потрібно. Я б сказав про імена (перше чи останнє), пройдіть принаймні 50 символів, а для електронної адреси - щонайменше 128. Там є справді довгі адреси електронної пошти.

Ще одне, що мені подобається робити - це зайти на Lipsum.com і попросити його створити текст. Таким чином ви зможете отримати гарне уявлення про те, як виглядає 100 байт.


6
О мій - перший, хто зазначив, що більші поля не обов'язково означають більше місця для зберігання, отже, "var" у varchar. NVarchar зазвичай має більше сенсу для імен.
Дао

Залежить від реалізації. Вам не потрібен NVARCHAR, якщо VARCHAR підтримує UTF-8.
dan04

2
[N]VarcharРозміри цього , однак, впливають на ваші індекси.
RBarryYoung

11

Я майже завжди використовую потужність 2, якщо немає поважних причин цього не робити, наприклад інтерфейс із клієнтом, де якесь інше число має особливе значення для клієнта.

Якщо ви дотримуєтесь повноважень 2, це утримує вас в обмеженому наборі загальних розмірів, що саме по собі є хорошою справою, і це полегшує відгадування розміру невідомих об'єктів, з якими ви можете зіткнутися. Я бачу неабияку кількість інших людей, які роблять це, і є щось естетично в цьому. Як правило, це добре відчуває мене, коли я бачу це, це означає, що дизайнер думав як інженер чи математик. Хоча я, мабуть, був би стурбований, якби використовувались лише прості числа. :)


3
Можна стверджувати, що 2ⁿ - 1, 2ⁿ - 2 або навіть 2ⁿ - 4, два було б кращим інженерним рішенням, оскільки часто рядки представлені як нульові індекси символів і закінчуються нульовим знаком, байтом або двома байтами (UTF-8 ). Також для деяких баз даних, що перевищують 255 на варчарі, потрібен додатковий байт для зберігання (див. Stackoverflow.com/questions/2340639/… ).
Кишенькові та

4

Я хотів знайти те саме, і стандарти даних уряду Великобританії, згадані у прийнятій відповіді, звучали ідеально. Однак жодне з них більше не здавалося - після розширеного пошуку я знайшов його в архіві тут: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ схеми стандартів / e-gif / datastandards.aspx . Потрібно завантажити zip, витягнути його та відкрити default.htm у папці html.



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

Редагувати : додано пробіл


1
Чому б просто не використовувати VARCHAR 255 для всього, що є рядком? VARCHAR не використовує прокладку і закінчується додатковим одним або двома байтами.
radtek

варчар міг бути трохи повільним.
kta

1

Щойно дивлячись, мої архіви електронної пошти, є ряд досить довгих "перших" імен (звичайно, те, що мається на увазі під першим, змінюється культурою). Один із прикладів - Кришнамурті - довжиною 13 літер. Хороша здогадка може складати від 20 до 25 літер на основі цього. Електронна пошта повинна бути набагато довшою, оскільки у вас може бути firstname.lastname@somedomain.com. Крім того, gmail та деякі інші поштові програми дозволяють вам використовувати firstname.lastname+sometag@somedomain.com, де "sometag" - це все, що ви хочете розмістити там, щоб ви могли використовувати його для сортування вхідних листів. Я часто натрапляю на веб-форми, які не дозволяють мені вводити свою повну адресу електронної пошти, не враховуючи тегів. Отже, якщо вам потрібно фіксоване поле електронної пошти, можливо, щось на зразок 25,25+15@20,3 символів на загальну кількість 90 символів (якщо я правильно зробив математику!).


0

Зазвичай я йду з:

Ім'я : 30 символів
Прізвище : 30 символів
Електронна пошта : 50 символів
Адреса : 200 символів

Якщо мене турбують довгі поля для імен, то іноді я можу йти з 50 для полів імен, оскільки місця для зберігання в наші дні рідко є проблемою.


11
50 для електронної пошти? 254 - це максимум фактично
Марко

0

Якщо вам потрібно врахувати локалізацію (для тих, хто з нас за межами США!), І це можливо у вашому оточенні, я б запропонував:

Визначте типи даних для кожного компонента імені - ПРИМІТКА: деякі культури мають більше двох імен! Потім введіть тип повного імені,

Тоді локалізація стає простою (що стосується імен).

Те саме стосується адрес, BTW - різних форматів!


-1

це варчар правда? Тож не має значення, якщо ви використовуєте 50 або 25, краще будьте безпечні та використовуйте 50, тому я вважаю, що я вважаю, що найдовше, що я бачив, - це близько 19 років. Прізвища довші

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.