Kişi "Adı" alanlarında makul bir uzunluk sınırı nedir?


138

Kimliği doğrulanmamış kullanıcıların ad dahil bilgilerini girmelerine olanak tanıyan basit bir web formum var. Alanın varchar (50) olduğu veritabanı tabloma denk gelmesi için isim alanına 50 karakterlik bir sınır verdim, ama sonra merak etmeye başladım.

Metin sütun türü gibi bir şey kullanmak daha uygun mu yoksa adın uzunluğunu makul bir şeyle mi sınırlamalıyım?

Yanıtınızda önemli olan durumlarda SQL Server 2005 kullanıyorum.

EDIT: Ben benzer konularda bu daha geniş bir soru görmedim .


1
Konuyla ilgili çok sayıda tartışma için bu ilgili soruyu kontrol edin .
Chris Marasti-Georg

2
Dikkat edilmesi gereken bir şey, bu küreselleşme çağında varchar genellikle doğru veri tipi DEĞİLDİR, nvarchar kullanmalısınız.
Tao

@Tao: MS SQL Server kullandığı için katılıyorum. Ancak VARCHAR , UTF-8 için daha iyi desteği olan diğer SQL uygulamalarında doğru veri tipidir .
dan04

Yanıtlar:


142

Birleşik Krallık Hükümet Veri Standartları Kataloğu , Verilen Ad ve Soyadı'nın her biri için 35 karakter veya Tam Adı tutmak için tek bir alan için 70 karakter önerir.


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

Onların bağlantılar 8/2012 itibariyle ... gerçekten kötü görünmektedir: webarchive.nationalarchives.gov.uk/+/http://...
Thomas B

6
Bulduğum en uzun "makul" tam adı "Gisele Marie-Louise Marguerite LaFleche" (39 bayt uzunluğunda).
user1154664

Biraz daha büyük 54 karakter: gw.geneanet.org/…
mestachs

3
Yeni Zelanda tam adları sınırlar: boşluklar da dahil olmak üzere 100 karakterden kısa olmalı ve sembol veya sayı içeremez. Yine de aile isimlerinde tirelere izin verilir.
Glutnix

27

Bu konuda geç kaldığımı biliyorum, ama yine de bu yorumu ekleyeceğim, çünkü diğerleri gelecekte benzer sorularla buraya gelebilir.

Yerel ayara bağlı olarak sütun boyutlarını değiştirmekten kaçının. Başlangıç ​​olarak, insanların göç ettiği gerçeğini bir kenara bırakarak ve isimlerini onlarla birlikte götüren bir bakım kabusu için sizi kurar.

Örneğin, bu soyadı olan İspanyollar İngilizce konuşulan bir ülkeye gidip yaşayabilir ve tam adlarının kullanılmasını bekleyebilirler. Rusların soyadlarına ek olarak soyadı vardır, bazı Afrika isimleri çoğu Avrupa isminden önemli ölçüde daha uzun olabilir.

Potansiyel satır sayısını göz önünde bulundurarak, her sütunu mümkün olduğunca geniş hale getirin. Her biri ad, soyadı ve soyadı için 40 karakter kullanıyorum ve hiç sorun bulamadım.


Bir süre olsa bile cevap için teşekkürler.
EndangeredMassa

9

Genellikle varchar (255) ile gidiyorum (255 MySQL'de bir varchar tipinin maksimum uzunluğu).


30
Ayrıca GUI'lerinizde ve ad / soyadının görüntülendiği diğer ortamlarda 255 karakterlik alan ayırıyor musunuz? ;-)
AndrewBourgeois

2
Eskiden "Neden her zaman varchar (255) kullanmıyorsunuz?" Artık uzunluk kısıtlamalarının çoğunlukla kullanıcı arayüzü için olduğunu ve tasarımcıların kullanıcı arayüzlerini tasarlarken bağımlı olabileceği kısıtlamaların, veritabanında çok fazla yer kaplamasıyla ilgili olduğunu anlıyorum.
JDG

6

Bir alanda tam adı varsa, genellikle ayrı alanlarda ilk ve son olarak 128 - 64/64 ile giderim - asla bilemezsiniz.


6

@Ian Nelson: Başkalarının sorunu görüp görmediğini merak ediyorum.

Diyelim ki bölünmüş alanlarınız var. Toplam 70 karakter, ad için 35 ve soyadı için 35 karakter. Ancak, bir alanınız varsa, ad ve soyadları ayıran alanı ihmal edersiniz, kısa bir süre sizi 1 karakter değiştirir. Tabii, bu sadece bir karakter, ama bu tam adını girip girmeyen biri arasındaki farkı yaratabilir. Bu nedenle, bu öneriyi "Verilen Ad ve Soyadı'nın her biri için 35 karakter veya Tam Adı tutmak için tek bir alan için 71 karakter" olarak değiştirirdim.


2
Bu belgeyi takip etmenin amacı, diğer İngiltere hükümet sistemleriyle birlikte çalışabilmenizdir, bu nedenle 70'den 71'e kadar ayrı ayrı çarpıp bir gün diyemezsiniz, aksi takdirde 70 karakter sınırına sahip sistemler metninizi keser. (Verileri kendi sisteminizde her iki formda da saklamanız gerekmez.) Tam Adı sadece Aile / Verilen değil, aynı zamanda her biri 35 karakter sınırına sahip Başlık ve Sonek'i de içerdiğinden, daha da kötüleşir. eklenen alanlarda eğlence dolu 143 maksimum karakter. Her iki ad depolama alanı ile veri alışverişi yapmak zorunda olan geliştirici olmak berbat.
mmitchell

3
Açıkçası rehberlik, bir bireyin uzun bir Verilen Adı (35 karaktere kadar) veya uzun bir Aile Adı (35 karaktere kadar) olabileceği, ancak adın İKİ parçalarının çok uzun olması beklentisiyle yazılmıştır.
Ian Nelson

3

İngiltere'de, İngiltere nüfusunun büyük bir kısmı ile başarılı bir şekilde ilgilenen birkaç hükümet standardı vardır - Pasaport Ofisi, Sürücü ve Araç Lisanslama Ajansı, Tapu Anketi ofisi ve NHS. Açıkçası farklı standartlar kullanıyorlar.

Tapu Anket ile isminizi değiştirmek 300 karaktere izin verir ;

Adınızın uzunluğu için yasal bir sınır yoktur, ancak tam adınız için 300 karakterlik (boşluklar dahil) bir sınır koyarız.

NHS hasta adları için 70 karakter kullanır

HASTA ADI
Biçim / uzunluk: maks. An70

Pasaport Ofisi 30 + 30 ilk / son izin verir ve Ehliyet (DVLA) toplam 30.

Diğer kuruluşların, ürettikleri belgelerde ne gösterecekleri konusunda kendi kısıtlamalarına sahip olacaklarını unutmayın - HM Passport Office için sınır, adınız ve soyadınız için her biri 30 karakterdir ve DVLA için sınırınız, Ad Soyad.



2

Gerçekten sorduğunuz şey, ilgili, ancak oldukça farklı bir sorudur: İsimleri veritabanına sığdırmak için ne sıklıkta kısaltmak isterim? Cevap, hem farklı ad uzunluklarının sıklığına hem de seçilen maksimum uzunluklara bağlıdır. Bu endişe, veri tabanı tarafından kullanılan kaynaklar hakkındaki endişelerle dengelenmektedir. Bir varchar alanı için farklı maksimum uzunluklar arasında ne kadar az havai fark olduğu düşünüldüğünde, genellikle bir ismi kısaltmaya ve alanı cesaret ettiğim kadar büyütmeye zorlanmadığı için genellikle hata yapardım.


1

Birçok kültürün genellikle aile isimleri olarak adlandırılan 'ikinci soyadları' . Örneğin, İspanyollarla uğraşıyorsanız, soyadlarından ayrı bir soyadı olmasını takdir edeceklerdir.

En iyi bahis, ad bileşenleri için bir veri türü tanımlamak, soyadı için bir veri türü için bunları kullanmak ve yerel ayara göre değişiklik yapmaktır.


İstatistiksel olarak daha küçük değerlere sahip yerel ayarlarda sınırları daha küçük hale getirmenin bir avantajı yoktur - bazı değerler gerçekte izin verilen ekstra karakterleri almadığı sürece alanın boyutu, alınan alanı etkilemez (ve bu zaten doğru seçimi yaptığınız anlamına gelir) !
Tao

0

Ortalama ad yaklaşık 6 harftir. Bu soyad için 43 bırakır. :) İsterseniz muhtemelen kısaltabilirsiniz gibi görünüyor.

Ana soru kaç sıra olacağını düşünüyorsunuz? Varchar'ın (50) birkaç milyon satır alana kadar seni öldüreceğini sanmıyorum.


6
Bir varchar (20) sütununda 10 ile 15 karakter arasında 50 milyon değeriniz ve varchar (50) sütununda aynı 50 milyon değeriniz varsa, bunlar tamamen aynı alanı kaplar. Char'ın aksine varchar'ın bütün mesele bu.
Tao


0

veri tabanınızı kimin kullanacağına bağlı olarak, örneğin Afrika adları soyadı ve ad ayrılmış için varchar (20) ile yapılır. ancak ulustan ulusa farklıdır, ancak veritabanı kaynaklarınızı ve hafızanızı kurtarmak için soyadı ve ad alanlarını ayırın ve varchar (30) kullanmanın işe yarayacağını düşünün.

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.