2008-08-27 17 views
124

मेरे पास एक साधारण वेबफॉर्म है जो अनधिकृत उपयोगकर्ताओं को नाम सहित अपनी जानकारी इनपुट करने की अनुमति देगा। मैंने नाम फ़ील्ड को 50 डेटाबेस की सीमा दी है जो मेरी डेटाबेस तालिका के साथ मेल खाता है जहां फ़ील्ड वर्कर (50) है, लेकिन फिर मुझे आश्चर्य हुआ।व्यक्ति "नाम" फ़ील्ड पर उचित लंबाई सीमा क्या है?

क्या टेक्स्ट कॉलम प्रकार की तरह कुछ उपयोग करना उचित है या क्या मुझे नाम की लंबाई को कुछ उचित तक सीमित करना चाहिए?

मैं आपकी प्रतिक्रिया में महत्वपूर्ण मामले में SQL Server 2005 का उपयोग कर रहा हूं।

संपादित करें: मुझे इसी तरह के मुद्दों के बारे में this broader question नहीं देखा गया था।

+2

वैश्वीकरण की इस युग में, कुछ आम तौर पर सही डेटाटाइप नहीं है, संभावना है कि आपको nvarchar का उपयोग करना चाहिए। – Tao

+0

@ टाओ: चूंकि वह एमएस एसक्यूएल सर्वर का उपयोग कर रहा है, मैं सहमत हूं। लेकिन VARCHAR * * अन्य एसक्यूएल कार्यान्वयन में सही डेटाटाइप है जिसमें यूटीएफ -8 के लिए बेहतर समर्थन है। – dan04

+1

विषय पर बहुत सी चर्चा के लिए [इस संबंधित प्रश्न] की जांच करें (http://stackoverflow.com/questions/20958/list-of- मानक- लम्बाई-for-डेटा-fields#21012)। –

उत्तर

127

UK Government Data Standards Catalogue पूर्ण नाम रखने के लिए दिए गए प्रत्येक नाम और परिवार के नाम के लिए 35 वर्ण, या एक फ़ील्ड के लिए 70 वर्ण सुझाता है।

+3

लिंक को 22 अक्टूबर, 2010 तक अपडेट करने की आवश्यकता है। मैं इसके लिए googled: साइट: *। Gov.uk नाम "35 वर्ण" और इस दस्तावेज़ को https://www.justice.gov मिला।यूके/मार्गदर्शन/दस्तावेज़/चुनावी-reg-standard.pdf –

+0

उनके लिंक वास्तव में खराब लगते हैं ... 8/2012: http://webarchive.nationalarchives.gov.uk/+/http:// www.cabinetoffice.gov.uk/media/254290/GDS%20Catalogue%20Vol%202.pdf –

+5

मुझे पाया गया सबसे लंबा "उचित" पूरा नाम "गिसेले मैरी-लुईस मार्गुराइट लाफ्लेचे" (3 9-बाइट-लम्बाई) है। – user1154664

6

यदि यह एक क्षेत्र में पूरा नाम का उपयोग करें, मैं आमतौर पर 128 के साथ जाने - अलग क्षेत्रों में पहली और आखिरी के लिए 64/64 - तुम सिर्फ कभी पता नहीं।

9

मैं आमतौर पर वर्कर (255) (255 माईएसक्यूएल में वर्चर प्रकार की अधिकतम लंबाई) के साथ जाता हूं।

+20

और क्या आप अपने जीयूआई और अन्य मीडिया में 255 अक्षरों की जगह भी आरक्षित करते हैं जहां पहला/अंतिम नाम प्रदर्शित होता है? ;-) – AndrewBourgeois

1

औसत पहला नाम लगभग 6 अक्षरों का है। यह अंतिम नाम के लिए 43 छोड़ देता है। :) ऐसा लगता है कि यदि आप चाहें तो शायद इसे छोटा कर सकते हैं।

मुख्य प्रश्न यह है कि आपको लगता है कि आपके पास कितनी पंक्तियां होंगी? मुझे नहीं लगता कि वर्कर (50) आपको मारने जा रहा है जब तक कि आपको कई मिलियन पंक्तियां न मिलें।

+5

यदि आपके पास वर्चर (20) कॉलम में 10 और 15 वर्णों के बीच 50 मिलियन मान हैं, और वर्चर (50) कॉलम में 50 मिलियन मान हैं, तो वे बिल्कुल वही स्थान ले लेंगे। चार के विपरीत, वक्रार का यह पूरा बिंदु है। – Tao

+0

@ टाओ देखें http://stackoverflow.com/questions/11132357/varchar20-and-varchar50-are-same –

5

@ इयान नेल्सन: मैं सोच रहा हूं कि अन्य लोग समस्या को देखते हैं या नहीं।

मान लें कि आपके पास विभाजित फ़ील्ड हैं। यह 70 वर्ण कुल है, 35 पहले नाम के लिए 35 और अंतिम नाम के लिए 35। हालांकि, यदि आपके पास एक फ़ील्ड है, तो आप उस स्थान को अनदेखा करते हैं जो पहले और अंतिम नामों को अलग करता है, जो आपको 1 वर्ण से छोटा बदलता है। निश्चित रूप से, यह "केवल" एक चरित्र है, लेकिन इससे किसी के बीच अपना पूरा नाम दर्ज करने और किसी के बीच अंतर नहीं हो सकता है। इसलिए, मैं उस सुझाव को "प्रत्येक नाम और परिवार के नाम के लिए 35 वर्ण, या पूर्ण नाम रखने के लिए एक फ़ील्ड के लिए 71 वर्ण" में बदल दूंगा।

+2

उस दस्तावेज़ का पालन करने का बिंदु यह है कि आप अन्य यूके सरकार प्रणालियों के साथ अंतःक्रियाशील हैं, इसलिए आप 70 से 71 तक व्यक्तिगत रूप से टक्कर नहीं डाल सकते हैं और इसे एक दिन बुला सकते हैं, अन्यथा 70 char सीमा वाले सिस्टम आपके टेक्स्ट को काट देंगे । (आपको डेटा को अपने सिस्टम के भीतर दोनों रूपों में स्टोर नहीं करना चाहिए।) यह वास्तव में बदतर हो जाता है, क्योंकि पूर्ण नाम में केवल परिवार/दिया गया नहीं है, बल्कि शीर्षक और प्रत्यय भी है, जिसमें प्रत्येक के लिए 35 चार सीमाएं भी हैं संलग्न क्षेत्रों में एक मजेदार भरे 143 अधिकतम वर्ण। डेवलपर बनने के लिए बेकार है जिसे नाम भंडारण के दोनों रूपों के साथ डेटा का आदान-प्रदान करना है। – mmitchell

+3

स्पष्ट रूप से मार्गदर्शन अपेक्षा से लिखा गया है कि एक व्यक्ति के पास लंबे समय तक दिया गया नाम (35 वर्ण तक) या एक लंबा परिवार का नाम (35 वर्ण तक) हो सकता है, लेकिन नाम के दोनों भाग इतने लंबे होने की संभावना नहीं है। –

1

ध्यान दें कि कई संस्कृतियां में 'दूसरा उपनाम' अक्सर परिवार के नाम कहा जाता है। उदाहरण के लिए, यदि आप स्पैनिश लोगों से बात कर रहे हैं, तो वे परिवार के नाम को 'उपनाम' से अलग करने की सराहना करेंगे।

सर्वश्रेष्ठ शर्त नाम घटकों के लिए डेटा प्रकार को परिभाषित करना है, उपनाम के लिए डेटा प्रकार के लिए उन लोगों का उपयोग करें और लोकेल के आधार पर ट्विक करें।

+0

स्थानीय स्तर पर सीमाओं को कम करने का कोई फायदा नहीं है, जो सांख्यिकीय रूप से छोटे मान हैं - फ़ील्ड का आकार उस स्थान को प्रभावित नहीं करता है, जब तक कि कुछ मूल्य वास्तव में उन अतिरिक्त अनुमत वर्णों को नहीं ले लेते (और फिर इसका मतलब है कि आपने वैसे भी सही विकल्प बनाया है)! – Tao

2

आप जो वास्तव में पूछ रहे हैं वह एक संबंधित है, लेकिन काफी अलग सवाल है: मैं डेटाबेस में फिट करने के लिए कितनी बार नामों को छोटा करना चाहता हूं? उत्तर नामों की विभिन्न लंबाई की आवृत्ति और साथ ही अधिकतम लंबाई चयनित पर निर्भर करता है। यह चिंता डेटाबेस द्वारा उपयोग किए जाने वाले संसाधनों के बारे में चिंताओं से संतुलित है। एक वर्चर फील्ड के लिए अलग-अलग अधिकतम लंबाई के बीच कितना छोटा ओवरहेड अंतर होता है, इस पर विचार करते हुए कि मैं आम तौर पर किसी नाम को छोटा करने के लिए मजबूर नहीं होने के पक्ष में गलती करता हूं और जितना बड़ा था उतना बड़ा क्षेत्र बना देता हूं।

25

मुझे पता है कि मुझे इस पर देर हो चुकी है, लेकिन मैं इस टिप्पणी को वैसे भी जोड़ दूंगा, क्योंकि अन्य भविष्य में इसी तरह के प्रश्नों के साथ यहां आ सकते हैं।

लोकेल पर निर्भर कॉलम आकारों से सावधान रहें। शुरुआत के लिए, यह आपको एक रखरखाव दुःस्वप्न के लिए सेट करता है, जिससे तथ्य निकलता है कि लोग माइग्रेट करते हैं, और उनके नाम उनके साथ लेते हैं।

उदाहरण के लिए, उन अतिरिक्त उपनामों वाले स्पेनिश लोग अंग्रेजी बोलने वाले देश में जा सकते हैं और रह सकते हैं, और उचित रूप से उनके पूर्ण नाम का उपयोग करने की उम्मीद कर सकते हैं। रूसियों के उपनामों के अलावा पेटोनिक्स है, कुछ अफ्रीकी नाम अधिकांश यूरोपीय नामों की तुलना में काफी लंबा हो सकते हैं।

संभावित कॉल गिनती को ध्यान में रखते हुए प्रत्येक कॉलम को व्यापक रूप से करने के साथ जाएं। मैं पहले नाम, अन्य दिए गए नाम और उपनाम के लिए प्रत्येक 40 वर्णों का उपयोग करता हूं और कभी भी कोई समस्या नहीं मिली है।

+0

उत्तर के लिए धन्यवाद, भले ही यह थोड़ी देर हो। – EndangeredMassa

0

जो आपके डेटाबेस का उपयोग करने जा रहा है, इस पर निर्भर करता है, उदाहरण के लिए अफ्रीकी नाम अंतिम नाम के लिए वर्कर (20) के साथ करेंगे और पहला नाम अलग होगा। हालांकि यह देश से राष्ट्र से अलग है, लेकिन आपके डेटाबेस संसाधनों और स्मृति को बचाने के लिए, अंतिम नाम और पहले नाम फ़ील्ड को अलग करने और वर्चर (30) का उपयोग करने के लिए सोचें कि यह काम करेगा।

3

यूके में, कुछ सरकारी मानदंड हैं जो ब्रिटेन की आबादी - पासपोर्ट कार्यालय, चालक & वाहन लाइसेंसिंग एजेंसी, डीड पोल कार्यालय और एनएचएस के साथ सफलतापूर्वक सौदा करते हैं। वे स्पष्ट रूप से विभिन्न मानकों का उपयोग करते हैं।

डीड पोल allows 300 characters द्वारा अपना नाम बदलना;

आपके नाम की लंबाई पर कोई कानूनी सीमा नहीं है, लेकिन हम आपके पूर्ण नाम के लिए 300 वर्णों (रिक्त स्थान सहित) की सीमा लगाते हैं।

NHS uses 70 characters for patient names

रोगी नाम
स्वरूप/लंबाई: अधिकतम an70

पासपोर्ट कार्यालय allows 30+30 first/last और ड्राइविंग लाइसेंस (DVLA) कुल 30 है।

ध्यान दें कि अन्य संगठनों है कि वे क्या दस्तावेजों वे उत्पादन पर दिखाई देगा के बारे में अपने स्वयं के प्रतिबंध होगा - सीमा एचएम पासपोर्ट कार्यालय के लिए अपने पूर्व नाम और अपने उपनाम के लिए प्रत्येक 30 अक्षर है, और DVLA के लिए सीमा नहीं है आपके पूर्ण नाम के लिए कुल 30 वर्ण।