जब मैं आरडीबीएमएस के लिए डेटाबेस मॉडल की समीक्षा करता हूं, तो मुझे आमतौर पर कोई अड़चन नहीं मिलती है (एक तरफ पीके / एफके)। उदाहरण के लिए, प्रतिशत अक्सर प्रकार के कॉलम में संग्रहीत किया जाता है int
(जबकि tinyint
अधिक उपयुक्त होगा) और CHECK
मान को 0..100 सीमा तक सीमित करने के लिए कोई बाधा नहीं है । SE.SE पर इसी तरह, जांच की कमी का सुझाव दे जवाब अक्सर प्राप्त टिप्पणियों सुझाव है कि डेटाबेस की कमी के लिए गलत जगह है।
जब मैं बाधाओं को लागू नहीं करने के निर्णय के बारे में पूछता हूं, तो टीम के सदस्य जवाब देते हैं:
या तो वे यह भी नहीं जानते कि उनके पसंदीदा डेटाबेस में ऐसी विशेषताएं मौजूद हैं। यह केवल ओआरएम का उपयोग करने वाले प्रोग्रामर से समझा जा सकता है, लेकिन डीबीए से बहुत कम है जो किसी दिए गए आरडीबीएमएस के साथ 5+ वर्ष का अनुभव होने का दावा करते हैं।
या कि वे आवेदन स्तर पर ऐसी बाधाओं को लागू करते हैं, और डेटाबेस में उन नियमों की नकल करना एक अच्छा विचार नहीं है, SSOT का उल्लंघन है।
हाल ही में, मैं अधिक से अधिक परियोजनाओं को देखता हूं जहां विदेशी कुंजी का भी उपयोग नहीं किया जाता है। इसी तरह, मैंने एसईएसई पर यहां कुछ टिप्पणियां देखी हैं जो दिखाती हैं कि उपयोगकर्ताओं को संदर्भात्मक अखंडता के बारे में अधिक परवाह नहीं है, जिससे एप्लिकेशन को इसे संभालने में मदद मिलती है।
टीम से FKs का उपयोग न करने के विकल्प के बारे में पूछने पर, वे बताते हैं कि:
यह PITA है, उदाहरण के लिए जब किसी को एक तत्व को निकालना होता है जिसे अन्य तालिकाओं में संदर्भित किया जाता है।
NoSQL चट्टानों, और वहाँ कोई विदेशी चाबियाँ नहीं हैं। इसलिए, हमें RDBMS में उनकी आवश्यकता नहीं है।
यह प्रदर्शन के मामले में एक बड़ी बात नहीं है (संदर्भ आमतौर पर छोटे डेटा सेट पर काम करने वाले छोटे इंट्रानेट वेब अनुप्रयोग हैं, इसलिए वास्तव में, यहां तक कि अनुक्रमित भी बहुत अधिक नहीं होगा; कोई भी परवाह नहीं करेगा यदि दिए गए क्वेरी का प्रदर्शन 1.5 एस से गुजरता है; । 20 से.मी.)
जब मैं स्वयं आवेदन देखता हूं, तो मैं व्यवस्थित रूप से दो पैटर्न देखता हूं:
एप्लिकेशन डेटा को ठीक से साफ करता है और डेटाबेस में भेजने से पहले उसकी जांच करता है। उदाहरण के लिए,
102
आवेदन के माध्यम से एक मूल्य को प्रतिशत के रूप में संग्रहीत करने का कोई तरीका नहीं है ।अनुप्रयोग मानता है कि डेटाबेस से आने वाला सभी डेटा पूरी तरह से मान्य है। यही है, अगर
102
प्रतिशत के रूप में आता है, तो या तो कुछ, कहीं दुर्घटनाग्रस्त हो जाएगा, या इसे केवल उसी तरह प्रदर्शित किया जाएगा जैसा कि उपयोगकर्ता को होता है, जिससे अजीब स्थिति पैदा होती है।जबकि 99% से अधिक प्रश्न एक ही आवेदन के द्वारा किए जाते हैं, समय के साथ, स्क्रिप्ट दिखाई देने लगती हैं- या तो स्क्रिप्ट जरूरत पड़ने पर हाथ से चलती है, या क्रॉन जॉब्स। कुछ डेटा ऑपरेशन भी डेटाबेस पर ही हाथ से किए जाते हैं। स्क्रिप्ट और मैनुअल SQL क्वेरी दोनों में अमान्य मानों को शुरू करने का उच्च जोखिम है।
और यहाँ मेरा सवाल आता है:
चेक की कमी के बिना रिलेशनल डेटाबेस को मॉडल करने और अंततः विदेशी कुंजियों के बिना भी क्या कारण हैं?
इसके लायक क्या है, यह सवाल और मुझे मिले जवाब (विशेष रूप से थॉमस किलियन के साथ दिलचस्प चर्चा) ने मुझे डेटाबेस की कमी के विषय पर अपने निष्कर्ष के साथ एक लेख लिखने के लिए प्रेरित किया ।