डेटाबेस बाधा की स्पष्ट परिभाषा क्या है? एक डेटाबेस के लिए बाधाएं क्यों महत्वपूर्ण हैं? बाधाओं के प्रकार क्या हैं?
डेटाबेस बाधा की स्पष्ट परिभाषा क्या है? एक डेटाबेस के लिए बाधाएं क्यों महत्वपूर्ण हैं? बाधाओं के प्रकार क्या हैं?
जवाबों:
बाधाएँ एक डेटाबेस स्कीमा परिभाषा का हिस्सा हैं।
एक बाधा आम तौर पर एक मेज के साथ जुड़ा हुआ है और एक साथ बनाई गई है CREATE CONSTRAINT
या CREATE ASSERTION
SQL विवरण।
वे कुछ गुणों को परिभाषित करते हैं जो डेटाबेस में डेटा का अनुपालन करना चाहिए। वे एक कॉलम, एक पूरी तालिका, एक से अधिक तालिका या संपूर्ण स्कीमा पर लागू कर सकते हैं। एक विश्वसनीय डेटाबेस सिस्टम यह सुनिश्चित करता है कि बाधाएं हर समय पकड़ती हैं (संभवतः एक लेन-देन के अंदर, तथाकथित स्थगित बाधाओं को छोड़कर)।
आम प्रकार की अड़चनें हैं:
यह समझने के लिए कि हमें बाधाओं की आवश्यकता क्यों है, आपको पहले डेटा अखंडता के मूल्य को समझना होगा।
डेटा इंटिग्रिटी डेटा की वैधता को संदर्भित करता है। क्या आपका डेटा मान्य है? क्या आपका डेटा यह दर्शाता है कि आपने उन्हें क्या डिज़ाइन किया है?
मैं आपसे क्या अजीब सवाल पूछ सकता हूं, लेकिन दुख की बात है कि सभी अक्सर, डेटाबेस कचरा डेटा से भरे होते हैं, अन्य तालिकाओं में पंक्तियों के लिए अमान्य संदर्भ, जो लंबे चले गए हैं ... और मान जो कि व्यापार तर्क के लिए कुछ भी मतलब नहीं है आपके समाधान के किसी भी लंबे समय तक।
यह सब कचरा अकेले आपके प्रदर्शन को कम करने के लिए प्रवण नहीं है, बल्कि आपके आवेदन तर्क के तहत एक समय-बम भी है जो अंततः डेटा को फिर से लिख देगा जो इसे समझने के लिए डिज़ाइन नहीं किया गया है।
बाधाएँ आपके द्वारा डिज़ाइन किए गए समय पर बनाए गए नियम हैं जो आपके डेटा को दूषित होने से बचाते हैं। यह एक डेटाबेस समाधान के अपने दिल के बच्चे के लंबे समय तक जीवित रहने के लिए आवश्यक है। बाधाओं के बिना आपका समाधान निश्चित रूप से समय और भारी उपयोग के साथ क्षय होगा।
आपको यह स्वीकार करना होगा कि आपके डेटाबेस का डिज़ाइन तैयार करना केवल आपके समाधान का जन्म है। इसके बाद इसे (उम्मीद के मुताबिक) लंबे समय तक रहना चाहिए, और इसके अंत-उपयोगकर्ताओं (यानी क्लाइंट एप्लिकेशन) द्वारा सभी प्रकार के (अजीब) व्यवहार को सहना होगा। लेकिन विकास में यह डिजाइन-चरण आपके समाधान की लंबे समय की सफलता के लिए महत्वपूर्ण है! इसका सम्मान करें, और इसे समय और ध्यान देने की आवश्यकता है।
एक बुद्धिमान व्यक्ति ने एक बार कहा था: "डेटा को खुद की रक्षा करनी चाहिए!" । और यही अड़चन है। यह नियम है कि अपने डेटाबेस में डेटा को यथासंभव मान्य रखें।
ऐसा करने के कई तरीके हैं, लेकिन मूल रूप से वे उबलते हैं:
sys.check_constraints
नमूना डेटाबेस में दृश्य की जांच करेंजैसा कि मैंने यहां संकेत दिया है, यह आपके डेटाबेस डिजाइन के लिए सबसे अच्छा और सबसे रक्षात्मक बाधा दृष्टिकोण का निर्माण करने के लिए कुछ गहन विचार करता है। आपको सबसे पहले उपरोक्त विभिन्न प्रकार की बाधाओं की संभावनाओं और सीमाओं को जानना होगा। आगे पढ़ने में शामिल हो सकते हैं:
प्रमुख कुंजी बाधाओं - Microsoft
सौभाग्य! ;)
बाधाएं डेटा पर नियमों के अलावा और कुछ नहीं हैं। कौन सा डेटा वैध है और क्या अमान्य है, इसकी कमी का उपयोग करके परिभाषित किया जा सकता है। तो, डेटा की अखंडता को बनाए रखा जा सकता है। निम्नलिखित व्यापक रूप से उपयोग की जाने वाली बाधाएँ हैं:
NOT NULL
। यहां हम निर्दिष्ट कर सकते हैं कि हम उस विशेष कॉलम के लिए कौन सा डेटा दर्ज कर सकते हैं और उस कॉलम के लिए क्या अपेक्षित नहीं है।डेटा के विशिष्ट गुणों को लागू करने के लिए बाधाओं का उपयोग किया जा सकता है। एक साधारण उदाहरण एक इंट कॉलम को मानों [0-100000] तक सीमित करना है। यह परिचय अच्छा लग रहा है।
बाधाएं तय करती हैं कि डेटाबेस में डेटा के लिए कौन से मूल्य मान्य हैं। उदाहरण के लिए, आप एक मान को लागू कर सकते हैं अशक्त ( NOT NULL
बाधा) नहीं है, या यह किसी अन्य तालिका (एक FOREIGN KEY
बाधा) में एक अद्वितीय बाधा के रूप में मौजूद है , या यह कि इस तालिका के भीतर अद्वितीय है (एक UNIQUE
बाधा या शायद PRIMARY KEY
आपकी आवश्यकताओं के आधार पर बाधा) )। बाधाओं का उपयोग करके अधिक सामान्य बाधाओं को लागू किया जा सकता है CHECK
।
एसक्यूएल सर्वर 2008 की कमी के लिए MSDN प्रलेखीकरण शायद अपने सबसे अच्छे प्रारंभिक जगह है।
UNIQUE
बाधा (जिसमें से एक PRIMARY KEY
बाधा एक प्रकार है)। जाँचता है कि किसी दिए गए फ़ील्ड के सभी मान तालिका में अद्वितीय हैं। यह X
-axis बाधा (रिकॉर्ड) है
CHECK
बाधा (जिसमें से एक NOT NULL
बाधा एक प्रकार है)। जाँचता है कि एक निश्चित स्थिति एक ही रिकॉर्ड के क्षेत्रों पर अभिव्यक्ति के लिए रखती है। यह Y
-axis बाधा (क्षेत्र) है
FOREIGN KEY
बाधा। जाँचता है कि एक फ़ील्ड का मान किसी अन्य तालिका में फ़ील्ड के मानों के बीच पाया जाता है। यह Z
-axis बाधा (तालिकाओं) है।
CHECK
बाधाओं का उपयोग करके लिखा जा सकता है इसलिए इसे अलग तरीके से वर्गीकृत क्यों करें? यानी " Y
-एक्सिस" (जो भी इसका मतलब है)।
FOREIGN KEY
एक CHECK
बाधा का उपयोग करके कैसे लागू करते हैं ?
SELECT
प्रश्न है। आप CHECK
अवरोधों (या वर्तमान रिकॉर्ड के बाहर मानों को संदर्भित करने वाले किसी भी अन्य निर्माण) का उपयोग नहीं कर सकते SQL Server
।
एक डेटाबेस एक वैचारिक (या व्यवसाय) मॉडल का कम्प्यूटरीकृत तार्किक प्रतिनिधित्व है, जिसमें अनौपचारिक व्यापार नियमों का एक सेट शामिल है। ये नियम डेटा का उपयोगकर्ता द्वारा समझा गया अर्थ हैं। क्योंकि कंप्यूटर केवल औपचारिक अभ्यावेदन प्रस्तुत करते हैं, व्यावसायिक नियमों को सीधे डेटाबेस में नहीं दर्शाया जा सकता है। उन्हें औपचारिक प्रतिनिधित्व के लिए मैप किया जाना चाहिए, एक तार्किक मॉडल, जिसमें अखंडता बाधाओं का एक सेट होता है। ये बाधाएं - डेटाबेस स्कीमा - व्यावसायिक नियमों के डेटाबेस में तार्किक प्रतिनिधित्व हैं और इसलिए, डेटा के डीबीएमएस-समझे गए अर्थ हैं। यह इस प्रकार है कि अगर DBMS अनजान है और / या व्यापार नियमों का प्रतिनिधित्व करने वाले बाधाओं का पूरा सेट लागू नहीं करता है, तो यह डेटा की क्या मतलब है और इसलिए, की एक अधूरी समझ है
नोट: DBMS- "समझा" अर्थ - अखंडता बाधाओं - उपयोगकर्ता-समझे गए अर्थ - व्यावसायिक नियमों के समान नहीं है - लेकिन, कुछ अर्थ के बावजूद, हम डेटा से तार्किक निष्कर्षों को मशीनीकरण करने की क्षमता प्राप्त करते हैं।
फेबियन पास्कल द्वारा "ए ओल्ड क्लास ऑफ एरर्स"
SQL में मुख्य रूप से 4 प्रकार की मुख्य बाधाएँ हैं:
डोमेन बाधा: यदि नया टपल के लिए प्रदान किया गया एक विशेषता मान निर्दिष्ट विशेषता डोमेन का नहीं है
मुख्य बाधा: यदि एक नए टपल में एक प्रमुख विशेषता का मूल्य पहले से ही संबंध में एक और ट्यूपल में मौजूद है
रेफ़रेंशियल इंटिग्रिटी: यदि एक नया टपल में एक विदेशी कुंजी मान एक प्राथमिक कुंजी मान को संदर्भित करता है जो संदर्भित संबंध में मौजूद नहीं है
इकाई वफ़ादारी: यदि प्राथमिक कुंजी मान एक नए टपल में शून्य है
बाधाएं ऐसी स्थितियां हैं, जो विशिष्ट स्थिति को मान्य कर सकती हैं। डेटाबेस से संबंधित बाधाएं डोमेन अखंडता, एंटिटी अखंडता, संदर्भात्मक अखंडता, उपयोगकर्ता परिभाषित अखंडता बाधाएं आदि हैं।