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ı ?
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ı ?
Yanıtlar:
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.
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.
İ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..
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 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"
.
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.
[N]Varchar
boyutları do ancak, endeksler etkiler.
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. :)
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.
Bunlar birisi için yararlı olabilir;
youtube max channel length = 20
facebook max name length = 50
twitter max handle length = 15
email max length = 255
http://www.interoadvisory.com/2015/08/6-areas-inside-of-linkedin-with-character-limits/
+------------+---------------+---------------------------------+
| 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
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!).
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.
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!