Veritabanı alanları için standart uzunlukların listesi


394

Bir veritabanı tablosu tasarlıyorum ve bir kez daha kendime aynı aptal soruyu soruyorum: ad alanı ne kadar olmalı?

Adı, soyadı ve e-posta adresi gibi en yaygın alanlar için makul uzunluklarda bir liste var mı ?


1
Sadece adlarda alfa olmayan karakterlere izin verdiğinizden emin olun!
soyadında

3
Maksimum e-posta adresi uzunluğu için bkz. "Geçerli bir e-posta kimliğinin maksimum uzunluğu".
outis

2
Bir not: hem "ad" hem de "soyadı" gerektirmez. Benim gibi bazı insanların sadece bir adı vardır. (İspat: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai

Blog veya profile bağlantı gibi URL ne olacak?
AlikElzin-kilaka

İsim bu kadar uzunsa vidalı gintama.wikia.com/wiki/Jugem_Jugem
絢 瀬 絵 里

Yanıtlar:


34

W3C'nin önerisi:

Farklı geçmişlere sahip kişilerden adları kabul edecek bir form veya veritabanı tasarlıyorsanız, kendinize verilen ad ve soyadı için gerçekten ayrı alanlara ihtiyacınız olup olmadığını sormalısınız.

… Bazı kültürlerdeki isimlerin sizinkinden çok daha uzun olabileceğini unutmayın. … Veritabanınızdaki adlar için alan boyutunu sınırlamaktan kaçının . Özellikle, UTF-8'deki dört karakterli bir Japon adının dört bayta sığacağını varsaymayın - aslında 12'ye ihtiyacınız vardır.

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

Veritabanı alanları için, VARCHAR(255)aslında başka bir şey kullanmak için iyi bir neden bulamadığınız sürece güvenli bir varsayılan seçimdir. Tipik web uygulamaları için performans sorun oluşturmaz. Zamanından önce optimize etmeyin.


26
Bu soruyu sordumdan bu yana 10 yıl geçti. Kemerimin altında 10 yıllık bir tecrübeyle, sizinle aynı fikirde olmaya meyilliyim.
Patrick McElhaney

2
Bir zarfa 255 karakter uzunluğunda bir adı tam olarak nasıl basardınız?
Michael Potter

316

Veri tabanımı ABD'deki milyonlarca müşteriyle sorguladım.

  • Maksimum ad uzunluğu 46 idi. 50 ile devam ediyorum. (Tabii ki, bunların sadece 500'ü 25'in üzerindeydi ve hepsi veri ithalatının bu alanda fazladan önemsizliğe neden olduğu durumlardı.)

  • Soyadı , adla benzerdi.

  • E-posta adresleri en fazla 62 karakterden oluşabilir. Uzun olanların çoğu aslında noktalı virgülle ayrılmış e-posta adreslerinin listesiydi.

  • Sokak adresi en fazla 95 karakter olabilir. Uzun olanların hepsi geçerliydi.

  • Maksimum şehir uzunluğu 35 idi.

Bu, ABD'deki insanlar için iyi bir istatistiksel yayılım olmalıdır. Dikkate alınacak yerelleştirmeniz varsa, sayılar önemli ölçüde değişebilir.


4
Sizinkine kıyasla, erişebileceğim veritabanları küçük, ancak orada bile 138 karakterlik bir e-posta adresi buldum. Localpart bileşeni açıkça bir çeşit LDAP (veya AD?) Ayırt edici adıdır.
Bernd Jendrissek

2
Telefon numaralarına ne dersiniz?
ceving

@EricZBeard "Sokak adresi" bina numarasını içeriyor mu?
noɥʇʎԀʎzɐɹƆ

3
Veritabanınızdaki ortalama e-posta adresleri, öneri için iyi bir ölçü değildir. Bir e-posta adresinin maksimum geçerli uzunluğu 254 karakterdir ve veritabanında belirtilen uzunluk olmalıdır. Ek olarak, tek bir sütunda e-posta adresi listelerinin bulunması, verilerinizin normalleştirilmediğini gösterir ve bu nedenle yanıtınızı daha da geçersiz kılar.
Mario

1
@MGOwen Öncelikle, veritabanının amacını bilmiyorsunuz, belirli ayarlarda birisinin e-postalarının "çok uzun" olması gibi anlamsız bir sorun nedeniyle erişiminin reddedilmesi önemli bir sorun olabilir. İkinci olarak, yayınladığınız bağlantı "En uzun geçerli olan 89'dur" der, burada bunun 62 olduğu söylenir. Hangisi doğru? Sadece rasgele bir numara seçmek istiyorsanız veya adın adresin bir parçası olarak dahil edilmesi gibi geçerli bir nedeniniz varsa, para cezası. Bununla birlikte, şüpheye düştüğünüzde spesifikasyona başvurmanız hala makul. Hala "benim veritabanı maxes x" diyen tek bir kişinin anekdot olduğunu düşünüyorum.
Mario

170

İngiltere Hükümet Veri Standartları Kataloğu , bu tür şeyler için İngiltere standartlarını detaylandırmaktadır. Verilen Ad ve Soyadı'nın her biri için 35 karakter, Tam Adı tutmak için tek bir alan için 70 karakter ve bir e-posta adresi için 255 karakter önerir. Başka şeylerin yanında..


3
. * Gov.uk Ad "35 karakterden" ve bu doc bulundu: Sitede: link ihtiyaçları Eki 22, itibariyle güncellenmesi 2010. Ben googled justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R

20
Sadece bir düşünce ... bir alan olması gerektiği göz önüne alındığında, tek bir alandaki ad ve soyadı için 71 karakter olmamalı mı?
Joseph Redfern

8
Açıkça ara sıra uzun soyadını (en fazla 35 karakter) ve ara sıra uzun soyadını (en fazla 35 karakter) öngörüyorlar, ancak bireyin hem uzun soyadı hem de soyadı ile birleşmesini beklemiyorlar. Bu sadece açgözlü olurdu ;-)
Ian Nelson

6
Bay El Tahir El Fadil El Siddig Abderrahman Muhammed Ahmed Abdül Karim El Mahdi online formları doldururken tüm isimlerini gerçekten kullanırsa etkilenirim. İki tane orta adım var, ancak bunlardan sadece birini resmi (yani hükümet) formlar dışında kullanıyorum.
Leon

2
@ ian-nelson RFC 3696'ya göre e-posta uzunluğu: Bu sınır, "yerel kısımda" ("@" den önce) maksimum 64 karakter (sekizlik) ve alan adında (sonra) maksimum 255 karakterdir (sekizli) "@") toplam 320 karakter uzunluğunda olmalıdır. E-postaları işleyen sistemler, nadiren karşılaşılsa bile, bu kadar uzun adresleri işlemek için hazırlanmalıdır.
Piotr Nawrot

53

Bazıları muhtemelen doğru sütun uzunlukları

                            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

Kişisel isimler üzerinde uzun bir rant

Kişisel ad, bir Polinim (birden fazla sıralanabilir bileşene sahip bir ad ), bir Mononym (yalnızca bir bileşene sahip bir ad) veya bir Pictonym'dir (bir resim tarafından temsil edilen bir addır - bu Prens gibi kişilerden kaynaklanır).

Bir kişinin birden fazla adı olabilir, LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM vb. Rolleri olabilir. "Bir kişinin aynı anda yalnızca bir yasal adı olabilir, ancak birden fazla takma ad zamanında".

Bazı örnekler:

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

veya

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

veya

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

veya

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

Verilen adlar, ikinci adlar, soyadları "Billy Bob" Thornton, veya gibi birden fazla kelime olabilir Ralph "Vaughn Williams".


5
Bu çok bilgilendirici ama süper yararlı bir cevap değil. Bir dahaki sefere "muhtemelen doğru" cevaba ihtiyacım olduğunda size haber vereceğim.
n8bar

16

Ben yüksek tarafında hata söyleyebilirim. Muhtemelen varchar kullanacağınız için, izin verdiğiniz herhangi bir ekstra alan, birine ihtiyaç duymadıkça ekstra alan kullanmaz. İsimler için (ilk veya son), en az 50 karakter ve e-posta adresi için en az 128 olun diyebilirim. Orada gerçekten uzun e-posta adresleri var.

Yapmayı sevdiğim bir diğer şey ise Lipsum.com'a gidip bir metin üretmesini istemek. Bu şekilde 100 baytın neye benzediğine dair iyi bir fikir edinebilirsiniz.


6
Oh my - ilk büyük alan mutlaka daha fazla depolama alanı anlamına gelmez, bu nedenle varchar "var" anlamına gelir. NVarchar genellikle isimler için daha anlamlı olur.
Tao

Uygulamaya bağlıdır. VARCHAR UTF-8'i destekliyorsa NVARCHAR'a ihtiyacınız yoktur.
dan04

2
[N]Varcharboyutları do ancak, endeksler etkiler.
RBarryYoung

11

Diğer bir sayının müşteri için özel bir anlamı olduğu müşteriye dönük bir arayüz gibi, iyi bir neden olmadığı sürece hemen hemen her zaman 2 güç kullanıyorum.

2'nin gücüne bağlı kalırsanız, sınırlı bir dizi ortak boyutta tutarsınız, ki bu da kendisi iyi bir şeydir ve karşılaşabileceğiniz bilinmeyen nesnelerin boyutunu tahmin etmeyi kolaylaştırır. Bunu yapan çok sayıda insan görüyorum ve bu konuda estetik olarak hoş bir şey var. Bunu gördüğümde genellikle bana iyi bir his veriyor, tasarımcı bir mühendis veya matematikçi gibi düşünüyor. Gerçi sadece asal sayılar kullanılırsa endişelenirim. :)


3
2ⁿ - 1, 2ⁿ - 2 veya hatta 2ⁿ - 4, ikisinin daha iyi bir mühendislik kararı olması tartışılabilir çünkü çoğu kez dizeler sıfır indeksli karakter arayları olarak temsil edilir ve boş karakter, bayt veya iki bayt ile sonlandırılır (UTF-8 ). Ayrıca bir varcharta 255'in üzerinde bazı veritabanları için ek bir bayt depolama alanı gerekir (bkz. Stackoverflow.com/questions/2340639/… ).
Ceplerve

4

Aynı şeyi bulmak istedim ve kabul edilen cevapta belirtilen Birleşik Krallık Hükümet Veri Standartları ideal gibi geldi. Ancak bunların hiçbiri artık görünmüyordu - geniş bir aramadan sonra onu burada bir arşivde buldum: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/ schemasstandards / e-gif / datastandards.aspx . Zip dosyasını indirmeniz, ayıklamanız ve ardından html klasöründe default.htm dosyasını açmanız gerekir.



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

Düzenleme : Biraz boşluk eklendi


1
Neden sadece string olan her şey için VARCHAR 255 kullanmıyorsunuz? VARCHAR dolgu kullanmaz ve bir veya iki baytla sonlandırır.
radtek

varchar biraz yavaş olabilir.
kta

1

Sadece e-posta arşivlerime baktığımda, oldukça uzun "ilk" isimler var (elbette ilk olarak kastedilen şey kültüre göre değişkendir). Bir örnek Krishnamurthy'dir - 13 harf uzunluğundadır. İyi bir tahmin, buna dayanarak 20 ila 25 harf olabilir. E-posta adınız olabileceğinden e-posta çok daha uzun olmalıdır . İsim@somedomain.com. Ayrıca, gmail ve diğer bazı posta programları, firstname.lastname+sometag@somedomain.com adresini kullanmanıza izin verir, burada "sometag", buraya koymak istediğiniz herhangi bir şeydir, böylece gelen e-postaları sıralamak için kullanabilirsiniz. Sık sık, herhangi bir etiketi düşünmeden tam e-posta adresimi girmeme izin vermeyen web formlarıyla karşılaşıyorum. Yani, sabit bir e-posta alanına ihtiyacınız varsa, toplamda 90 karakter için 25.25+15@20.3 gibi bir şey olabilir (eğer matematik hakkımı yaptıysam!).


0

Ben genellikle:

Adı : 30 karakter
Soyadı : 30 karakter
E-posta : 50 karakter
Adres : 200 karakter

İsimler için uzun alanlar konusunda endişeliysem, bu günlerde depolama alanı nadiren sorun olduğundan, bazen ad alanları için de 50 ile gidebilirim.


11
50 e-posta için mi? 254 aslında maksimum
Marko

0

Yerelleştirmeyi (ABD dışındakiler için!) Düşünmeniz gerekiyorsa ve bu sizin ortamınızda mümkünse şunu öneririm:

Adın her bir bileşeni için veri türlerini tanımlayın - NOT: bazı kültürlerin ikiden fazla adı vardır! Sonra tam adı için bir tür var,

Daha sonra yerelleştirme basitleşir (isimler söz konusu olduğunda).

Aynı adresler, BTW - farklı formatlar için de geçerlidir!


-1

varchar değil mi? Bu nedenle, 50 veya 25 kullanmanız, güvende olmanız ve 50 kullanmanız daha önemli değil. Soyadları daha uzun

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.