आप किस "वचर (255) नियम" का जिक्र कर रहे हैं?
प्रत्येक डेटाबेस विक्रेता VARCHAR को लागू करने के लिए स्वतंत्र है, हालांकि वे चाहते हैं। जरूरी नहीं कि हर डेटाबेस के लिए VARCHAR के नियम (और दिशानिर्देश) समान हों।
जहाँ तक SQL मानक की बात है, मैंने वास्तव में इस पर ध्यान नहीं दिया है। यह बहुत ढीला हो सकता है, इसलिए सभी VARCHAR कार्यान्वयन सभी मानक के अनुपालन के लिए पाए जाते हैं। यदि VARCHAR के लिए SQL मानक वास्तव में सख्त है, तो DBMS विक्रेता या तो मानक का विस्तार कर सकते हैं, या बस अनुपालन नहीं कर सकते हैं। मुझे नहीं लगता कि वास्तविक मानक बहुत मायने रखता है। डीबीएमएस द्वारा लागू किए गए वास्तविक नियम क्या मायने रखते हैं।
जहां तक एक सामान्य दिशानिर्देश की बात है, एक VARCHAR लंबाई निर्दिष्ट करें जो सिस्टम आवश्यकताओं का समर्थन करने के लिए पर्याप्त हो। यदि सिस्टम की आवश्यकता 200 से अधिक वर्णों की अनुमति देने की है, तो मैं लंबाई को VARCHAR(200)
के रूप में निर्दिष्ट करूंगा .
एक अन्य सामान्य दिशानिर्देश के रूप में, VARCHAR लंबाई को परिभाषित न करें जो कि उनकी आवश्यकता से अधिक हो। आवश्यकता से अधिक लंबे घोषित किए गए VARCHAR कॉलम संसाधनों और प्रदर्शन पर प्रभाव डाल सकते हैं।
VARCHAR लंबाई के लिए Oracle की सीमा 4000 वर्ण है। (Oracle के पिछले संस्करणों में, अधिकतम 2000 था। यदि आपको 4000 से अधिक वर्णों की आवश्यकता है, तो आप CLOB
का उपयोग कर सकते हैं। डेटाटाइप।
SQL सर्वर की सीमा VARCHAR(8000)
. तक है , जब तक कि आप VARCHAR(MAX)
specify निर्दिष्ट न करें जो 2^32-1 के अधिकतम आकार (बाइट्स में) की अनुमति देता है।
MySQL की अधिकतम पंक्ति लंबाई सीमा के लिए 65,535 की सीमा है। ताकि utf8 जैसे मल्टीबाइट कैरेक्टरसेट का उपयोग करते हुए, प्रभावी रूप से VARCHAR के आकार को VARCHAR (21844) तक सीमित कर दिया जाए। सिंगल बाइट कैरेक्टरसेट (लैटिन 1 की तरह) के साथ, अधिकतम VARCHAR (65532) होगा। यदि आपको इससे अधिक वर्णों की आवश्यकता है, या आप अधिकतम पंक्ति लंबाई की सीमा में आते हैं, तो आप VARCHAR के बजाय TEXT डेटाटाइप का उपयोग कर सकते हैं।
अधिकांश DBMS VARCHAR कार्यान्वयन मूल्य के साथ VARCHAR कॉलम के लिए "लंबाई" फ़ील्ड संग्रहीत करते हैं। लंबाई को एक पूर्णांक के रूप में संग्रहीत किया जाता है।
कुछ DBMS में, यदि VARCHAR कॉलम की अधिकतम लंबाई (बाइट्स में) 255 बाइट्स से अधिक नहीं है, तो लंबाई फ़ील्ड को एकल बाइट पूर्णांक के रूप में लागू किया जा सकता है। यदि कॉलम 255 बाइट्स से अधिक की अनुमति देता है, तो लंबाई फ़ील्ड को एक बाइट से बड़ा होना चाहिए।
गतिशील पंक्ति स्वरूपों के साथ, पंक्ति भंडारण के संदर्भ में, एक कॉलम में 10 वर्णों को संग्रहीत करना, यह वास्तव में कोई फर्क नहीं पड़ता कि कॉलम को VARCHAR (30) या VARCHAR (1000) के रूप में परिभाषित किया गया है। निश्चित पंक्ति प्रारूपों के साथ, कॉलम की अधिकतम लंबाई के लिए स्थान आरक्षित किया जाएगा। पंक्ति भंडारण के लिए प्रारूप डीबीएमएस पर निर्भर करेगा, और कुछ मामलों में (MySQL) भंडारण इंजन और निर्दिष्ट पंक्ति प्रारूप पर निर्भर करेगा।
हां, यह 2016 है। और हम पहले वाणिज्यिक संबंधपरक डेटाबेस सिस्टम की शुरुआत के बाद से एक लंबा सफर तय कर चुके हैं।
डेटाबेस सिस्टम का केवल एक हिस्सा है। एप्लिकेशन या अन्य सॉफ़्टवेयर घटकों में सीमाएं हो सकती हैं। (यदि एप्लिकेशन सी में लिखा गया है, और एप्लिकेशन फ़ील्ड के लिए बाइट सरणी के साथ एक संरचना को परिभाषित कर रहा है, तो आकार की सीमा महत्वपूर्ण होने जा रही है। डेटाबेस में अनुमत आकार को बढ़ाने से एप्लिकेशन स्वचालित रूप से ठीक नहीं होगा ।
जावास्क्रिप्ट कोड में, या वेब पेज के HTML तत्वों में लंबाई सीमा/प्रतिबंध भी हो सकते हैं। या अन्य सॉफ़्टवेयर घटकों की सीमाएँ हो सकती हैं। उदाहरण के लिए, कुछ पुराने SQL सर्वर ODBC ड्राइवरों में CHAR और VARCHAR दोनों स्तंभों के लिए 255 वर्णों (बाइट्स?) की सीमा है।
तो डेटाबेस में VARCHAR की लंबाई कहानी का केवल एक हिस्सा है।
उस सब के साथ, मैं अभी भी स्पष्ट नहीं हूं कि आपका क्या मतलब है, जब आप पूछते हैं
क्या हम वचर (255) नियम तोड़ सकते हैं?
मैं सोच रहा हूं कि आप किस "नियम" का जिक्र कर रहे हैं। मुझे पता है कि अधिकांश डेटाबेस में, VARCHAR कॉलम को 255 बाइट्स या 255 वर्णों से अधिक लंबे समय तक परिभाषित करना संभव है। और ऐसा करने से कोई नियम नहीं टूटता।