Lista standardowych długości pól bazy danych

394

Projektuję tabelę bazy danych i jeszcze raz zadaję sobie to samo głupie pytanie: jak długie powinno być pole imienia?

Czy ktoś ma listę rozsądnych długości dla najbardziej popularnych pól , takich jak imię, nazwisko i adres e-mail?

Patrick McElhaney
źródło
1
Upewnij się tylko, że w nazwach dozwolone są znaki inne niż alfa! wskazuje na łącznik w swoim nazwisku
Chris Marasti-Georg
3
Zobacz „Maksymalna długość ważnego identyfikatora e-mail ”, aby uzyskać maksymalną długość adresu e-mail.
poza 16.04.11
2
Jedna uwaga: nie wymagaj zarówno „imienia”, jak i „nazwiska”. Niektórzy ludzie, jak ja, mają tylko jedno imię. (Dowód: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai
Co z adresem URL, takim jak blog lub link do profilu?
AlikElzin-kilaka
Pieprzone, jeśli nazwa jest tak długa jak ten gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Odpowiedzi:

34

Rekomendacja W3C:

Jeśli projektujesz formularz lub bazę danych, która będzie przyjmować nazwiska osób z różnych środowisk, powinieneś zadać sobie pytanie, czy naprawdę potrzebujesz osobnych pól dla imienia i nazwiska.

… Pamiętaj, że nazwy w niektórych kulturach mogą być znacznie dłuższe niż własne. … Unikaj ograniczania rozmiaru pola dla nazw w bazie danych . W szczególności nie zakładaj, że czteroznakowa japońska nazwa w UTF-8 zmieści się w czterech bajtach - prawdopodobnie będziesz potrzebować 12.

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

W przypadku pól bazy danych VARCHAR(255)jest to bezpieczny domyślny wybór, chyba że naprawdę możesz znaleźć dobry powód, aby użyć czegoś innego. W przypadku typowych aplikacji internetowych wydajność nie będzie stanowić problemu. Nie przedwcześnie optymalizuj.

jrc
źródło
26
Minęło 10 lat, odkąd zadałem to pytanie. Mając za sobą kolejne 10 lat doświadczenia, jestem skłonny się z tobą zgodzić.
Patrick McElhaney,
2
Jak dokładnie wydrukowałbyś na kopercie imię o długości 255 znaków?
Michael Potter
316

Właśnie zapytałem moją bazę danych z milionami klientów w USA.

  • Maksymalna długość imienia wynosiła 46. Idę z 50. (Oczywiście tylko 500 z nich miało ponad 25 lat, i wszystkie były przypadki, w których import danych powodował dodatkowe śmieci w tym polu).

  • Nazwisko było podobne do imienia.

  • Adresy e-mail mogą mieć maksymalnie 62 znaki. Większość dłuższych to tak naprawdę listy adresów e-mail oddzielone średnikami.

  • Maksymalny adres ulicy to 95 znaków. Wszystkie długie były ważne.

  • Maksymalna długość miasta wynosiła 35.

Powinno to stanowić przyzwoity rozkład statystyczny dla osób w USA. Jeśli masz do rozważenia lokalizację, liczby mogą się znacznie różnić.

Eric Z Beard
źródło
4
W porównaniu z twoimi, bazy danych, do których mam dostęp, są małe, ale nawet tam znalazłem adres e-mail o długości 138 znaków. Składnik localpart jest oczywiście jakąś nazwą wyróżniającą LDAP (lub AD?).
Bernd Jendrissek
2
A co z numerami telefonów?
ceving
@EricZBeard Czy „adres” zawiera numer domu?
noɥʇʎԀʎzɐɹƆ
3
Średnie długości adresów e-mail w bazie danych nie są dobrym miernikiem rekomendacji. Maksymalna poprawna długość adresu e-mail wynosi 254 znaków i powinna być długością określoną w bazie danych. Dodatkowo posiadanie list adresów e-mail w jednej kolumnie oznacza dla mnie, że twoje dane nie są znormalizowane, a tym samym unieważniają twoją odpowiedź.
Mario
1
@MGOwen Po pierwsze, nie znasz celu bazy danych, w niektórych ustawieniach ktoś odmawia dostępu z powodu niepoważnego problemu, takiego jak „zbyt długi” adres e-mail, może być poważnym problemem. Po drugie, opublikowany link mówi „Najdłużej ważna jest 89”, gdzie, jak to mówi, jest 62. Która ma rację? Jeśli chcesz tylko wybrać dowolny numer lub masz ważny powód, taki jak nazwa musi być podana jako część adresu, w porządku. Nadal jednak rozsądne jest, aby w razie wątpliwości odwołać się do specyfikacji. Nadal uważam, że jedna osoba mówiąca „maksimum mojej bazy danych w punkcie x” jest anegdotyczna.
Mario
170

Katalog standardów danych rządowych Wielkiej Brytanii wyszczególnia standardy brytyjskie dla tego rodzaju rzeczy. Sugeruje 35 znaków dla każdego imienia i nazwiska lub 70 znaków dla pojedynczego pola na pełne imię i 255 znaków dla adresu e-mail. Pośród innych rzeczy..

Ian Nelson
źródło
3
Link musi zostać zaktualizowany od 22 października 2010 r. Poszukałem wyszukiwarki: site: *. Gov.uk Imię „35 znaków” i znalazłem ten dokument justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R
20
Tylko myśl ... czy nie powinno to być 71 znaków dla imienia i nazwiska w jednym polu, biorąc pod uwagę, że musi być spacja?
Joseph Redfern,
8
Cóż, wyraźnie przewidują sporadyczne długie imię (do 35 znaków) i okazjonalne długie nazwisko (do 35 znaków), ale niekoniecznie oczekują osoby z kombinacją zarówno długiego imienia, jak i nazwiska. To byłoby po prostu zachłanne ;-)
Ian Nelson
6
Jeśli pan El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi faktycznie użyje wszystkich swoich nazwisk podczas wypełniania formularzy online, będę pod wrażeniem. Mam dwa drugie imiona, ale używam tylko jednego z nich poza oficjalnymi (tj. Rządowymi) formularzami.
Leon,
2
@ ian-nelson Długość e-maila zgodnie z RFC 3696: Limit ten wynosi maksymalnie 64 znaki (oktety) w „części lokalnej” (przed „@”) i maksymalnie 255 znaków (oktety) w części domeny (po „@”) o łącznej długości 320 znaków. Systemy obsługujące pocztę elektroniczną powinny być przygotowane do przetwarzania tak długich adresów, nawet jeśli są one rzadko spotykane.
Piotr Nawrot
53

Niektóre prawdopodobnie poprawiają długości kolumn

                            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

Długie oparcie na osobistych nazwiskach

Osobiste imię to albo Polynym (imię z wieloma sortowalnymi składnikami), Mononym (imię tylko z jednym składnikiem) lub Pictonym (imię reprezentowane przez obrazek - istnieje z powodu ludzi takich jak Prince).

Osoba może mieć wiele nazwisk, odgrywać role, takie jak PRAWNE, MORSKIE, MAIDEN, PREFEROWANE, SOBRIQUET, PSEUDONYM itp. Możesz mieć reguły biznesowe, takie jak „osoba może mieć tylko jedną legalną nazwę na raz, ale wiele pseudonimów na czas".

Kilka przykładów:

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

lub

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

lub

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

lub

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

Nadane imiona, drugie imiona i nazwiska mogą składać się z wielu słów, takich jak "Billy Bob" Thornton, lub Ralph "Vaughn Williams".

Neil McGuigan
źródło
5
To bardzo pouczająca, ale nie bardzo przydatna odpowiedź. Następnym razem, gdy potrzebuję odpowiedzi „prawdopodobnie poprawnej”, dam ci znać.
n8bar 27.04.16
16

Powiedziałbym, że popełniam błąd z wysokiej strony. Ponieważ prawdopodobnie będziesz używać varchar, wszelkie dodatkowe miejsce, na które pozwolisz, nie zużyje żadnego dodatkowego miejsca, chyba że ktoś go potrzebuje. Powiedziałbym, że w przypadku nazwisk (pierwszych lub ostatnich) wpisz przynajmniej 50 znaków, a dla adresu e-mail ustaw przynajmniej 128. Istnieje kilka naprawdę długich adresów e-mail.

Inną rzeczą, którą lubię, jest przejście do Lipsum.com i poproszenie go o wygenerowanie tekstu. W ten sposób możesz dowiedzieć się, jak wygląda 100 bajtów.

Kibee
źródło
6
O rany - pierwsza osoba, która zauważyła, że ​​większe pola niekoniecznie oznaczają więcej miejsca do przechowywania, stąd „var” w varchar. NVarchar zwykle ma jednak większy sens w przypadku nazw.
Tao,
Zależy od wdrożenia. Nie potrzebujesz NVARCHAR, jeśli VARCHAR obsługuje UTF-8.
dan04,
2
[N]Varcharrozmiary mają jednak wpływ na twoje indeksy.
RBarryYoung
11

Prawie zawsze używam potęgi 2, chyba że istnieje dobry powód, aby tego nie robić, na przykład interfejs skierowany do klienta, w którym jakiś inny numer ma specjalne znaczenie dla klienta.

Jeśli trzymasz się potęg 2, utrzymasz to w ograniczonym zestawie wspólnych rozmiarów, co samo w sobie jest dobrą rzeczą i ułatwia odgadnięcie rozmiaru nieznanych obiektów, które możesz napotkać. Widzę, że robi to wiele innych osób, i jest w tym coś przyjemnego pod względem estetycznym. Na ogół daje mi to dobre wrażenie, kiedy to widzę, oznacza to, że projektant myślał jak inżynier lub matematyk. Chociaż pewnie byłbym zaniepokojony, gdyby zastosowano tylko liczby pierwsze. :)

Mikrofon
źródło
3
Można argumentować, że 2ⁿ - 1, 2ⁿ - 2 lub nawet 2ⁿ - 4, dwa byłyby lepszą decyzją inżynieryjną, ponieważ często łańcuchy są reprezentowane jako ciągi znaków o indeksie zerowym i zakończone znakiem zerowym, bajtem lub dwoma bajtami (UTF-8 ). Również w przypadku niektórych baz danych powyżej 255 na varchar wymaga dodatkowego bajtu do przechowywania (patrz stackoverflow.com/questions/2340639/... ).
Kieszenie i
4

Chciałem znaleźć to samo, a standardy danych rządu brytyjskiego wymienione w przyjętej odpowiedzi brzmiały idealnie. Wydaje się jednak, że żaden z nich już nie istnieje - po rozszerzonym wyszukiwaniu znalazłem go w archiwum tutaj: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards / e-gif / datastandards.aspx . Musisz pobrać plik zip, rozpakować go, a następnie otworzyć plik default.htm w folderze HTML.

Steve Chambers
źródło
2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

Edycja : Dodano pewne odstępy

Micheal Mouner Mikhail Youssif
źródło
1
Dlaczego nie użyć VARCHAR 255 do wszystkiego, co jest łańcuchem? VARCHAR nie używa wypełniania i kończy się dodatkowym jednym lub dwoma bajtami.
radtek
varchar może być trochę powolny.
kta
1

Patrząc tylko na moje archiwa e-mail, istnieje wiele dość długich „pierwszych” imion (oczywiście to, co oznacza „pierwszy”, jest zmienne w zależności od kultury). Jednym z przykładów jest Krishnamurthy - który ma 13 liter. Na tej podstawie można zgadywać od 20 do 25 liter. E-mail powinien być znacznie dłuższy, ponieważ możesz mieć imię[email protected]. Ponadto Gmail i niektóre inne programy pocztowe pozwalają na używanie [email protected], gdzie „somag” to wszystko, co chcesz tam umieścić, abyś mógł użyć go do sortowania przychodzących wiadomości e-mail. Często spotykam się z formularzami internetowymi, które nie pozwalają mi podać pełnego adresu e-mail bez uwzględnienia jakichkolwiek tagów. Tak więc, jeśli potrzebujesz stałego pola e-mail, może coś takiego jak 25,25 +15@20,3 znaków w sumie 90 znaków (jeśli poprawnie wykonałem matematykę!).

Loren Charnley
źródło
0

Zwykle idę z:

Imię : 30 znaków
Nazwisko : 30 znaków
E - mail : 50 znaków
Adres : 200 znaków

Jeśli martwię się długimi polami na nazwy, czasami mogę również wybrać 50 dla nazw, ponieważ miejsce do przechowywania rzadko stanowi obecnie problem.

kaybenleroll
źródło
11
50 na e-mail? 254 to maksimum
Marko
0

Jeśli potrzebujesz rozważyć lokalizację (dla tych z nas poza USA!) I jest to możliwe w twoim środowisku, sugeruję:

Zdefiniuj typy danych dla każdego składnika nazwy - UWAGA: niektóre kultury mają więcej niż dwie nazwy! Następnie wpisz typ pełnej nazwy,

Następnie lokalizacja staje się prosta (jeśli chodzi o nazwy).

To samo dotyczy adresów, BTW - różne formaty!

ColinYounger
źródło
-1

to jest varchar, prawda? Zatem nie ma znaczenia, czy użyjesz 50 czy 25, lepiej bądź bezpieczny i użyj 50, co oznacza, że ​​wierzę, że najdłuższy, jaki widziałem, to około 19 lub więcej. Nazwiska są dłuższe

SQLMenace
źródło