मुझे mySQL के बारे में पता नहीं है लेकिन SQL सर्वर में यह आपको फ़ील्ड को परिभाषित करने देगा ताकि उपयोग किए गए बाइट्स की कुल संख्या बाइट्स की कुल संख्या से अधिक हो जो वास्तव में रिकॉर्ड में संग्रहीत हो सके। यह बुरी बात है। जल्द या बाद में आपको एक पंक्ति मिलेगी जहां सीमा तक पहुंच गई है और आप डेटा सम्मिलित नहीं कर सकते हैं।
पंक्ति आकार सीमाओं पर विचार करने के लिए अपनी डेटाबेस संरचना को डिजाइन करना कहीं बेहतर है।
इसके अतिरिक्त हां, आप नहीं चाहते हैं कि लोग उस क्षेत्र में 200 अक्षर डालें जहां अधिकतम मान 10 होना चाहिए। यदि वे करते हैं, तो यह लगभग हमेशा खराब डेटा होता है।
आप कहते हैं, ठीक है, मैं इसे एप्लिकेशन स्तर पर सीमित कर सकता हूं। लेकिन डेटा सिर्फ एक आवेदन से डेटाबेस में नहीं मिलता है। कभी-कभी कई अनुप्रयोग इसका उपयोग करते हैं, कभी-कभी डेटा आयात किया जाता है और कभी-कभी इसे क्वेरी विंडो से मैन्युअल रूप से ठीक किया जाता है (उदाहरण के लिए कीमत में 10% जोड़ने के लिए सभी रिकॉर्ड्स अपडेट करें)। यदि डेटा के इन अन्य स्रोतों में से कोई भी आपके आवेदन में आपके द्वारा डाले गए नियमों के बारे में नहीं जानता है, तो आपके डेटाबेस में खराब, बेकार डेटा होगा। डेटाबेस अखंडता को डेटाबेस स्तर पर लागू किया जाना चाहिए (जो आपको डेटा दर्ज करने से पहले जांचने से रोकता नहीं है) या आपके पास कोई अखंडता नहीं है। इसके अलावा यह मेरा अनुभव रहा है कि जो लोग अपने डेटाबेस को डिजाइन करने के लिए बहुत आलसी हैं, वे वास्तव में आवेदन में सीमाएं डालने के लिए भी आलसी होते हैं और कोई डेटा अखंडता जांच नहीं होती है।
उनके पास डेटाबेस के लिए कोई शब्द नहीं है, जिसमें डेटा अखंडता नहीं है - बेकार।
लेकिन मुझे लंबाई 20 तक क्यों सेट करनी चाहिए? यदि कोई फर्क नहीं पड़ता है, तो मैं इसे सभी क्षेत्रों के लिए 255 पर सेट कर सकता हूं, है ना? – caw
मेरा संपादन देखें - मैं थोड़ा और विस्तार करता हूं। – OneNerd
धन्यवाद। तो यह भंडारण और प्रदर्शन converning कोई अंतर नहीं करता है, है ना? लेकिन यह उपयोगी हो सकता है, हालांकि, उदा। यदि आप लंबे समय तक रोकने के लिए तारों को काटना चाहते हैं। लेकिन अगर आप PHP में substr() या किसी अन्य भाषा में एक समान फ़ंक्शन का उपयोग करते हैं, तो आप इसे पहले भी प्राप्त कर सकते हैं !? – caw