इस लेख के साथ हम डेटाबेस, डेटा तक पहुंचने और प्रसंस्करण के लिए आधुनिक प्रौद्योगिकियों के लिए समर्पित एक नई श्रृंखला शुरू करते हैं। इस चक्र के दौरान, हम सबसे लोकप्रिय डेस्कटॉप और सर्वर डेटाबेस प्रबंधन सिस्टम (डीबीएमएस), डेटा एक्सेस तंत्र (ओएलडी डीबी, एडीओ, बीडीई, आदि) और डेटाबेस के साथ काम करने के लिए उपयोगिताओं (प्रशासन उपकरण, रिपोर्ट जेनरेटर, ग्राफिकल टूल) पर विचार करने की योजना बना रहे हैं। डेटा की प्रस्तुति)। इसके अलावा, हम इंटरनेट पर डेटा प्रकाशित करने के तरीकों के साथ-साथ ओएलएपी (ऑन-लाइन एनालिटिकल प्रोसेसिंग) और डेटा वेयरहाउस (डेटा वेयरहाउसिंग) बनाने जैसे डेटा को संसाधित करने और संग्रहीत करने के ऐसे लोकप्रिय तरीकों पर भी ध्यान देने की योजना बना रहे हैं।
इस लेख में हम डेटाबेस प्रबंधन प्रणालियों में अंतर्निहित बुनियादी अवधारणाओं और सिद्धांतों को देखेंगे। हम संबंधपरक डेटा मॉडल, संदर्भात्मक अखंडता की अवधारणा और डेटा सामान्यीकरण के सिद्धांतों, साथ ही डेटा डिज़ाइन टूल पर चर्चा करेंगे। फिर हम बताएंगे कि डीबीएमएस क्या हैं, डेटाबेस में कौन सी वस्तुएं शामिल की जा सकती हैं, और इन वस्तुओं के खिलाफ क्वेरी कैसे की जाती हैं।
बुनियादी संबंधपरक डेटाबेस अवधारणाएँ
आइए डीबीएमएस की बुनियादी अवधारणाओं और रिलेशनल डेटाबेस के सिद्धांत के संक्षिप्त परिचय से शुरुआत करें - आज डेटा संग्रहीत करने की सबसे लोकप्रिय विधि।
संबंधपरक डेटा मॉडल
संबंधपरक डेटा मॉडल 1969 में एक प्रसिद्ध डेटाबेस शोधकर्ता डॉ. ई.एफ. कॉड द्वारा प्रस्तावित किया गया था, जब वह आईबीएम कर्मचारी थे। इस मॉडल की मूल अवधारणाएं पहली बार 1970 में प्रकाशित हुईं। "बड़े साझा डेटा बैंकों के लिए डेटा का एक रिलेशनल मॉडल", सीएसीएम, 1970, 13 एन 6)।
रिलेशनल डेटाबेस एक डेटा वेयरहाउस है जिसमें द्वि-आयामी तालिकाओं का एक सेट होता है। ऐसे भंडारण को प्रबंधित करने के लिए उपकरणों के एक सेट को कहा जाता है रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (आरडीबीएमएस). आरडीबीएमएस में उपयोगिताएँ, एप्लिकेशन, सेवाएँ, लाइब्रेरी, एप्लिकेशन निर्माण उपकरण और अन्य घटक शामिल हो सकते हैं।
किसी भी संबंधपरक डेटाबेस तालिका में शामिल हैं पंक्तियां(यह भी कहा जाता है अभिलेख) और कॉलम(यह भी कहा जाता है खेत). इस श्रृंखला में हम पदों के दोनों युग्मों का उपयोग करेंगे।
तालिका की पंक्तियों में इसमें प्रस्तुत तथ्यों (या दस्तावेज़, या लोगों, एक शब्द में - एक ही प्रकार की वस्तुओं के बारे में) के बारे में जानकारी होती है। किसी स्तंभ और पंक्ति के प्रतिच्छेदन पर तालिका में निहित डेटा के विशिष्ट मान होते हैं।
तालिकाओं में डेटा निम्नलिखित सिद्धांतों को पूरा करता है:
- पंक्ति और स्तंभ के प्रतिच्छेदन पर निहित प्रत्येक मान होना चाहिए परमाणु(अर्थात् अनेक मानों में विभाजित नहीं)।
- एक ही कॉलम में डेटा मान किसी दिए गए DBMS में उपयोग के लिए उपलब्ध समान प्रकार के होने चाहिए।
- तालिका में प्रत्येक रिकॉर्ड अद्वितीय है, अर्थात, तालिका में उसके फ़ील्ड के लिए मूल्यों के पूरी तरह से मेल खाने वाले दो रिकॉर्ड नहीं हैं।
- प्रत्येक फ़ील्ड का एक अद्वितीय नाम होता है.
- तालिका में फ़ील्ड का क्रम महत्वपूर्ण नहीं है.
- प्रविष्टियों का क्रम भी अप्रासंगिक है।
इस तथ्य के बावजूद कि तालिका पंक्तियों को अव्यवस्थित माना जाता है, कोई भी डेटाबेस प्रबंधन प्रणाली आपको उपयोगकर्ता की आवश्यकता के अनुसार पंक्तियों और स्तंभों को चयन में क्रमबद्ध करने की अनुमति देती है।
चूँकि किसी तालिका में स्तंभों का क्रम महत्वपूर्ण नहीं है, उन्हें नाम से संदर्भित किया जाता है, और ये नाम किसी दी गई तालिका के लिए अद्वितीय हैं (लेकिन संपूर्ण डेटाबेस के लिए अद्वितीय होने की आवश्यकता नहीं है)।
तो अब हम जानते हैं कि रिलेशनल डेटाबेस तालिकाओं से बने होते हैं। कुछ सैद्धांतिक बिंदुओं को स्पष्ट करने और उदाहरण बनाने के लिए, हमें कुछ प्रकार के डेटाबेस का चयन करने की आवश्यकता है। "पहिये का पुनः आविष्कार न करने" के लिए, हम Microsoft SQL सर्वर और Microsoft Access के साथ शामिल नॉर्थविंड डेटाबेस का उपयोग करेंगे।
आइए अब तालिकाओं के बीच संबंधों को देखें।
चाबियाँ और कनेक्शन
आइए नॉर्थविंड डेटाबेस से ग्राहक तालिका के एक स्निपेट पर नज़र डालें (हमने उन फ़ील्ड को हटा दिया है जो तालिकाओं के बीच संबंधों को दर्शाने के लिए आवश्यक नहीं हैं)।
क्योंकि किसी तालिका में पंक्तियाँ अव्यवस्थित होती हैं, हमें प्रत्येक पंक्ति को विशिष्ट रूप से पहचानने के लिए एक कॉलम (या कॉलम का सेट) की आवश्यकता होती है। ऐसे स्तंभ (या स्तंभों का समूह) को कहा जाता है प्राथमिक कुंजी (प्राथमिक कुंजी). किसी भी तालिका की प्राथमिक कुंजी में प्रत्येक पंक्ति के लिए अद्वितीय गैर-रिक्त मान होने चाहिए।
यदि प्राथमिक कुंजी में एक से अधिक कॉलम हैं, तो इसे कहा जाता है समग्र प्राथमिक कुंजी (समग्र प्राथमिक कुंजी).
एक सामान्य डेटाबेस में आमतौर पर कई संबंधित तालिकाएँ होती हैं। ऑर्डर तालिका का टुकड़ा.
इस तालिका के ग्राहकआईडी फ़ील्ड में उस ग्राहक की आईडी होती है जिसने ऑर्डर दिया था। यदि हम ऑर्डर देने वाली कंपनी का नाम जानना चाहते हैं, तो हमें ग्राहक तालिका के ग्राहक आईडी फ़ील्ड में समान ग्राहक आईडी मान देखना होगा और मिली पंक्ति में कंपनी नाम फ़ील्ड का मान पढ़ना होगा। दूसरे शब्दों में, हमें CustomerID फ़ील्ड का उपयोग करके दो तालिकाओं, ग्राहक और ऑर्डर को लिंक करने की आवश्यकता है। वह स्तंभ जो किसी अन्य तालिका में किसी रिकॉर्ड की ओर इंगित करता है जो किसी दिए गए रिकॉर्ड से संबंधित है, कहलाता है विदेशी कुंजी (विदेशी कुंजी). जैसा कि आप देख सकते हैं, ऑर्डर तालिका के मामले में, विदेशी कुंजी ग्राहक आईडी कॉलम है (चित्र 1)।
दूसरे शब्दों में, एक विदेशी कुंजी एक स्तंभ या स्तंभों का समूह है जिसका मान किसी अन्य तालिका की प्राथमिक कुंजी के मौजूदा मानों से मेल खाता है।
तालिकाओं के बीच के इस संबंध को कहा जाता है संचार (संबंध). एक तालिका के विदेशी कुंजी मानों को दूसरे के प्राथमिक कुंजी मानों को निर्दिष्ट करके दो तालिकाओं के बीच संबंध स्थापित किया जाता है।
यदि ग्राहक तालिका में प्रत्येक ग्राहक केवल एक ही ऑर्डर दे सकता है, तो दोनों तालिकाओं को संबंधित कहा जाता है एक से एक (एक-से-एक रिश्ता). यदि ग्राहक तालिका में प्रत्येक ग्राहक शून्य, एक या कई ऑर्डर दे सकता है, तो दोनों तालिकाओं को संबंधित कहा जाता है कई लोगों के लिए एक (एक-से-अनेक संबंध) या अनुपात मास्टर-डिटेल. तालिकाओं के बीच समान संबंध अक्सर उपयोग किए जाते हैं। इस स्थिति में, विदेशी कुंजी वाली तालिका को कॉल किया जाता है विवरण तालिका, और एक प्राथमिक कुंजी वाली तालिका जो किसी विदेशी कुंजी के संभावित मानों को परिभाषित करती है, कहलाती है मास्टर टेबल.
संबंधित तालिकाओं के समूह को कहा जाता है योजनाडेटाबेस ( डेटाबेस स्कीमा). तालिकाओं, उनके कॉलम (नाम, डेटा प्रकार, फ़ील्ड लंबाई), प्राथमिक और विदेशी कुंजी, साथ ही अन्य डेटाबेस ऑब्जेक्ट्स के बारे में जानकारी कहलाती है मेटाडाटा (मेटाडाटा).
डेटाबेस में डेटा का कोई भी हेरफेर जैसे डेटा को चुनना, सम्मिलित करना, हटाना, अपडेट करना, मेटाडेटा को बदलना या चुनना कहलाता है अनुरोधडेटाबेस के लिए ( सवाल). आमतौर पर, क्वेरीज़ कुछ भाषा में तैयार की जाती हैं, जो या तो विभिन्न DBMS के लिए मानक हो सकती हैं या किसी विशिष्ट DBMS पर निर्भर हो सकती हैं।
संदर्भिक समग्रता
हमने पहले ही ऊपर कहा है कि किसी भी तालिका की प्राथमिक कुंजी में किसी दी गई तालिका के लिए अद्वितीय गैर-रिक्त मान होने चाहिए। यह कथन नियमों में से एक है संदर्भिक समग्रता (संदर्भिक समग्रता). कुछ (लेकिन सभी नहीं) DBMS प्राथमिक कुंजियों की विशिष्टता को नियंत्रित कर सकते हैं। यदि DBMS प्राथमिक कुंजी की विशिष्टता को नियंत्रित करता है, तो यदि आप किसी प्राथमिक कुंजी को मान निर्दिष्ट करने का प्रयास करते हैं जो पहले से ही किसी अन्य रिकॉर्ड में मौजूद है, तो DBMS एक डायग्नोस्टिक संदेश उत्पन्न करेगा, जिसमें आमतौर पर वाक्यांश शामिल होगा प्राथमिक कुंजी का उल्लंघन. यह संदेश बाद में उस एप्लिकेशन को प्रेषित किया जा सकता है जिसके माध्यम से अंतिम उपयोगकर्ता डेटा में हेरफेर करता है।
यदि दो तालिकाएँ संबंध द्वारा संबंधित हैं मास्टर-डिटेल, बाहरी कुंजी विवरण-तालिका में केवल वे मान होने चाहिए जो प्राथमिक कुंजी मानों के बीच पहले से मौजूद हैं मालिक-टेबल. यदि विदेशी कुंजी मानों की शुद्धता को DBMS द्वारा नियंत्रित नहीं किया जाता है, तो हम संदर्भात्मक अखंडता के उल्लंघन के बारे में बात कर सकते हैं। इस मामले में, यदि हम ग्राहक तालिका से एक रिकॉर्ड हटाते हैं जिसके साथ कम से कम एक संबद्ध है विवरण-ऑर्डर तालिका में प्रविष्टि, यह ऑर्डर तालिका में ले जाएगी जिसमें किसी अज्ञात द्वारा दिए गए ऑर्डर के रिकॉर्ड होंगे। यदि DBMS विदेशी कुंजियों के मानों की शुद्धता को नियंत्रित करता है, तो जब आप किसी विदेशी कुंजी को मान निर्दिष्ट करने का प्रयास करते हैं जो मास्टर तालिका की प्राथमिक कुंजियों के मानों में से नहीं है, या जब आप हटाते या संशोधित करते हैं मास्टर टेबल में रिकॉर्ड, जिससे संदर्भात्मक अखंडता का उल्लंघन होता है, डीबीएमएस एक डायग्नोस्टिक संदेश उत्पन्न करेगा, जिसमें आमतौर पर वाक्यांश शामिल होगा विदेशी कुंजी का उल्लंघन, जिसे बाद में उपयोगकर्ता एप्लिकेशन को पास किया जा सकता है।
अधिकांश आधुनिक DBMS, जैसे कि Microsoft Access 97, Microsoft Access 2000, और Microsoft SQL Server 7.0, संदर्भात्मक अखंडता नियमों के अनुपालन की निगरानी करने में सक्षम हैं, यदि कोई डेटाबेस में वर्णित है। इस प्रयोजन के लिए, ऐसे DBMS विभिन्न डेटाबेस ऑब्जेक्ट का उपयोग करते हैं (हम उन पर थोड़ी देर बाद चर्चा करेंगे)। इस मामले में, संदर्भात्मक अखंडता नियमों का उल्लंघन करने के सभी प्रयासों को नैदानिक संदेशों या अपवादों की एक साथ पीढ़ी के साथ दबा दिया जाएगा ( डेटाबेस अपवाद).
डेटा सामान्यीकरण का परिचय
डेटा डिज़ाइन प्रक्रिया सूचना प्रणाली के उद्देश्यों के अनुसार मेटाडेटा की परिभाषा है जिसमें भविष्य के डेटाबेस का उपयोग किया जाएगा। किसी विषय क्षेत्र का विश्लेषण करने और इकाई-संबंध आरेख बनाने के तरीके पर विवरण ( ईआरडी - इकाई-संबंध आरेख) और डेटा मॉडल इस चक्र के दायरे से बाहर हैं। इन मुद्दों में रुचि रखने वाले, उदाहरण के लिए, के.जे. डेट की पुस्तक "डेटाबेस सिस्टम का परिचय" (डायलेक्टिक्स, कीव, 1998) का संदर्भ ले सकते हैं।
इस लेख में हम डेटा डिज़ाइन के मूल सिद्धांतों में से केवल एक - सिद्धांत पर चर्चा करेंगे मानकीकरण.
मानकीकरणडेटा भंडारण में दोहराए जाने वाले समूहों और अन्य विरोधाभासों को समाप्त करके डेटा को पुनर्गठित करने की प्रक्रिया है ताकि तालिकाओं को एक ऐसे रूप में लाया जा सके जो डेटा के लगातार और सही संपादन की अनुमति देता है।
सामान्यीकरण सिद्धांत सामान्य रूपों की अवधारणा पर आधारित है। एक तालिका को किसी दिए गए सामान्य रूप में कहा जाता है यदि वह आवश्यकताओं के एक निश्चित समूह को पूरा करती है। सिद्धांत रूप में पाँच सामान्य रूप हैं, लेकिन व्यवहार में आमतौर पर केवल पहले तीन का ही उपयोग किया जाता है। इसके अलावा, पहले दो सामान्य फॉर्म डेटाबेस को तीसरे सामान्य फॉर्म में लाने के लिए अनिवार्य रूप से मध्यवर्ती चरण हैं।
पहला सामान्य रूप
आइए नॉर्थविंड डेटाबेस से डेटा का उपयोग करके एक उदाहरण के साथ सामान्यीकरण प्रक्रिया को चित्रित करें। आइए मान लें कि हम सभी ऑर्डर किए गए उत्पादों को निम्नलिखित तालिका में रिकॉर्ड करते हैं। इस तालिका की संरचना इस प्रकार है (चित्र 2)।
किसी तालिका के लिए पहले सामान्य रूप का अनुपालन करने के लिए, उसके सभी फ़ील्ड मान परमाणु होने चाहिए, और
सभी रिकॉर्ड अद्वितीय हैं. इसलिए, परिभाषा के अनुसार, ऑर्डर किए गए उत्पाद तालिका सहित कोई भी संबंधपरक तालिका पहले से ही सामान्य रूप में है।
हालाँकि, इस तालिका में अनावश्यक डेटा शामिल है, उदाहरण के लिए, ऑर्डर किए गए प्रत्येक उत्पाद के रिकॉर्ड में वही ग्राहक जानकारी दोहराई जाती है। डेटा अतिरेक के परिणामस्वरूप डेटा संशोधन विसंगतियाँ होती हैं - समस्याएँ जो तब होती हैं जब रिकॉर्ड जोड़े जाते हैं, बदले जाते हैं या हटाए जाते हैं। उदाहरण के लिए, ऑर्डर किए गए उत्पाद तालिका में डेटा संपादित करते समय, निम्नलिखित समस्याएं हो सकती हैं:
- किसी विशिष्ट ग्राहक का पता केवल तभी डेटाबेस में शामिल किया जा सकता है जब ग्राहक ने कम से कम एक उत्पाद का ऑर्डर दिया हो।
- जब आप किसी ऑर्डर किए गए उत्पाद का रिकॉर्ड हटाते हैं, तो ऑर्डर के बारे में जानकारी और उसे देने वाले ग्राहक के बारे में जानकारी एक साथ हटा दी जाती है।
- यदि, भगवान न करे, ग्राहक अपना पता बदलता है, तो उसके द्वारा ऑर्डर किए गए उत्पादों के सभी रिकॉर्ड अपडेट करने होंगे।
इनमें से कुछ समस्याओं को डेटाबेस को संरेखित करके हल किया जा सकता है दूसरा सामान्य रूप.
दूसरा सामान्य रूप
ऐसा कहा जाता है कि एक रिलेशनल टेबल मौजूद है दूसरा सामान्य रूप, यदि यह पहले सामान्य रूप में है और इसके गैर-कुंजी फ़ील्ड हैं पूरी तरह से निर्भरसंपूर्ण प्राथमिक कुंजी से.
ऑर्डर किए गए उत्पाद तालिका पहले सामान्य रूप में है, लेकिन दूसरे सामान्य रूप में नहीं, क्योंकि ग्राहकआईडी, पता और ऑर्डरडेट फ़ील्ड केवल ऑर्डरआईडी फ़ील्ड पर निर्भर करते हैं, जो समग्र प्राथमिक कुंजी (ऑर्डरआईडी, प्रोडक्टआईडी) का हिस्सा है।
पहले सामान्य रूप से दूसरे सामान्य रूप में जाने के लिए, आपको इन चरणों का पालन करना होगा:
- निर्धारित करें कि प्राथमिक कुंजी को किन भागों में तोड़ा जा सकता है ताकि कुछ गैर-कुंजी फ़ील्ड इनमें से किसी एक भाग पर निर्भर हों ( इन भागों में एक कॉलम होना आवश्यक नहीं है!).
- कुंजी के ऐसे प्रत्येक भाग और उस पर निर्भर फ़ील्ड के समूह के लिए एक नई तालिका बनाएं और उन्हें इस तालिका में ले जाएं। पूर्व प्राथमिक कुंजी का भाग नई तालिका की प्राथमिक कुंजी बन जाएगा।
- स्रोत तालिका से उन फ़ील्ड्स को हटा दें जिन्हें अन्य तालिकाओं में ले जाया गया है, सिवाय उन फ़ील्ड्स को छोड़कर जो विदेशी कुंजी बन जाएंगी।
उदाहरण के लिए, ऑर्डर किए गए उत्पाद तालिका को दूसरे सामान्य रूप में लाने के लिए, आपको ग्राहक आईडी, पता और ऑर्डर दिनांक फ़ील्ड को एक नई तालिका में ले जाना होगा (आइए इसे ऑर्डरइन्फो कहते हैं), और ऑर्डर आईडी फ़ील्ड नई तालिका की प्राथमिक कुंजी बन जाएगी (चित्र) .3).
परिणामस्वरूप, नई तालिकाएँ इस तरह दिखेंगी। हालाँकि, तालिकाएँ जो दूसरे सामान्य रूप में हैं लेकिन तीसरे सामान्य रूप में नहीं हैं उनमें अभी भी डेटा संशोधन विसंगतियाँ हैं। उदाहरण के लिए, ऑर्डर्सइन्फो तालिका के लिए वे यहां हैं:
- किसी विशिष्ट ग्राहक का पता अभी भी डेटाबेस में तभी शामिल किया जा सकता है जब ग्राहक ने कम से कम एक उत्पाद का ऑर्डर दिया हो।
- ऑर्डर्सइन्फो तालिका में ऑर्डर प्रविष्टि को हटाने से ग्राहक के लिए प्रविष्टि स्वयं ही हट जाएगी।
- यदि ग्राहक पता बदलता है, तो कई रिकॉर्ड अपडेट करने होंगे (हालांकि, एक नियम के रूप में, पिछले मामले की तुलना में उनमें से कम हैं)।
पर जाकर इन विसंगतियों को दूर किया जा सकता है तीसरा सामान्य रूप.
तीसरा सामान्य रूप
कहा जाता है कि एक रिलेशनल टेबल मौजूद है तीसरा सामान्य रूप, यदि यह दूसरे सामान्य रूप में है और इसके सभी गैर-कुंजी फ़ील्ड केवल प्राथमिक कुंजी पर निर्भर हैं।
ऑर्डर विवरण तालिका पहले से ही तीसरे सामान्य रूप में है। गैर-कुंजी फ़ील्ड मात्रा पूरी तरह से समग्र प्राथमिक कुंजी (ऑर्डरआईडी, प्रोडक्टआईडी) पर निर्भर है। हालाँकि, ऑर्डर्सइन्फो तालिका तीसरे सामान्य रूप में नहीं है, क्योंकि इसमें गैर-कुंजी फ़ील्ड के बीच निर्भरता होती है (इसे कहा जाता है) सकर्मक निर्भरता- सकर्मकनिर्भरता) - पता फ़ील्ड CustomerID फ़ील्ड पर निर्भर करता है।
दूसरे सामान्य रूप से तीसरे सामान्य रूप में जाने के लिए, आपको इन चरणों का पालन करना होगा:
- उन सभी फ़ील्ड (या फ़ील्ड के समूह) को परिभाषित करें जिन पर अन्य फ़ील्ड निर्भर हैं।
- ऐसे प्रत्येक फ़ील्ड (या फ़ील्ड के समूह) और उस पर निर्भर फ़ील्ड के समूह के लिए एक नई तालिका बनाएं और उन्हें इस तालिका में ले जाएं। वह फ़ील्ड (या फ़ील्ड का समूह) जिस पर अन्य सभी स्थानांतरित फ़ील्ड निर्भर हैं, नई तालिका की प्राथमिक कुंजी बन जाएगी।
- मूल तालिका से स्थानांतरित फ़ील्ड हटाएं, केवल वे फ़ील्ड छोड़ें जो विदेशी कुंजी बन जाएंगी।
ऑर्डर्सइन्फो तालिका को तीसरे सामान्य रूप में लाने के लिए, एक नई ग्राहक तालिका बनाएं और ग्राहक आईडी और पता फ़ील्ड को इसमें ले जाएं। हम स्रोत तालिका से पता फ़ील्ड हटा देंगे, और CustomerID फ़ील्ड छोड़ देंगे - अब यह एक विदेशी कुंजी है (चित्र 4)।
इसलिए, मूल तालिका को तीसरे सामान्य रूप में लाने के बाद, तीन तालिकाएँ थीं - ग्राहक, ऑर्डर और ऑर्डर विवरण।
सामान्यीकरण के लाभ
सामान्यीकरण डेटा अतिरेक को समाप्त करता है, जो आपको संग्रहीत डेटा की मात्रा को कम करने और ऊपर वर्णित डेटा परिवर्तन विसंगतियों से छुटकारा पाने की अनुमति देता है। उदाहरण के लिए, ऊपर चर्चा किए गए डेटाबेस को तीसरे सामान्य रूप में कम करने के बाद, निम्नलिखित सुधार स्पष्ट हैं:
- किसी ग्राहक के पते की जानकारी डेटाबेस में संग्रहीत की जा सकती है, भले ही ग्राहक केवल एक संभावित ग्राहक हो जिसने अभी तक कोई ऑर्डर नहीं दिया है।
- आप ग्राहक और ऑर्डर की जानकारी मिटाने के डर के बिना ऑर्डर किए गए उत्पाद के बारे में जानकारी हटा सकते हैं।
किसी ग्राहक का पता या ऑर्डर पंजीकरण तिथि बदलने के लिए अब केवल एक रिकॉर्ड बदलने की आवश्यकता है।
डेटाबेस कैसे डिज़ाइन किए जाते हैं
आमतौर पर, आधुनिक DBMS में ऐसे उपकरण होते हैं जो आपको टेबल और कुंजियाँ बनाने की अनुमति देते हैं। डीबीएमएस से अलग से आपूर्ति की जाने वाली उपयोगिताएँ भी हैं (और यहां तक कि एक साथ कई अलग-अलग डीबीएमएस की सेवा भी करती हैं) जो आपको टेबल, कुंजी और संबंध बनाने की अनुमति देती हैं।
डेटाबेस में तालिकाएँ, कुंजियाँ और संबंध बनाने का दूसरा तरीका तथाकथित DDL स्क्रिप्ट (DDL - डेटा डेफिनिशन लैंग्वेज; हम इसके बारे में थोड़ी देर बाद बात करेंगे) लिखना है।
अंत में, एक और तरीका है जो अधिक से अधिक लोकप्रिय होता जा रहा है - विशेष उपकरणों का उपयोग जिन्हें CASE टूल्स कहा जाता है (CASE का अर्थ कंप्यूटर-एडेड सिस्टम इंजीनियरिंग है)। CASE उपकरण कई प्रकार के होते हैं, लेकिन डेटाबेस बनाने के लिए सबसे अधिक उपयोग किए जाने वाले उपकरण इकाई-संबंध आरेख (ई/आर आरेख) हैं। इन उपकरणों की मदद से, तथाकथित तार्किकएक डेटा मॉडल जो इसमें पंजीकृत किए जाने वाले तथ्यों और वस्तुओं का वर्णन करता है (ऐसे मॉडल में, तालिका प्रोटोटाइप को इकाइयां कहा जाता है, और फ़ील्ड को संस्थाओं के बीच संबंध स्थापित करने, विशेषताओं को परिभाषित करने और सामान्यीकरण करने के बाद उनकी विशेषताएँ कहा जाता है)। भौतिकएक विशिष्ट DBMS के लिए एक डेटा मॉडल, जिसमें सभी तालिकाएँ, फ़ील्ड और अन्य डेटाबेस ऑब्जेक्ट परिभाषित होते हैं। फिर आप इसे बनाने के लिए या तो स्वयं डेटाबेस या DDL स्क्रिप्ट तैयार कर सकते हैं।
वर्तमान में सर्वाधिक लोकप्रिय CASE टूल की सूची।
टेबल और फ़ील्ड
तालिकाएँ सभी संबंधपरक DBMS द्वारा समर्थित हैं, और उनके फ़ील्ड विभिन्न प्रकार के डेटा संग्रहीत कर सकते हैं। सबसे आम डेटा प्रकार.
इंडेक्स
थोड़ा ऊपर हमने प्राथमिक और विदेशी कुंजी की भूमिका के बारे में बात की। अधिकांश रिलेशनल डीबीएमएस में, कुंजियों को इंडेक्स नामक ऑब्जेक्ट का उपयोग करके कार्यान्वित किया जाता है, जिसे रिकॉर्ड संख्याओं की एक सूची के रूप में परिभाषित किया जा सकता है जो यह दर्शाता है कि उन्हें किस क्रम में प्रदान करना है।
हम पहले से ही जानते हैं कि संबंधपरक तालिकाओं में रिकॉर्ड अव्यवस्थित होते हैं। हालाँकि, किसी विशेष समय पर किसी भी रिकॉर्ड का डेटाबेस फ़ाइल में एक बहुत ही विशिष्ट भौतिक स्थान होता है, हालाँकि यह डेटा संपादन की प्रक्रिया के दौरान या डीबीएमएस की "आंतरिक गतिविधियों" के परिणामस्वरूप बदल सकता है।
मान लीजिए कि किसी समय ग्राहक तालिका में रिकॉर्ड इस क्रम में संग्रहीत किए गए थे।
मान लीजिए कि हमें इस डेटा को CustomerID फ़ील्ड के अनुसार क्रमबद्ध करने की आवश्यकता है। तकनीकी विवरण को छोड़कर, हम कह सकते हैं कि इस क्षेत्र पर सूचकांक रिकॉर्ड संख्याओं का अनुक्रम है जिसके अनुसार उन्हें प्रदर्शित करने की आवश्यकता है, यानी:
1,6,4,2,5,3
यदि हम पता फ़ील्ड द्वारा रिकॉर्ड को क्रमबद्ध करना चाहते हैं, तो रिकॉर्ड संख्याओं का क्रम भिन्न होगा:
5,4,1,6,2,3
अनुक्रमणिका को संग्रहीत करने के लिए तालिका के अलग-अलग क्रमबद्ध संस्करणों को संग्रहीत करने की तुलना में काफी कम जगह की आवश्यकता होती है।
यदि हमें उन ग्राहकों के बारे में डेटा ढूंढने की ज़रूरत है जिनकी ग्राहक आईडी "बीओ" अक्षर से शुरू होती है, तो हम इन रिकॉर्ड्स का स्थान ढूंढने के लिए इंडेक्स का उपयोग कर सकते हैं (इस मामले में 2 और 5 (जाहिर है, इंडेक्स में इन रिकॉर्ड्स की संख्या लगातार होती है) ), और फिर पूरी तालिका को स्कैन करने के बजाय, ठीक दूसरे और पांचवें रिकॉर्ड को पढ़ें, इस प्रकार, इंडेक्स के उपयोग से डेटा पुनर्प्राप्ति का समय कम हो जाता है।
हम पहले ही कह चुके हैं कि रिकॉर्ड का भौतिक स्थान उपयोगकर्ताओं द्वारा डेटा संपादित करने की प्रक्रिया के साथ-साथ डीबीएमएस द्वारा किए गए डेटाबेस फ़ाइलों में हेरफेर के परिणामस्वरूप बदल सकता है (उदाहरण के लिए, डेटा संपीड़न, कचरा संग्रह इत्यादि)। ). यदि सूचकांक में तदनुरूप परिवर्तन होते हैं, तो इसे कहा जाता है का समर्थन कियाऔर ऐसे इंडेक्स का उपयोग अधिकांश आधुनिक DBMS में किया जाता है। ऐसे सूचकांकों के कार्यान्वयन से यह तथ्य सामने आता है कि किसी तालिका में डेटा में कोई भी बदलाव उसके साथ जुड़े सूचकांकों में बदलाव की ओर ले जाता है, और इससे डीबीएमएस द्वारा ऐसे कार्यों को करने के लिए आवश्यक समय बढ़ जाता है। इसलिए, ऐसे DBMS का उपयोग करते समय, आपको केवल वही इंडेक्स बनाना चाहिए जिनकी वास्तव में आवश्यकता है, और यह निर्देशित करना चाहिए कि कौन से प्रश्न सबसे अधिक बार सामने आएंगे।
प्रतिबंध और नियम
अधिकांश आधुनिक सर्वर DBMS में विशेष ऑब्जेक्ट होते हैं जिन्हें कहा जाता है प्रतिबंध(बाधाएँ), या नियम(नियम)। इन ऑब्जेक्ट में संभावित फ़ील्ड मानों पर लगाए गए प्रतिबंधों के बारे में जानकारी होती है। उदाहरण के लिए, ऐसे ऑब्जेक्ट का उपयोग करके, आप किसी दिए गए फ़ील्ड के लिए अधिकतम या न्यूनतम मान निर्धारित कर सकते हैं, और इसके बाद DBMS आपको डेटाबेस में एक रिकॉर्ड सहेजने की अनुमति नहीं देगा जो इस शर्त को पूरा नहीं करता है।
डेटा परिवर्तनों की सीमा निर्धारित करने से जुड़ी बाधाओं के अलावा, संदर्भ बाधाएं भी हैं (उदाहरण के लिए, ग्राहक और ऑर्डर तालिकाओं के बीच एक मास्टर-विस्तार संबंध को एक बाधा के रूप में लागू किया जा सकता है जिसके लिए ग्राहक आईडी फ़ील्ड (विदेशी) का मान आवश्यक है कुंजी) ऑर्डर तालिका में ग्राहक तालिका के CustomerId फ़ील्ड के मौजूदा मानों में से एक के बराबर होनी चाहिए।
ध्यान दें कि सभी DBMS प्रतिबंधों का समर्थन नहीं करते हैं। इस मामले में, आप समान नियम कार्यक्षमता को लागू करने के लिए या तो अन्य ऑब्जेक्ट्स (उदाहरण के लिए, ट्रिगर्स) का उपयोग कर सकते हैं, या इन नियमों को इस डेटाबेस के साथ काम करने वाले क्लाइंट अनुप्रयोगों में संग्रहीत कर सकते हैं।
प्रतिनिधित्व
लगभग सभी संबंधपरक DBMS विचारों का समर्थन करते हैं। यह ऑब्जेक्ट एक आभासी तालिका है जो एक या अधिक वास्तविक तालिकाओं से डेटा प्रदान करती है। वास्तव में, इसमें कोई डेटा नहीं है, बल्कि केवल उनके स्रोत का वर्णन है।
अक्सर ऐसी वस्तुएं डेटाबेस में जटिल प्रश्नों को संग्रहीत करने के लिए बनाई जाती हैं। वास्तव में, दृश्य एक संग्रहीत क्वेरी है।
अधिकांश आधुनिक डीबीएमएस में दृश्यों का निर्माण विशेष दृश्य उपकरणों द्वारा किया जाता है जो आपको स्क्रीन पर आवश्यक तालिकाओं को प्रदर्शित करने, उनके बीच कनेक्शन स्थापित करने, प्रदर्शित फ़ील्ड का चयन करने, रिकॉर्ड पर प्रतिबंध लगाने आदि की अनुमति देते हैं।
अक्सर इन ऑब्जेक्ट्स का उपयोग डेटा सुरक्षा प्रदान करने के लिए किया जाता है, उदाहरण के लिए, तालिकाओं तक सीधे पहुंच प्रदान किए बिना डेटा को उनके माध्यम से देखने की अनुमति देकर। इसके अलावा, कुछ दृश्य ऑब्जेक्ट, उदाहरण के लिए, उपयोगकर्ता नाम के आधार पर अलग-अलग डेटा लौटा सकते हैं, जो उसे केवल वही डेटा प्राप्त करने की अनुमति देता है जिसमें उसकी रुचि है।
ट्रिगर और संग्रहीत कार्यविधियाँ
अधिकांश आधुनिक सर्वर डीबीएमएस में समर्थित ट्रिगर और संग्रहीत प्रक्रियाओं का उपयोग निष्पादन योग्य कोड को संग्रहीत करने के लिए किया जाता है।
संग्रहीत प्रक्रिया एक विशेष प्रकार की प्रक्रिया है जिसे डेटाबेस सर्वर द्वारा निष्पादित किया जाता है। संग्रहीत कार्यविधियाँ एक प्रक्रियात्मक भाषा में लिखी जाती हैं जो विशिष्ट DBMS पर निर्भर करती है। वे एक-दूसरे को कॉल कर सकते हैं, तालिकाओं में डेटा पढ़ और संशोधित कर सकते हैं, और डेटाबेस चलाने वाले क्लाइंट एप्लिकेशन से कॉल किया जा सकता है।
संग्रहित प्रक्रियाओं का उपयोग आमतौर पर बार-बार होने वाले कार्यों को करने के लिए किया जाता है (उदाहरण के लिए, बैलेंस शीट का समाधान करना)। उनमें तर्क, रिटर्न मान, त्रुटि कोड और कभी-कभी पंक्तियों और स्तंभों के सेट हो सकते हैं (इस डेटा सेट को कभी-कभी डेटासेट भी कहा जाता है)। हालाँकि, बाद वाली प्रकार की प्रक्रियाएँ सभी DBMS द्वारा समर्थित नहीं हैं।
ट्रिगर में निष्पादन योग्य कोड भी होते हैं, लेकिन प्रक्रियाओं के विपरीत, उन्हें क्लाइंट एप्लिकेशन या संग्रहीत प्रक्रिया से नहीं बुलाया जा सकता है। एक ट्रिगर हमेशा एक विशिष्ट तालिका से जुड़ा होता है और तब निष्पादित होता है जब वह घटना जिससे वह संबद्ध होता है (उदाहरण के लिए, किसी रिकॉर्ड को सम्मिलित करना, हटाना या अपडेट करना) उस तालिका को संपादित करते समय होता है।
ट्रिगर्स का समर्थन करने वाले अधिकांश डीबीएमएस में, आप कई ट्रिगर्स को परिभाषित कर सकते हैं जो एक ही घटना होने पर निष्पादित होते हैं, और निष्पादन का क्रम निर्धारित करते हैं।
प्राथमिक कुंजी उत्पन्न करने के लिए ऑब्जेक्ट
बहुत बार, प्राथमिक कुंजियाँ DBMS द्वारा ही उत्पन्न की जाती हैं। यह क्लाइंट एप्लिकेशन में उन्हें जेनरेट करने से अधिक सुविधाजनक है, क्योंकि बहु-उपयोगकर्ता कार्य में, डीबीएमएस का उपयोग करके कुंजी उत्पन्न करना डुप्लिकेटिंग कुंजी से बचने और उनके अनुक्रमिक मान प्राप्त करने का एकमात्र तरीका है।
विभिन्न DBMS कुंजी उत्पन्न करने के लिए विभिन्न ऑब्जेक्ट का उपयोग करते हैं। इनमें से कुछ ऑब्जेक्ट एक पूर्णांक और नियमों को संग्रहीत करते हैं जिनके द्वारा अगला मान उत्पन्न होता है, आमतौर पर ट्रिगर्स का उपयोग करके किया जाता है। ऐसी वस्तुओं का समर्थन किया जाता है, उदाहरण के लिए, Oracle में (जिस स्थिति में उन्हें अनुक्रम कहा जाता है) और IB डेटाबेस में (जिस स्थिति में उन्हें जनरेटर कहा जाता है)।
कुछ DBMS प्राथमिक कुंजी के लिए विशेष फ़ील्ड प्रकारों का समर्थन करते हैं। रिकॉर्ड जोड़ते समय, ऐसे फ़ील्ड अनुक्रमिक मानों (आमतौर पर पूर्णांक) से स्वचालित रूप से भर जाते हैं। माइक्रोसॉफ्ट एक्सेस और माइक्रोसॉफ्ट एसक्यूएल सर्वर के मामले में, ऐसे फ़ील्ड को आइडेंटिटी फ़ील्ड कहा जाता है, और कोरल पैराडॉक्स के मामले में, उन्हें ऑटोइनक्रिकमेंट फ़ील्ड कहा जाता है।
उपयोगकर्ता और भूमिकाएँ
डेटा तक अनधिकृत पहुंच को रोकना एक गंभीर समस्या है जिसे विभिन्न तरीकों से हल किया जा सकता है। सबसे सरल है संपूर्ण तालिका या उसके कुछ फ़ील्ड की पासवर्ड सुरक्षा (उदाहरण के लिए, कोरल पैराडॉक्स में यह तंत्र समर्थित है)।
वर्तमान में, डेटा की सुरक्षा का एक और तरीका अधिक लोकप्रिय है - उपयोगकर्ता नाम और पासवर्ड के साथ उपयोगकर्ताओं की एक सूची बनाना। इस मामले में, किसी भी डेटाबेस ऑब्जेक्ट का स्वामित्व एक विशिष्ट उपयोगकर्ता के पास होता है, और वह उपयोगकर्ता अन्य उपयोगकर्ताओं को उस ऑब्जेक्ट से डेटा पढ़ने या संशोधित करने, या ऑब्जेक्ट को स्वयं संशोधित करने की अनुमति देता है। इस पद्धति का उपयोग सभी सर्वर और कुछ डेस्कटॉप DBMS (उदाहरण के लिए, Microsoft Access) में किया जाता है।
कुछ DBMS, मुख्य रूप से सर्वर वाले, न केवल उपयोगकर्ताओं की सूची का समर्थन करते हैं, बल्कि भूमिकाओं का भी समर्थन करते हैं। भूमिका विशेषाधिकारों का एक समूह है। यदि किसी विशिष्ट उपयोगकर्ता को एक या अधिक भूमिकाएँ प्राप्त होती हैं, और उनके साथ इस भूमिका के लिए परिभाषित सभी विशेषाधिकार प्राप्त होते हैं।
डेटाबेस क्वेरीज़
डेटा का संशोधन और चयन, मेटाडेटा बदलना और कुछ अन्य ऑपरेशन क्वेरीज़ का उपयोग करके किए जाते हैं। अधिकांश आधुनिक DBMS (और कुछ एप्लिकेशन डेवलपमेंट टूल) में ऐसे प्रश्न उत्पन्न करने के लिए उपकरण होते हैं।
डेटा में हेरफेर करने का एक तरीका "उदाहरण द्वारा प्रश्न" (क्यूबीई) कहा जाता है। क्यूबीई तालिकाओं को दृश्य रूप से जोड़ने और क्वेरी परिणाम में प्रदर्शित करने के लिए कौन से फ़ील्ड का चयन करने का एक उपकरण है।
अधिकांश डीबीएमएस में (कुछ डेस्कटॉप वाले को छोड़कर), क्यूबीई का उपयोग करके क्वेरी का दृश्य निर्माण एक विशेष क्वेरी भाषा एसक्यूएल (संरचित क्वेरी भाषा) का उपयोग करके क्वेरी टेक्स्ट की पीढ़ी की ओर ले जाता है। आप क्वेरी को सीधे SQL में भी लिख सकते हैं।
कर्सर
अक्सर किसी क्वेरी का परिणाम पंक्तियों और स्तंभों (डेटासेट) का एक सेट होता है। एक संबंधपरक तालिका के विपरीत, ऐसे सेट में पंक्तियों को क्रमबद्ध किया जाता है, और उनका क्रम मूल क्वेरी (और कभी-कभी अनुक्रमित की उपस्थिति से) द्वारा निर्धारित किया जाता है। इसलिए, हम ऐसे सेट में वर्तमान पंक्ति और उसके लिए एक पॉइंटर को परिभाषित कर सकते हैं, जिसे कर्सर कहा जाता है।
अधिकांश आधुनिक DBMS तथाकथित द्वि-दिशात्मक कर्सर का समर्थन करते हैं, जो आपको परिणामी डेटा सेट के माध्यम से आगे और पीछे दोनों तरफ नेविगेट करने की अनुमति देते हैं। हालाँकि, कुछ DBMS केवल यूनिडायरेक्शनल कर्सर का समर्थन करते हैं, जो डेटा सेट के माध्यम से केवल फॉरवर्ड नेविगेशन की अनुमति देते हैं।
एसक्यूएल भाषा
संरचित क्वेरी भाषा (एसक्यूएल) एक गैर-प्रक्रियात्मक भाषा है जिसका उपयोग अधिकांश आधुनिक डीबीएमएस में डेटाबेस क्वेरी तैयार करने के लिए किया जाता है और वर्तमान में यह एक उद्योग मानक है।
भाषा की गैर-प्रक्रियात्मक प्रकृति का अर्थ है कि यह इंगित कर सकती है कि डेटाबेस के साथ क्या करने की आवश्यकता है, लेकिन यह इस प्रक्रिया के लिए एल्गोरिदम का वर्णन नहीं कर सकती है। SQL प्रश्नों को संसाधित करने के लिए सभी एल्गोरिदम DBMS द्वारा ही उत्पन्न होते हैं और उपयोगकर्ता पर निर्भर नहीं होते हैं। SQL भाषा में कथनों का एक सेट होता है जिसे कई श्रेणियों में विभाजित किया जा सकता है:
- डेटा डेफिनिशन लैंग्वेज (डीडीएल) - एक डेटा डेफिनिशन लैंग्वेज जो आपको डेटाबेस में ऑब्जेक्ट बनाने, हटाने और बदलने की अनुमति देती है
- डेटा मैनिप्युलेशन लैंग्वेज (डीएमएल) - एक डेटा प्रबंधन भाषा जो आपको मौजूदा डेटाबेस ऑब्जेक्ट्स में डेटा को संशोधित करने, जोड़ने और हटाने की अनुमति देती है
- डेटा नियंत्रण भाषाएँ (डीसीएल) - उपयोगकर्ता विशेषाधिकारों को नियंत्रित करने के लिए उपयोग की जाने वाली भाषा
- ट्रांजेक्शन कंट्रोल लैंग्वेज (टीसीएल) - ऑपरेटरों के समूहों द्वारा किए गए परिवर्तनों को प्रबंधित करने के लिए एक भाषा
- कर्सर नियंत्रण भाषा (सीसीएल) - कर्सर को परिभाषित करने के लिए कथन, निष्पादन के लिए एसक्यूएल कथन तैयार करना और कुछ अन्य संचालन।
हम आपको इस श्रृंखला के निम्नलिखित लेखों में से एक में SQL भाषा के बारे में अधिक बताएंगे।
उपयोगकर्ता परिभाषित कार्य
कुछ DBMS उपयोगकर्ता-परिभाषित फ़ंक्शंस (UDF-User-Defined Functions) के उपयोग की अनुमति देते हैं। ये फ़ंक्शन आम तौर पर बाहरी पुस्तकालयों में संग्रहीत होते हैं और क्वेरी, ट्रिगर और संग्रहीत प्रक्रियाओं में उपयोग किए जाने से पहले इन्हें डेटाबेस में पंजीकृत किया जाना चाहिए।
क्योंकि उपयोगकर्ता-परिभाषित फ़ंक्शन पुस्तकालयों में समाहित होते हैं, उन्हें किसी भी विकास उपकरण का उपयोग करके बनाया जा सकता है जो आपको उस प्लेटफ़ॉर्म के लिए पुस्तकालय बनाने की अनुमति देता है जिस पर DBMS चलता है।
लेनदेन
लेन-देन डेटा पर संचालन का एक समूह है जो या तो एक साथ निष्पादित किया जाता है या एक साथ रद्द किया जाता है।
लेन-देन करने का मतलब है कि लेन-देन में शामिल सभी ऑपरेशन सफलतापूर्वक पूरे हो गए हैं और उनके काम का परिणाम डेटाबेस में सहेजा गया है।
लेन-देन के रोलबैक का मतलब है कि पहले से ही पूर्ण किए गए सभी ऑपरेशन जो लेन-देन का हिस्सा थे, रद्द कर दिए जाते हैं और इन ऑपरेशनों से प्रभावित सभी डेटाबेस ऑब्जेक्ट अपनी मूल स्थिति में वापस आ जाते हैं। लेन-देन को वापस रोल करने की क्षमता को लागू करने के लिए, कई डीबीएमएस लॉग फ़ाइलों में लिखने का समर्थन करते हैं, जो आपको रोलबैक के दौरान मूल डेटा को पुनर्स्थापित करने की अनुमति देता है।
एक लेनदेन में कई नेस्टेड लेनदेन शामिल हो सकते हैं।
कुछ DBMS दो-चरण प्रतिबद्धता का समर्थन करते हैं, एक प्रक्रिया जो एक ही DBMS से संबंधित कई डेटाबेस पर लेनदेन करने की अनुमति देती है।
वितरित लेनदेन (अर्थात, विभिन्न डीबीएमएस द्वारा प्रबंधित डेटाबेस पर लेनदेन) का समर्थन करने के लिए, लेनदेन मॉनिटर नामक विशेष उपकरण हैं।
निष्कर्ष
इस लेख में, हमने रिलेशनल डीबीएमएस के निर्माण की बुनियादी अवधारणाओं, डेटा डिज़ाइन के बुनियादी सिद्धांतों पर चर्चा की, और यह भी बात की कि डेटाबेस में कौन से ऑब्जेक्ट बनाए जा सकते हैं।
अगले लेख में हम अपने पाठकों को सबसे लोकप्रिय डेस्कटॉप डीबीएमएस: डीबेस, पैराडॉक्स, एक्सेस, विजुअल फॉक्सप्रो, वर्क्स से परिचित कराएंगे और उनकी मुख्य क्षमताओं पर चर्चा करेंगे।
कंप्यूटरप्रेस 3"2000
रिलेशनल डेटाबेस का तार्किक मॉडलसंबंधपरक डेटाबेस ऑब्जेक्ट में। इस समस्या को हल करने के लिए, डेटाबेस डिज़ाइनर को यह जानना होगा: ए) रिलेशनल डेटाबेस में सैद्धांतिक रूप से कौन सी वस्तुएं हैं; बी) डेटाबेस को लागू करने के लिए चुने गए विशिष्ट डीबीएमएस द्वारा कौन सी वस्तुएं समर्थित हैं।इस प्रकार, हम मानते हैं कि डीबीएमएस चुनने का निर्णय आईटी प्रोजेक्ट मैनेजर द्वारा पहले ही किया जा चुका है और डेटाबेस ग्राहक से सहमत है, यानी। DBMS निर्दिष्ट किया गया है. डेटाबेस डिज़ाइनर को उस दस्तावेज़ की समीक्षा करनी चाहिए जो चयनित DBMS द्वारा समर्थित SQL बोली का वर्णन करता है। यह व्याख्यान मानता है कि Oracle 9i DBMS को चुना गया था, हालाँकि अधिकांश सामग्री किसी भी औद्योगिक संबंधपरक DBMS में वस्तुओं को कवर करती है।
टिप्पणी। DBMS चुनने के बारे में. डीबीएमएस का चयन करना एक बहु-मापदंड चयन समस्या है और इस पाठ्यक्रम में इस पर चर्चा नहीं की गई है। यह याद रखना चाहिए कि एक DBMS आमतौर पर केवल एक डेटा मॉडल का समर्थन करता है: रिलेशनल, पदानुक्रमित, नेटवर्क, बहुआयामी, ऑब्जेक्ट-ओरिएंटेड, ऑब्जेक्ट-रिलेशनल। अपवाद DBMS की एक छोटी संख्या है। उदाहरण के लिए, ADABAS, सॉफ़्टवेयर AG (नेटवर्क और रिलेशनल मॉडल), या Oracle 9i, Oracle Inc. (संबंधपरक और वस्तु-संबंधपरक मॉडल)। आमतौर पर, DBMS चुनते समय, अन्य सभी संभावनाएँ समान होने पर, वे DBMS पर एक डेटाबेस बनाने का प्रयास करते हैं जो एक उद्योग मानक होने का दावा करता है।
रिलेशनल डेटाबेस ऑब्जेक्ट्स का पदानुक्रम SQL मानकों में निर्धारित है, विशेष रूप से, SQL-92 मानक में, जिस पर हम इस व्याख्यान में सामग्री प्रस्तुत करते समय ध्यान केंद्रित करेंगे। यह मानक डेस्कटॉप सहित लगभग सभी आधुनिक DBMS द्वारा समर्थित है। रिलेशनल डेटाबेस ऑब्जेक्ट का पदानुक्रम नीचे दिए गए चित्र में दिखाया गया है।
सबसे निचले स्तर पर सबसे छोटी वस्तुएँ होती हैं जिनके साथ एक रिलेशनल डेटाबेस काम करता है - कॉलम (स्तंभ) और पंक्तियाँ। बदले में, उन्हें तालिकाओं और दृश्यों में समूहीकृत किया जाता है।
टिप्पणी। व्याख्यान के संदर्भ में, विशेषताएँ, कॉलम, कॉलम और फ़ील्ड को पर्यायवाची माना जाता है। यही बात "पंक्ति", "रिकॉर्ड" और "ट्यूपल" शब्दों पर भी लागू होती है।
तालिकाएँ और दृश्य, जो डेटाबेस की तार्किक संरचना के भौतिक प्रतिनिधित्व का प्रतिनिधित्व करते हैं, एक स्कीमा में इकट्ठे किए जाते हैं। एकाधिक स्कीमा को कैटलॉग में एकत्र किया जाता है, जिसे बाद में समूहों में समूहीकृत किया जा सकता है। यह ध्यान दिया जाना चाहिए कि SQL-92 मानक की वस्तुओं का कोई भी समूह कंप्यूटर मेमोरी में सूचना के भौतिक भंडारण के लिए संरचनाओं से जुड़ा नहीं है।
चावल। 8.1.
चित्र में दिखाए गए ऑब्जेक्ट के अलावा, इंडेक्स, ट्रिगर, ईवेंट, संग्रहीत कमांड, संग्रहीत प्रक्रियाएं और कई अन्य एक रिलेशनल डेटाबेस में बनाए जा सकते हैं। अब रिलेशनल डेटाबेस ऑब्जेक्ट्स को परिभाषित करने के लिए आगे बढ़ते हैं।
रिलेशनल डेटाबेस की मूल वस्तुएं
क्लस्टर, निर्देशिकाएं और स्कीमा मानक के आवश्यक तत्व नहीं हैं और इसलिए एक रिलेशनल डेटाबेस सॉफ़्टवेयर वातावरण के लिए आवश्यक तत्व नहीं हैं।
क्लस्टर निर्देशिकाओं का एक समूह है जिसे डेटाबेस सर्वर (डीबीएमएस सॉफ्टवेयर घटक) के एकल कनेक्शन के माध्यम से एक्सेस किया जा सकता है।
व्यवहार में प्रक्रिया एक निर्देशिका बनानाएक विशिष्ट ऑपरेटिंग प्लेटफ़ॉर्म पर DBMS के कार्यान्वयन द्वारा निर्धारित किया जाता है। कैटलॉग योजनाओं का एक समूह है। व्यवहार में, एक निर्देशिका अक्सर भौतिक ऑपरेटिंग सिस्टम फ़ाइलों के संग्रह के रूप में एक भौतिक डेटाबेस से जुड़ी होती है जिसे उसके नाम से पहचाना जाता है।
एक डेटाबेस डिजाइनर के लिए, एक स्कीमा एक संपूर्ण डेटाबेस के संबंधों का एक समग्र तार्किक प्रतिनिधित्व है। SQL शब्दों में, एक स्कीमा तालिकाओं, दृश्यों और रिलेशनल डेटाबेस के अन्य संरचनात्मक तत्वों के लिए एक कंटेनर है। प्रत्येक स्कीमा में डेटाबेस तत्वों का स्थान पूरी तरह से डेटाबेस डिजाइनर द्वारा निर्धारित किया जाता है।
तालिकाएँ और दृश्य बनाने के लिए आपको किसी स्कीमा की आवश्यकता नहीं है। यदि आप केवल एक तार्किक डेटाबेस स्थापित करने की योजना बना रहे हैं, तो यह स्पष्ट है कि आप स्कीमा के बिना भी ऐसा कर सकते हैं। लेकिन यदि आप कई डेटाबेस का समर्थन करने के लिए एक ही DBMS का उपयोग करने की योजना बनाते हैं, तो डेटाबेस ऑब्जेक्ट को स्कीमा में ठीक से व्यवस्थित करने से उन डेटाबेस को बनाए रखना बहुत आसान हो सकता है। व्यवहार में, एक स्कीमा अक्सर भौतिक डेटाबेस में किसी विशिष्ट उपयोगकर्ता की वस्तुओं से जुड़ी होती है।
इसके बाद, रिलेशनल डेटाबेस ऑब्जेक्ट्स को Oracle 9i रिलेशनल DBMS के संदर्भ में दर्ज किया जाएगा। डिज़ाइन के लिए इस दृष्टिकोण को अपनाया गया था रिलेशनल डेटाबेस का भौतिक मॉडलएक विशिष्ट कार्यान्वयन परिवेश के लिए किया जाता है।
Oracle 9i में, स्कीमा शब्द का उपयोग उपयोगकर्ता द्वारा बनाए गए सभी डेटाबेस ऑब्जेक्ट का वर्णन करने के लिए किया जाता है। प्रत्येक नए उपयोगकर्ता के लिए एक नया स्कीमा स्वचालित रूप से बनाया जाता है।
संबंधपरक डेटाबेस में मुख्य वस्तुओं में तालिका, दृश्य और उपयोगकर्ता शामिल हैं।
तालिका एक रिलेशनल डेटाबेस की मूल संरचना है। यह डेटा भंडारण की एक इकाई - एक संबंध का प्रतिनिधित्व करता है। डेटाबेस में एक तालिका को उसके विशिष्ट नाम से पहचाना जाता है, जिसमें उपयोगकर्ता की पहचान शामिल होती है। तालिका खाली हो सकती है या पंक्तियों के समूह से युक्त हो सकती है।
व्यू एक या अधिक डेटाबेस तालिकाओं से नामित, गतिशील रूप से बनाए रखा गया DBMS चयन है। फ़ेच ऑपरेटर उपयोगकर्ता को दिखाई देने वाले डेटा को सीमित करता है। आमतौर पर, DBMS दृश्य की प्रासंगिकता की गारंटी देता है - यह हर बार दृश्य का उपयोग करने पर उत्पन्न होता है। कभी-कभी विचार बुलाये जाते हैं वर्चुअल टेबल.
उपयोगकर्ता एक ऑब्जेक्ट है जिसमें अन्य डेटाबेस ऑब्जेक्ट बनाने या उपयोग करने की क्षमता होती है और डीबीएमएस फ़ंक्शंस के निष्पादन का अनुरोध करता है, जैसे सत्र आयोजित करना, डेटाबेस की स्थिति बदलना आदि।
वस्तुओं को पहचानना और नाम देना आसान बनाने के लिए, डेटाबेस पर्यायवाची, अनुक्रम और जैसी वस्तुओं का समर्थन करता है।
समानार्थी शब्द ( समानार्थी शब्द)- यह वैकल्पिक नामएक रिलेशनल डेटाबेस का ऑब्जेक्ट (उपनाम) जो आपको इस ऑब्जेक्ट तक पहुंच की अनुमति देता है। एक पर्यायवाची सामान्य या निजी हो सकता है। एक सामान्य पर्यायवाची सभी डेटाबेस उपयोगकर्ताओं को संबंधित ऑब्जेक्ट को उसके उपनाम से संदर्भित करने की अनुमति देता है। एक पर्यायवाची आपको डेटाबेस में किसी ऑब्जेक्ट की पूरी योग्यता को अंतिम उपयोगकर्ताओं से छिपाने की अनुमति देता है।
अनुक्रम एक डेटाबेस ऑब्जेक्ट है जो आपको बहु-उपयोगकर्ता एसिंक्रोनस एक्सेस में अद्वितीय संख्याओं (संख्याओं) का अनुक्रम उत्पन्न करने की अनुमति देता है। आमतौर पर, अनुक्रम तत्वों का उपयोग डेटा संशोधन कार्यों में तालिका तत्वों (पंक्तियों) को विशिष्ट रूप से क्रमांकित करने के लिए किया जाता है।
उपयोगकर्ता-परिभाषित डेटा प्रकार (उपयोगकर्ता-परिभाषित डेटा प्रकार)उपयोगकर्ता-परिभाषित विशेषता प्रकार (डोमेन) हैं जो डीबीएमएस समर्थित (अंतर्निहित) प्रकारों से भिन्न हैं। उन्हें अंतर्निहित प्रकारों के आधार पर परिभाषित किया गया है। उपयोगकर्ता-परिभाषित डेटा प्रकार DBMS वातावरण का वह हिस्सा बनता है जो ऑब्जेक्ट-ओरिएंटेड प्रतिमान के अनुसार व्यवस्थित होता है।
डेटा तक कुशल पहुंच सुनिश्चित करने के लिए, रिलेशनल डीबीएमएस कई अन्य ऑब्जेक्ट्स का समर्थन करते हैं: इंडेक्स, टेबल एरिया, क्लस्टर, सेक्शन।
इंडेक्स एक डेटाबेस ऑब्जेक्ट है जो डेटा पुनर्प्राप्ति प्रदर्शन को बेहतर बनाने और प्राथमिक कुंजी की विशिष्टता को नियंत्रित करने के लिए बनाया गया है (यदि कोई तालिका के लिए निर्दिष्ट है)। पूरी तरह से इंडेक्स टेबल (सूचकांक-संगठित टेबल) एक ही समय में टेबल और इंडेक्स दोनों के रूप में कार्य करती हैं।
टेबल-स्पेसया क्षेत्र ( टेबलस्पेस)डेटाबेस का एक नामित भाग है जिसका उपयोग तालिकाओं और अनुक्रमणिका के लिए मेमोरी आवंटित करने के लिए किया जाता है। Oracle 9i में, यह ऑपरेटिंग सिस्टम की भौतिक फ़ाइलों का तार्किक नाम है। डेटा संग्रहीत करने वाले सभी डेटाबेस ऑब्जेक्ट कुछ के अनुरूप होते हैं टेबलस्पेस. अधिकांश डेटाबेस ऑब्जेक्ट जो डेटा संग्रहीत नहीं करते हैं, वे सिस्टम टेबलस्पेस में स्थित डेटा डिक्शनरी में रहते हैं।
क्लस्टर एक ऑब्जेक्ट है जो डेटा को कई या एक तालिका में एक साथ संग्रहीत करने का तरीका परिभाषित करता है। क्लस्टर का उपयोग करने के मानदंडों में से एक यह है कि एकाधिक तालिकाओं में सामान्य कुंजी फ़ील्ड होते हैं जो एक ही SQL कमांड में उपयोग किए जाते हैं। आमतौर पर क्लस्टर किए गए कॉलम या टेबल को डेटाबेस में संग्रहीत किया जाता है हैश टेबल(अर्थात् विशेष प्रकार से)।
अनुभाग (विभाजन) एक डेटाबेस ऑब्जेक्ट है जो आपको अलग-अलग निर्दिष्ट उप-वस्तुओं के संग्रह के रूप में डेटा के साथ एक ऑब्जेक्ट का प्रतिनिधित्व करने की अनुमति देता है टेबलस्पेस. इस प्रकार, सेक्शनिंगआपको कई हार्ड ड्राइव में बहुत बड़ी तालिकाओं को वितरित करने की अनुमति देता है।
डेटा को एक विशेष तरीके से प्रोसेस करना या क्रियान्वित करना संदर्भात्मक अखंडता समर्थनडेटाबेस ऑब्जेक्ट का उपयोग किया जाता है: संग्रहीत प्रक्रिया, फ़ंक्शन, कमांड, ट्रिगर, टाइमर और बैच (ओरेकल)। इन डेटाबेस ऑब्जेक्ट का उपयोग करके, आप डेटा की तथाकथित रिकॉर्ड प्रोसेसिंग कर सकते हैं। डेटाबेस अनुप्रयोगों के दृष्टिकोण से, पंक्ति प्रसंस्करण एक समय में एक पंक्ति से डेटा की क्रमिक पुनर्प्राप्ति, उसे संसाधित करना और अगली पंक्ति को संसाधित करने के लिए आगे बढ़ना है।
ये रिलेशनल डेटाबेस ऑब्जेक्ट प्रोग्राम हैं, यानी। निष्पादन योग्य कोड. इस कोड को आमतौर पर सर्वर-साइड कोड कहा जाता है क्योंकि यह उस कंप्यूटर द्वारा निष्पादित होता है जिस पर रिलेशनल डेटाबेस इंजन स्थापित होता है। ऐसे कोड की योजना बनाना और विकसित करना रिलेशनल डेटाबेस डिजाइनर के कार्यों में से एक है।
संग्रहीत प्रक्रिया एक डेटाबेस ऑब्जेक्ट है जो विशेष डेटाबेस प्रोग्रामिंग भाषाओं (जैसे SQLWindows या PL/SQL) से SQL कमांड और/या स्टेटमेंट के नामित सेट का प्रतिनिधित्व करती है।
फ़ंक्शन एक डेटाबेस ऑब्जेक्ट है जो SQL कमांड और/या विशेष डेटाबेस प्रोग्रामिंग भाषा ऑपरेटरों के नामित सेट का प्रतिनिधित्व करता है, जो निष्पादित होने पर, एक मान लौटाता है - गणना का परिणाम।
कमांड एक नामित SQL स्टेटमेंट है जिसे डेटाबेस में पूर्व-संकलित और संग्रहीत किया जाता है। कमांड की प्रोसेसिंग गति संबंधित SQL स्टेटमेंट की तुलना में अधिक है, क्योंकि चरण निष्पादित नहीं होते हैं पदच्छेदऔर संकलन.
ट्रिगर एक डेटाबेस ऑब्जेक्ट है जो एक विशेष संग्रहीत प्रक्रिया है। जब कोई ट्रिगर इवेंट होता है तो यह प्रक्रिया स्वचालित रूप से चलती है (उदाहरण के लिए, किसी तालिका में पंक्ति डालने से पहले)।
एक टाइमर एक ट्रिगर से भिन्न होता है जिसमें संग्रहीत प्रक्रिया के लिए ट्रिगर इवेंट एक टाइमर इवेंट होता है।
पैकेज एक डेटाबेस ऑब्जेक्ट है जिसमें चर, प्रक्रियाओं और कार्यों का एक नामित, संरचित सेट होता है।
वितरित रिलेशनल DBMS में विशेष ऑब्जेक्ट होते हैं: स्नैपशॉट और डेटाबेस लिंक।
स्नैपशॉट (स्नैपशॉप) किसी दूरस्थ डेटाबेस में तालिका की एक स्थानीय प्रतिलिपि है जिसका उपयोग तालिका या क्वेरी परिणाम को दोहराने (प्रतिकृति) करने के लिए किया जाता है। स्नैपशॉट परिवर्तनीय या केवल पढ़ने योग्य हो सकते हैं।
डेटाबेस लिंक या रिमोट डेटाबेस लिंक एक डेटाबेस ऑब्जेक्ट है जो आपको रिमोट डेटाबेस में ऑब्जेक्ट तक पहुंचने की अनुमति देता है। एक डेटाबेस लिंक नाम, मोटे तौर पर, किसी दूरस्थ डेटाबेस के लिए मापदंडों तक पहुंचने के लिंक के रूप में सोचा जा सकता है।
डेटा एक्सेस नियंत्रण को प्रभावी ढंग से प्रबंधित करने के लिए, Oracle एक रोल ऑब्जेक्ट का समर्थन करता है।
भूमिका एक डेटाबेस ऑब्जेक्ट है जो विशेषाधिकारों का एक नामित सेट है जिसे उपयोगकर्ताओं, उपयोगकर्ताओं की श्रेणियों या अन्य भूमिकाओं को सौंपा जा सकता है।
संबंधपरक डेटाबेस की मूल अवधारणाएँ डेटा प्रकार, डोमेन, विशेषता, टपल, प्राथमिक कुंजी और संबंध हैं। आइए हम कर्मचारी संबंध के उदाहरण का उपयोग करके इन अवधारणाओं का अर्थ दिखाएं, जिसमें एक निश्चित संगठन के कर्मचारियों के बारे में जानकारी शामिल है:
1. डेटा प्रकार
अवधारणा डेटा प्रकाररिलेशनल डेटा मॉडल प्रोग्रामिंग भाषाओं में डेटा प्रकार की अवधारणा के लिए पूरी तरह से पर्याप्त है। आमतौर पर, आधुनिक संबंधपरक डेटाबेस चरित्र, संख्यात्मक डेटा, बिट स्ट्रिंग्स, विशेष संख्यात्मक डेटा (जैसे "पैसा"), साथ ही विशेष "अस्थायी" डेटा (दिनांक, समय, समय अंतराल) के भंडारण की अनुमति देते हैं। अमूर्त डेटा प्रकारों के साथ संबंधपरक प्रणालियों की क्षमताओं का विस्तार करने का एक दृष्टिकोण काफी सक्रिय रूप से विकसित हो रहा है (उदाहरण के लिए, इंग्रेस/पोस्टग्रेज परिवार की प्रणालियों में संबंधित क्षमताएं हैं)। हमारे उदाहरण में, हम तीन प्रकार के डेटा से निपट रहे हैं: वर्ण स्ट्रिंग, पूर्णांक, और "पैसा"।
2. डोमेन
अवधारणा कार्यक्षेत्रडेटाबेस के लिए अधिक विशिष्ट, हालाँकि इसमें कुछ प्रोग्रामिंग भाषाओं में उपटाइपिंग के साथ कुछ समानताएँ हैं। अपने सबसे सामान्य रूप में, एक डोमेन को कुछ आधार डेटा प्रकार को निर्दिष्ट करके परिभाषित किया जाता है जिससे डोमेन के तत्व संबंधित होते हैं, और डेटा प्रकार के तत्व पर लागू एक मनमाना तार्किक अभिव्यक्ति होती है। यदि इस बूलियन अभिव्यक्ति का मूल्यांकन सत्य होता है, तो डेटा तत्व एक डोमेन तत्व है। किसी डोमेन की अवधारणा की सबसे सही सहज व्याख्या डोमेन को किसी दिए गए प्रकार के मूल्यों के स्वीकार्य संभावित सेट के रूप में समझना है। उदाहरण के लिए, हमारे उदाहरण में "नाम" डोमेन को बेस कैरेक्टर स्ट्रिंग प्रकार पर परिभाषित किया गया है, लेकिन इसके मानों में केवल वे स्ट्रिंग्स शामिल हो सकते हैं जो किसी नाम का प्रतिनिधित्व कर सकते हैं (विशेष रूप से, ऐसे स्ट्रिंग्स सॉफ्ट कैरेक्टर से शुरू नहीं हो सकते हैं)। डोमेन अवधारणा के सिमेंटिक लोड पर भी ध्यान दिया जाना चाहिए: डेटा को तभी तुलनीय माना जाता है जब वे एक ही डोमेन से संबंधित हों। हमारे उदाहरण में, डोमेन मान "गैप नंबर" और "ग्रुप नंबर" पूर्णांक प्रकार के हैं, लेकिन तुलनीय नहीं हैं। ध्यान दें कि अधिकांश रिलेशनल DBMS किसी डोमेन की अवधारणा का उपयोग नहीं करते हैं, हालाँकि Oracle V.7 पहले से ही इसका समर्थन करता है।
3. संबंध स्कीमा, डेटाबेस स्कीमा
एक संबंध स्कीमा जोड़े का एक नामित सेट है (विशेषता नाम, डोमेन नाम (या यदि डोमेन अवधारणा समर्थित नहीं है तो प्रकार))। किसी संबंध योजना की डिग्री या "क्षमता" इस सेट की प्रमुखता है। कर्मचारी संबंध की डिग्री चार है, यानी यह 4-एरी है। यदि एक संबंध की सभी विशेषताओं को अलग-अलग डोमेन पर परिभाषित किया गया है, तो विशेषताओं को नाम देने के लिए संबंधित डोमेन के नामों का उपयोग करना समझ में आता है (बेशक, यह याद रखना कि यह नामकरण का एक सुविधाजनक तरीका है और बीच के अंतर को खत्म नहीं करता है) डोमेन और विशेषता की अवधारणाएँ)। एक डेटाबेस स्कीमा (संरचनात्मक अर्थ में) नामित संबंध स्कीमा का एक सेट है।
4. टपल, संबंध
किसी दिए गए संबंध स्कीमा के अनुरूप एक टपल (विशेषता नाम, मान) जोड़े का एक सेट है जिसमें संबंध स्कीमा से संबंधित प्रत्येक विशेषता नाम की एक घटना होती है। "मान" विशेषता के डोमेन के लिए एक वैध मान है (या यदि डोमेन अवधारणा समर्थित नहीं है तो डेटा प्रकार)। इस प्रकार, टुपल की डिग्री या "एरीटी", यानी इसमें तत्वों की संख्या संबंधित संबंध योजना की "एरीटी" से मेल खाती है। सीधे शब्दों में कहें तो टुपल किसी दिए गए प्रकार के नामित मानों का एक संग्रह है।
एक संबंध एकल संबंध स्कीमा के अनुरूप टुपल्स का एक सेट है। कभी-कभी, भ्रम से बचने के लिए, वे "रिलेशनशिप-स्कीमा" और "रिलेशनशिप-इंस्टेंस" कहते हैं; कभी-कभी किसी रिलेशन की स्कीमा को रिलेशन का हेड कहा जाता है, और टुपल्स के सेट के रूप में रिलेशन को रिलेशन का बॉडी कहा जाता है। वास्तव में, संबंध स्कीमा की अवधारणा प्रोग्रामिंग भाषाओं में संरचनात्मक डेटा प्रकार की अवधारणा के सबसे करीब है। किसी संबंध स्कीमा को अलग से परिभाषित करने की अनुमति देना और फिर उस स्कीमा के साथ एक या अधिक संबंधों को अनुमति देना काफी तर्कसंगत होगा।
किसी संबंध का सामान्य रोजमर्रा का प्रतिनिधित्व एक तालिका है, जिसका शीर्षलेख संबंध की स्कीमा है, और पंक्तियाँ उदाहरण संबंध के टुपल्स हैं; इस स्थिति में, विशेषता नाम उस तालिका के कॉलम को नाम देते हैं। यही कारण है कि लोग कभी-कभी "टेबल कॉलम" कहते हैं जब उनका अर्थ "संबंध विशेषता" होता है। रिलेशनल डेटाबेस रिश्तों का एक समूह है जिनके नाम डेटाबेस स्कीमा में रिलेशनशिप स्कीमा के नाम के समान होते हैं।
रिश्तों के मौलिक गुण
1. डुप्लिकेट टुपल्स का अभाव
यह गुण कि संबंधों में डुप्लिकेट टुपल्स नहीं होते हैं, टुपल्स के एक सेट के रूप में संबंध की परिभाषा से अनुसरण करता है। शास्त्रीय सेट सिद्धांत में, परिभाषा के अनुसार, प्रत्येक सेट में अलग-अलग तत्व होते हैं। इस संपत्ति का तात्पर्य है कि प्रत्येक रिश्ते में एक तथाकथित प्राथमिक कुंजी होती है - विशेषताओं का एक सेट जिसका मान विशिष्ट रूप से संबंध टपल को परिभाषित करता है। प्रत्येक संबंध के लिए, कम से कम उसकी विशेषताओं के पूरे सेट में यह गुण होता है। हालाँकि, प्राथमिक कुंजी को औपचारिक रूप से परिभाषित करते समय, इसकी "न्यूनतमता" सुनिश्चित करना आवश्यक है, अर्थात। प्राथमिक कुंजी विशेषताओं के सेट में वे विशेषताएँ शामिल नहीं होनी चाहिए जिन्हें मुख्य संपत्ति को नुकसान पहुँचाए बिना छोड़ा जा सकता है - विशिष्ट रूप से टपल की पहचान करना। अवधारणा प्राथमिक कुंजीडेटाबेस अखंडता की अवधारणा के संबंध में अत्यंत महत्वपूर्ण है।
2.टुपल्स के ऑर्डर का अभाव
किसी संबंध के टुपल्स के क्रम की अनुपस्थिति की संपत्ति भी टुपल्स के एक सेट के रूप में एक उदाहरण संबंध की परिभाषा का परिणाम है। किसी संबंध के टुपल्स के सेट पर ऑर्डर बनाए रखने की आवश्यकता की अनुपस्थिति बाहरी मेमोरी में डेटाबेस संग्रहीत करते समय और डेटाबेस के विरुद्ध क्वेरी निष्पादित करते समय डीबीएमएस को अतिरिक्त लचीलापन देती है। यह इस तथ्य का खंडन नहीं करता है कि डेटाबेस क्वेरी तैयार करते समय, उदाहरण के लिए, SQL में, आपको परिणामी तालिका को कुछ कॉलम के मानों के अनुसार क्रमबद्ध करने की आवश्यकता हो सकती है। ऐसा परिणाम, आम तौर पर बोलना, कोई संबंध नहीं है, बल्कि टुपल्स की कुछ क्रमबद्ध सूची है।
3.विशेषताओं के क्रम का अभाव
किसी रिश्ते की विशेषताओं को क्रमबद्ध नहीं किया जाता है क्योंकि, परिभाषा के अनुसार, एक रिश्ता स्कीमा जोड़े (विशेषता नाम, डोमेन नाम) का एक सेट है। किसी रिलेशन टुपल में किसी विशेषता मान को संदर्भित करने के लिए, विशेषता नाम का हमेशा उपयोग किया जाता है। यह संपत्ति सैद्धांतिक रूप से, उदाहरण के लिए, न केवल नई विशेषताओं को जोड़कर, बल्कि मौजूदा विशेषताओं को हटाकर मौजूदा संबंधों के स्कीमा को संशोधित करने की अनुमति देती है। हालाँकि, अधिकांश मौजूदा प्रणालियाँ इस संभावना की अनुमति नहीं देती हैं, और यद्यपि संबंध विशेषताओं के सेट का क्रम स्पष्ट रूप से आवश्यक नहीं है, संबंध स्कीमा परिभाषा के रैखिक रूप में विशेषताओं का क्रम अक्सर विशेषताओं के अंतर्निहित क्रम के रूप में उपयोग किया जाता है। .
4.गुण मानों की परमाणुता.
सभी गुणों के मूल्य परमाणु हैं। यह एक साधारण डेटा प्रकार के मानों के संभावित सेट के रूप में एक डोमेन की परिभाषा से अनुसरण करता है, अर्थात। डोमेन मानों में एकाधिक मान (संबंध) नहीं हो सकते। यह आमतौर पर कहा जाता है कि संबंधपरक डेटाबेस में केवल सामान्यीकृत संबंधों या पहले सामान्य रूप में दर्शाए गए संबंधों की अनुमति है
संबंधपरक डेटा मॉडल. डेट के अनुसार, संबंधपरक मॉडल में तीन भाग होते हैं जो संबंधपरक दृष्टिकोण के विभिन्न पहलुओं का वर्णन करते हैं: संरचनात्मक भाग, हेरफेर भाग और समग्र भाग। मॉडल का संरचनात्मक भाग बताता है कि संबंधपरक डेटाबेस में उपयोग की जाने वाली एकमात्र डेटा संरचना सामान्यीकृत एन-एरी संबंध है। मॉडल का हेरफेर भाग संबंधपरक डेटाबेस में हेरफेर करने के लिए दो मूलभूत तंत्रों की पुष्टि करता है - संबंधपरक बीजगणित और संबंधपरक कलन। पहला तंत्र मुख्य रूप से शास्त्रीय सेट सिद्धांत (कुछ परिशोधन के साथ) पर आधारित है, और दूसरा प्रथम-क्रम विधेय कलन के शास्त्रीय तार्किक तंत्र पर आधारित है।
इकाई और संदर्भ अखंडता. अंत में, रिलेशनल डेटा मॉडल का अभिन्न हिस्सा दो बुनियादी अखंडता आवश्यकताओं को ठीक करता है जिन्हें किसी भी रिलेशनल डीबीएमएस में समर्थित किया जाना चाहिए। पहली आवश्यकता कहलाती है इकाई अखंडता की आवश्यकता. संबंधपरक डेटाबेस में वास्तविक दुनिया की कोई वस्तु या इकाई संबंधों के टुपल्स से मेल खाती है। विशेष रूप से, आवश्यकता यह है कि किसी भी संबंध का कोई भी टुपल इस संबंध के किसी भी अन्य टुपल से अलग हो, यानी। दूसरे शब्दों में, किसी भी रिश्ते में प्राथमिक कुंजी होनी चाहिए। जैसा कि हमने पिछले अनुभाग में देखा, यदि सिस्टम संबंधों के मूल गुणों का उल्लंघन नहीं करता है तो यह आवश्यकता स्वचालित रूप से संतुष्ट हो जाती है। दूसरी आवश्यकता कहलाती है संदर्भात्मक अखंडता आवश्यकताऔर कुछ अधिक जटिल है. जाहिर है, यदि संबंधों को सामान्यीकृत किया जाता है, तो वास्तविक दुनिया की जटिल संस्थाओं को कई संबंधों के कई टुपल्स के रूप में एक संबंधपरक डेटाबेस में दर्शाया जाता है।
संबंधपरक संचालन और क्रमांकन.
एक संबंधपरक डेटा मॉडल प्रस्तावित करने के बाद, ई.एफ. कॉड ने रिश्तों के साथ सुविधाजनक काम के लिए एक उपकरण भी बनाया - संबंधपरक बीजगणित। इस बीजगणित का प्रत्येक ऑपरेशन अपने ऑपरेंड के रूप में एक या अधिक तालिकाओं (संबंधों) का उपयोग करता है और परिणामस्वरूप एक नई तालिका उत्पन्न करता है, अर्थात। आपको टेबलों को "काटने" या "गोंदने" की अनुमति देता है (चित्र 3.3)। चावल। 3.3. संबंधपरक बीजगणित की कुछ संक्रियाएँ
डेटा हेरफेर भाषाएँ बनाई गई हैं जो संबंधपरक बीजगणित के सभी संचालन और उनके लगभग किसी भी संयोजन को लागू करना संभव बनाती हैं। उनमें से, सबसे आम हैं SQL (संरचित क्वेरी भाषा) और QBE (क्वेर-बाय-उदाहरण) [,]। दोनों बहुत उच्च-स्तरीय भाषाएँ हैं जिनमें उपयोगकर्ता यह निर्दिष्ट करता है कि उसे प्राप्त करने की प्रक्रिया निर्दिष्ट किए बिना किस डेटा को प्राप्त करने की आवश्यकता है। इनमें से किसी भी भाषा में एक ही क्वेरी के साथ, आप कई तालिकाओं को एक अस्थायी तालिका में जोड़ सकते हैं और उसमें से आवश्यक पंक्तियों और स्तंभों को काट सकते हैं (चयन और प्रक्षेपण)।
व्याख्यान डीबी अध्याय 2 संबंधपरक डेटाबेस 2.1. शब्द और परिभाषाएंरिलेशनल डेटाबेस का विकास 1960 के दशक के अंत में शुरू हुआ, जब पहला काम सामने आया जिसमें तालिकाओं के रूप में डेटा प्रस्तुति को औपचारिक बनाने के लिए विशेषज्ञों से परिचित तरीकों का उपयोग करने की संभावनाओं पर चर्चा की गई। कुछ विशेषज्ञों ने सूचना निर्णय प्रस्तुत करने की इस पद्धति को तालिकाएँ कहा, अन्य ने इसे सारणीबद्ध एल्गोरिदम कहा। रिलेशनल डेटाबेस के सिद्धांतकारों ने सूचना डेटालॉजिकल मॉडल प्रस्तुत करने की सारणीबद्ध विधि को कहा। रिलेशनल डेटाबेस के सिद्धांत के संस्थापक को आईबीएम कर्मचारी डॉ. ई. एफ. कॉड माना जाता है, जिन्होंने 6 जून, 1970 को "बड़े साझा डेटा बैंकों के लिए डेटा का एक रिलेशनल मॉडल" लेख प्रकाशित किया था। इस लेख में, "रिलेशनल डेटा मॉडल" शब्द का पहली बार उपयोग किया गया था, जिसने रिलेशनल डेटाबेस की शुरुआत को चिह्नित किया। रिलेशनल डेटाबेस सिद्धांत 1970 के दशक में विकसित हुआ। संयुक्त राज्य अमेरिका में डॉ. ई.एफ. कॉड द्वारा सेट सिद्धांत के गणितीय उपकरण पर भरोसा किया गया। उन्होंने साबित किया कि डेटा के किसी भी सेट को एक विशेष प्रकार की द्वि-आयामी तालिकाओं के रूप में दर्शाया जा सकता है, जिसे गणित में संबंधों के रूप में जाना जाता है। "रिलेशनल डेटा मॉडल" नाम अंग्रेजी शब्द "रिलेशन" से आया है। वर्तमान में, डेटाबेस (डीबी) को डिजाइन करने का सैद्धांतिक आधार संबंधपरक बीजगणित का गणितीय उपकरण है (उपधारा 1.2 देखें)। इस प्रकार, एक संबंधपरक डेटाबेस वस्तुओं के बारे में जानकारी (डेटा) है, जो कुछ कनेक्शनों द्वारा एकजुट होकर दो-आयामी सरणियों - तालिकाओं के रूप में प्रस्तुत किया जाता है। डेटाबेस में एक तालिका भी शामिल हो सकती है। रिलेशनल डेटाबेस के आगे के अध्ययन के लिए आगे बढ़ने से पहले, आइए सिद्धांत और व्यवहार में उपयोग किए जाने वाले शब्दों और परिभाषाओं पर विचार करें। डेटाबेस तालिका- एक द्वि-आयामी सरणी जिसमें वस्तुओं के एक वर्ग के बारे में जानकारी होती है। संबंधपरक बीजगणित के सिद्धांत में द्वि-आयामी सारणी (तालिका) को कहा जाता है नज़रिया।तालिका में निम्नलिखित तत्व शामिल हैं: फ़ील्ड, सेल, रिकॉर्ड (चित्र 2.1)। मैदानइसमें डेटाबेस ऑब्जेक्ट को चिह्नित करने वाली विशेषताओं में से एक का मान शामिल है। तालिका में फ़ील्ड की संख्या डेटाबेस ऑब्जेक्ट को चिह्नित करने वाली विशेषताओं की संख्या से मेल खाती है। 22 कक्षसंबंधित फ़ील्ड (एक वस्तु की विशेषता) का विशिष्ट मान शामिल है। अभिलेख- टेबल की पंक्ति। इसमें उन सभी विशेषताओं के मान शामिल हैं जो एक वस्तु की विशेषता बताते हैं। रिकॉर्ड (पंक्तियों) की संख्या उन वस्तुओं की संख्या से मेल खाती है जिनका डेटा तालिका में निहित है। डेटाबेस सिद्धांत में, शब्द रिकॉर्डिंगअवधारणा के अनुरूप है मुख्य- AND संबंध द्वारा परस्पर जुड़ी विशेषताओं का एक क्रम। ग्राफ सिद्धांत में मोटरों की पाँतइसका अर्थ है निर्देशित ग्राफ़ की एक साधारण शाखा - एक पेड़। तालिका में 2.1 संबंधपरक डेटाबेस विकसित करने के सिद्धांत और व्यवहार में प्रयुक्त शब्दों को दर्शाता है। संबंधपरक डेटाबेस की इष्टतम संरचना के निर्माण के लिए आवश्यक महत्वपूर्ण अवधारणाओं में से एक कुंजी या कुंजी क्षेत्र की अवधारणा है। चाबीएक फ़ील्ड को माना जाता है जिसके मान विशिष्ट रूप से तालिका में अन्य सभी फ़ील्ड के मान निर्धारित करते हैं। उदाहरण के लिए, फ़ील्ड "पासपोर्ट नंबर", या "करदाता पहचान संख्या (टीआईएन)", स्पष्ट रूप से किसी भी व्यक्ति की विशेषताओं को निर्धारित करता है (मानव संसाधन विभागों या किसी उद्यम के लेखा विभागों के लिए संबंधित डेटाबेस तालिकाओं को संकलित करते समय)। 23
किसी तालिका की कुंजी एक नहीं, बल्कि कई फ़ील्ड हो सकती हैं। इस मामले में, फ़ील्ड का एक सेट केवल एक संभावित तालिका कुंजी हो सकता है यदि दो समय-स्वतंत्र शर्तें संतुष्ट हों: विशिष्टता और न्यूनतमता। प्रत्येक फ़ील्ड जो प्राथमिक कुंजी का हिस्सा नहीं है, उसे तालिका का गैर-कुंजी फ़ील्ड कहा जाता है।
विशिष्टताकुंजी का अर्थ है कि किसी भी समय डेटाबेस तालिका में कोई भी दो अलग-अलग रिकॉर्ड नहीं हो सकते हैं जिनमें समान कुंजी फ़ील्ड मान हों। विशिष्टता शर्त की पूर्ति अनिवार्य है। स्थिति अतिसूक्ष्मवादमुख्य फ़ील्ड का अर्थ है कि केवल चयनित फ़ील्ड के मानों का संयोजन ही डेटाबेस तालिका रिकॉर्ड की विशिष्टता की आवश्यकताओं को पूरा करता है। इसका मतलब यह भी है कि कुंजी में शामिल किसी भी फ़ील्ड को विशिष्टता का उल्लंघन किए बिना इससे बाहर नहीं किया जा सकता है। कई फ़ील्ड वाली डेटाबेस तालिका के लिए एक कुंजी बनाते समय, आपको निम्नलिखित प्रावधानों द्वारा निर्देशित किया जाना चाहिए: आपको कुंजी तालिका में उन फ़ील्ड को शामिल नहीं करना चाहिए जिनके मान स्वयं विशिष्ट रूप से तालिका में रिकॉर्ड की पहचान करते हैं। उदाहरण के लिए, आपको ऐसी कुंजी नहीं बनानी चाहिए जिसमें "पासपोर्ट संख्या" और "करदाता पहचान संख्या" दोनों फ़ील्ड हों, क्योंकि इनमें से प्रत्येक विशेषता तालिका में रिकॉर्ड को विशिष्ट रूप से पहचान सकती है; आप कुंजी में एक गैर-अद्वितीय फ़ील्ड शामिल नहीं कर सकते, अर्थात ऐसा फ़ील्ड जिसका मान तालिका में दोहराया जा सकता है। प्रत्येक तालिका में कम से कम एक संभावित कुंजी होनी चाहिए, जिसे इस प्रकार चुना गया है प्राथमिक कुंजी।यदि तालिका में फ़ील्ड हैं, जिनमें से प्रत्येक का मान विशिष्ट रूप से रिकॉर्ड की पहचान करता है, तो इन फ़ील्ड को इस प्रकार लिया जा सकता है वैकल्पिक कुंजियाँ.उदाहरण के लिए, यदि आप करदाता पहचान संख्या को प्राथमिक कुंजी के रूप में चुनते हैं, तो पासपोर्ट संख्या वैकल्पिक कुंजी होगी। 2.2. संबंधपरक डेटाबेस तालिकाओं को सामान्य बनानारिलेशनल डेटाबेस आपस में जुड़ी हुई तालिकाओं का एक सेट है। एक फ़ाइल या एक डेटाबेस में तालिकाओं की संख्या कई कारकों पर निर्भर करती है, जिनमें से मुख्य हैं: डेटाबेस उपयोगकर्ताओं की संरचना, जानकारी की अखंडता सुनिश्चित करना (विशेष रूप से बहु-उपयोगकर्ता सूचना प्रणालियों में महत्वपूर्ण), आवश्यक न्यूनतम मात्रा में मेमोरी सुनिश्चित करना और न्यूनतम समय डेटा प्रोसेसिंग। 24संबंधपरक डेटाबेस को डिज़ाइन करते समय इन कारकों को ध्यान में रखते हुए तालिकाओं को सामान्य बनाने और उनके बीच संबंध स्थापित करने के तरीकों का उपयोग किया जाता है।
तालिकाओं को सामान्य बनानाएक डेटाबेस तालिका को कई तालिकाओं में विभाजित करने के तरीकों का प्रतिनिधित्व करता है जो आम तौर पर ऊपर सूचीबद्ध आवश्यकताओं को पूरा करते हैं। तालिका सामान्यीकरण तालिका की संरचना में एक क्रमिक परिवर्तन है जब तक कि यह सामान्यीकरण के अंतिम रूप की आवश्यकताओं को पूरा नहीं करता है। सामान्यीकरण के कुल छह रूप हैं:- पहला सामान्य फॉर्म (पहला सामान्य फॉर्म - 1NF); दूसरा सामान्य फॉर्म (दूसरा सामान्य फॉर्म - 2NF); तीसरा सामान्य रूप (तीसरा सामान्य रूप - ЗNF); ब्राइस - कॉड सामान्य फॉर्म -बीसीएनएफ; चौथा सामान्य रूप (फोर्थसामान्य प्रपत्र - 4NF); पाँचवाँ सामान्य रूप, या प्रक्षेपण-जंक्शन सामान्य रूप (पाँचवाँ सामान्य रूप - 5एनएफ, या पीजे/एनएफ) ).
![](https://i0.wp.com/refdb.ru/images/1652/3302801/41ced5ba.jpg)
फ़ील्ड "समग्र आयाम (लंबाई x चौड़ाई x ऊंचाई), मिमी", को तीन फ़ील्ड में विभाजित किया गया है: "लंबाई, मिमी", "चौड़ाई, मिमी", "ऊंचाई, मिमी"। इस तालिका का मुख्य फ़ील्ड "मशीन मॉडल" या "आइटम नंबर" हो सकता है। तालिका में सामान्य प्रपत्र प्रकार होता है। 2.3. आइए एक और उदाहरण देखें. चित्र में. चित्र 2.2 परीक्षण और परीक्षा शीट फॉर्म का एक टुकड़ा दिखाता है, जो पिछले उदाहरण की तरह, मूल रूप से कंप्यूटर प्रसंस्करण के लिए नहीं था। मान लीजिए कि हम परीक्षण और परीक्षा सत्र के परिणामों के स्वचालित प्रसंस्करण के लिए एक डेटाबेस बनाना चाहते हैं 27
परीक्षण और परीक्षा शीट की सामग्री के साथ। ऐसा करने के लिए, हम प्रपत्र की सामग्री को डेटाबेस तालिकाओं में परिवर्तित करते हैं। फ़ील्ड के बीच कार्यात्मक निर्भरता की शर्तों का पालन करने की आवश्यकता के आधार पर, कम से कम दो तालिकाएँ बनाना आवश्यक है (चित्र 2.3) (प्रत्येक तालिका में मुख्य फ़ील्ड बोल्ड में हाइलाइट किए गए हैं)। पहली तालिका में प्रत्येक छात्र द्वारा एक विशिष्ट विषय में परीक्षा (परीक्षा) उत्तीर्ण करने के परिणाम शामिल हैं। दूसरी तालिका में एक विशिष्ट विषय में छात्रों के एक विशिष्ट समूह के परीक्षण (परीक्षा) उत्तीर्ण करने के अंतिम परिणाम शामिल हैं। पहली तालिका में, मुख्य फ़ील्ड "छात्र का नाम" है, और दूसरी तालिका में - "अनुशासन" फ़ील्ड है। तालिकाओं को "अनुशासन" और "समूह कोड" फ़ील्ड द्वारा एक दूसरे से जोड़ा जाना चाहिए।
प्रस्तुत तालिका संरचनाएं पहले सामान्य फॉर्म की आवश्यकताओं को पूरी तरह से पूरा करती हैं, लेकिन निम्नलिखित नुकसानों की विशेषता है: तालिकाओं में नया डेटा जोड़ने के लिए सभी क्षेत्रों के लिए मान दर्ज करने की आवश्यकता होती है; प्रत्येक तालिका की प्रत्येक पंक्ति में "अनुशासन", "शिक्षक का पूरा नाम", "समूह कोड" फ़ील्ड के लिए दोहराया मान दर्ज करना आवश्यक है। नतीजतन, तालिकाओं की ऐसी संरचना और उनकी संरचना के साथ, जानकारी का स्पष्ट अतिरेक होता है, जिसके लिए स्वाभाविक रूप से अतिरिक्त मात्रा में मेमोरी की आवश्यकता होगी। सूचीबद्ध नुकसानों से बचने के लिए, तालिकाओं को दूसरे या तीसरे सामान्य रूप में कम करना आवश्यक है। दूसरा सामान्य रूप.एक तालिका दूसरे सामान्य रूप में होती है यदि यह पहले सामान्य रूप की आवश्यकताओं को पूरा करती है और इसके सभी फ़ील्ड जो प्राथमिक कुंजी में शामिल नहीं हैं, पूरी तरह कार्यात्मक रूप से प्राथमिक कुंजी पर निर्भर हैं। 28
यदि किसी तालिका में केवल एक फ़ील्ड वाली सरल प्राथमिक कुंजी है, तो यह स्वचालित रूप से दूसरे सामान्य रूप में होती है।
यदि प्राथमिक कुंजी समग्र है, तो तालिका आवश्यक रूप से दूसरे सामान्य रूप में नहीं है। फिर इसे दो या दो से अधिक तालिकाओं में विभाजित किया जाना चाहिए ताकि प्राथमिक कुंजी किसी भी क्षेत्र में मूल्य की विशिष्ट पहचान कर सके। यदि तालिका में कम से कम एक फ़ील्ड है जो प्राथमिक कुंजी पर निर्भर नहीं है, तो अतिरिक्त कॉलम को प्राथमिक कुंजी में शामिल किया जाना चाहिए। यदि ऐसे कोई कॉलम नहीं हैं, तो आपको एक नया कॉलम जोड़ना होगा। दूसरे सामान्य रूप को निर्धारित करने वाली इन स्थितियों के आधार पर, संकलित तालिकाओं की विशेषताओं के संबंध में निम्नलिखित निष्कर्ष निकाले जा सकते हैं (चित्र 2.3 देखें)। पहली तालिका में मुख्य फ़ील्ड और "शिक्षक का नाम" फ़ील्ड के बीच कोई सीधा संबंध नहीं है, क्योंकि एक विषय में एक परीक्षण या परीक्षा विभिन्न शिक्षकों द्वारा ली जा सकती है। तालिका में केवल अन्य सभी क्षेत्रों और मुख्य क्षेत्र "अनुशासन" के बीच पूर्ण कार्यात्मक निर्भरता है। इसी प्रकार, दूसरी तालिका में मुख्य फ़ील्ड और "शिक्षक का नाम" फ़ील्ड के बीच कोई सीधा संबंध नहीं है। डेटाबेस को अनुकूलित करने के लिए, विशेष रूप से प्रत्येक रिकॉर्ड में "अनुशासन" और "शिक्षक का नाम" फ़ील्ड के मूल्यों को दोहराने की आवश्यकता के कारण मेमोरी की आवश्यक मात्रा को कम करने के लिए, की संरचना को बदलना आवश्यक है डेटाबेस - मूल तालिकाओं को दूसरे सामान्य रूप में परिवर्तित करें। संशोधित डेटाबेस संरचना में तालिकाओं की संरचना चित्र में दिखाई गई है। 2.4. रूपांतरित डेटाबेस संरचना में छह तालिकाएँ होती हैं, जिनमें से दो आपस में जुड़ी हुई हैं (प्रत्येक तालिका में मुख्य फ़ील्ड बोल्ड में हाइलाइट किए गए हैं)। सभी तालिकाएँ दूसरे सामान्य फॉर्म की आवश्यकताओं को पूरा करती हैं। पाँचवीं और छठी तालिकाओं में उनके फ़ील्ड में डुप्लिकेट मान हैं, लेकिन यह देखते हुए कि ये मान टेक्स्ट डेटा के बजाय पूर्णांक हैं, जानकारी संग्रहीत करने के लिए आवश्यक मेमोरी की कुल मात्रा मूल तालिकाओं की तुलना में काफी कम है (चित्र 2.1 देखें) . इसके अलावा, नई डेटाबेस संरचना विभिन्न विशेषज्ञों (प्रबंधन सेवाओं के प्रभाग) द्वारा तालिकाओं को भरने की क्षमता प्रदान करेगी। डेटाबेस तालिकाओं का और अधिक अनुकूलन उन्हें तीसरे सामान्य रूप में लाने के लिए आता है। तीसरा सामान्य रूप.एक तालिका तीसरे सामान्य रूप में होती है यदि यह दूसरे सामान्य रूप की परिभाषा को संतुष्ट करती है और इसका कोई भी गैर-कुंजी फ़ील्ड कार्यात्मक रूप से किसी अन्य गैर-कुंजी फ़ील्ड पर निर्भर नहीं होता है। 29
आप यह भी कह सकते हैं कि एक तालिका तीसरे सामान्य रूप में है यदि यह दूसरे सामान्य रूप में है और प्रत्येक गैर-कुंजी फ़ील्ड प्राथमिक कुंजी पर सकर्मक रूप से निर्भर नहीं है। तीसरे सामान्य फॉर्म की आवश्यकता यह है कि सभी गैर-कुंजी फ़ील्ड केवल प्राथमिक कुंजी पर निर्भर हों और एक-दूसरे से स्वतंत्र हों। इन आवश्यकताओं के अनुसार, डेटाबेस तालिकाओं के भाग के रूप में (चित्र 2.3 देखें), तीसरे सामान्य रूप में पहली, दूसरी, तीसरी और चौथी तालिकाएँ शामिल हैं। पाँचवीं और छठी तालिकाओं को तीसरे सामान्य रूप में लाने के लिए, हम एक नई तालिका बनाएंगे जिसमें उन विषयों की संरचना के बारे में जानकारी होगी जिनके लिए छात्रों के समूहों में परीक्षा या परीक्षण आयोजित किए जाते हैं। एक कुंजी के रूप में, हम एक "काउंटर" फ़ील्ड बनाएंगे जो तालिका में रिकॉर्ड संख्या सेट करता है, क्योंकि प्रत्येक रिकॉर्ड अद्वितीय होना चाहिए। तीस
परिणामस्वरूप, हमें एक नई डेटाबेस संरचना प्राप्त होती है, जिसे चित्र में दिखाया गया है। 2.5 (प्रत्येक तालिका में मुख्य फ़ील्ड बोल्ड में हाइलाइट किए गए हैं)। इस संरचना में सात तालिकाएँ हैं जो तीसरे सामान्य फॉर्म की आवश्यकताओं को पूरा करती हैं।
बॉयस का सामान्य रूप कॉड है।एक तालिका बॉयस-कॉड सामान्य रूप में तभी होती है जब इसके क्षेत्रों के बीच कोई कार्यात्मक निर्भरता संभावित कुंजी पर पूर्ण कार्यात्मक निर्भरता में कम हो जाती है। इस परिभाषा के अनुसार, डेटाबेस संरचना में (चित्र 2.4 देखें) सभी तालिकाएँ बॉयस-कॉड सामान्य रूप की आवश्यकताओं को पूरा करती हैं। तालिकाओं के पूर्ण विघटन के लिए डेटाबेस तालिकाओं के और अनुकूलन को कम किया जाना चाहिए। पूर्ण तालिका अपघटनवे इसके अनुमानों की एक मनमानी संख्या के ऐसे संग्रह को कहते हैं, जिसका कनेक्शन पूरी तरह से तालिका की सामग्री से मेल खाता है। प्रक्षेपण एक तालिका की एक प्रति है जिसमें नई तालिका के एक या अधिक कॉलम शामिल नहीं होते हैं। चौथा सामान्य रूप.चौथा सामान्य रूप पांचवें सामान्य रूप का एक विशेष मामला है, जब पूर्ण विघटन दो प्रक्षेपणों का मिलन होना चाहिए।![](https://i0.wp.com/refdb.ru/images/1652/3302801/5b3c0e21.jpg)
ऐसी तालिका ढूंढना बहुत मुश्किल है जो चौथे सामान्य रूप में हो, लेकिन पांचवें सामान्य रूप की परिभाषा को पूरा नहीं करती हो।
पाँचवाँ सामान्य रूप।एक तालिका पांचवें सामान्य रूप में होती है यदि और केवल तभी जब इसके प्रत्येक पूर्ण अपघटन में सभी अनुमानों में एक संभावित कुंजी होती है। जिस तालिका में कोई पूर्ण अपघटन नहीं होता वह भी पांचवें सामान्य रूप में होती है। व्यवहार में, डेटाबेस तालिकाओं का अनुकूलन तीसरे सामान्य रूप के साथ समाप्त होता है। तालिकाओं को चौथे और पांचवें सामान्य रूपों में कम करना, हमारी राय में, विशुद्ध रूप से सैद्धांतिक हित में है। व्यवहार में, नई तालिका बनाने के लिए क्वेरी विकसित करके इस समस्या को हल किया जा सकता है। 2.3. तालिकाओं के बीच संबंध डिजाइन करनास्रोत डेटाबेस तालिकाओं को सामान्य बनाने की प्रक्रिया एक सूचना प्रणाली की एक इष्टतम संरचना बनाना संभव बनाती है - एक ऐसा डेटाबेस विकसित करना जिसके लिए कम से कम मेमोरी संसाधनों की आवश्यकता होती है और, परिणामस्वरूप, जानकारी तक सबसे कम पहुंच समय प्रदान करता है। साथ ही, एक स्रोत तालिका को कई में विभाजित करने के लिए सूचना प्रणालियों को डिजाइन करने के लिए सबसे महत्वपूर्ण शर्तों में से एक को पूरा करना आवश्यक है - डेटाबेस के संचालन के दौरान सूचना की अखंडता सुनिश्चित करना। मूल तालिकाओं के सामान्यीकरण के उपरोक्त उदाहरण में (चित्र 2.3 देखें), दो तालिकाओं से हमें अंततः सात तालिकाएँ प्राप्त हुईं जो तीसरे और चौथे सामान्य रूपों में बदल गईं। जैसा कि अभ्यास से पता चलता है, वास्तविक उत्पादन और व्यवसाय में, डेटाबेस बहु-उपयोगकर्ता सिस्टम हैं। यह अलग-अलग तालिकाओं में डेटा के निर्माण और रखरखाव और निर्णय लेने के लिए जानकारी के उपयोग दोनों पर लागू होता है। ऊपर चर्चा किए गए उदाहरण में, किसी विश्वविद्यालय या कॉलेज में वास्तव में कार्यशील शैक्षिक प्रक्रिया प्रबंधन प्रणाली में, अध्ययन समूहों का प्रारंभिक गठन प्रवेश परीक्षाओं के परिणामों के आधार पर आवेदकों का नामांकन करते समय प्रवेश समितियों द्वारा किया जाता है। विश्वविद्यालयों में समूहों में छात्रों की संरचना के बारे में जानकारी का रखरखाव डीन के कार्यालय को सौंपा जाता है, और कॉलेजों में - शैक्षिक विभागों या संबंधित संरचनाओं को। समूहों में शैक्षणिक विषयों की संरचना अन्य सेवाओं या विशेषज्ञों द्वारा निर्धारित की जाती है। मानव संसाधन विभागों में शिक्षण कर्मचारियों के बारे में जानकारी उत्पन्न की जाती है। परीक्षण और परीक्षा सत्र के परिणाम डीन के कार्यालय और विभागों के प्रमुखों के लिए आवश्यक हैं, जिसमें 32 सफल छात्रों को छात्रवृत्ति देने या असफल छात्रों को "छात्रवृत्ति से हटाने" पर निर्णय लेना शामिल है। किसी भी डेटाबेस तालिका में कोई भी परिवर्तन अन्य सभी तालिकाओं में संबंधित परिवर्तन से मेल खाना चाहिए। यह डेटाबेस अखंडता सुनिश्चित करने का सार है। व्यवहार में, यह कार्य डेटाबेस तालिकाओं के बीच संबंध स्थापित करके किया जाता है। आइए तालिकाओं के बीच संबंध स्थापित करने के लिए बुनियादी नियम बनाएं। 1. दो लिंक की गई तालिकाओं में से मुख्य और अधीनस्थ तालिकाओं का चयन करें। 2. प्रत्येक तालिका में एक कुंजी फ़ील्ड चुनें। मुख्य तालिका के मुख्य क्षेत्र को कहा जाता है प्राथमिक कुंजी।अधीनस्थ तालिका का मुख्य क्षेत्र कहलाता है विदेशी कुंजी। 3. लिंक की गई तालिका फ़ील्ड में समान डेटा प्रकार होना चाहिए। 4. तालिकाओं के बीच निम्नलिखित प्रकार के संबंध स्थापित होते हैं: "एक से एक"; "कई लोगों के लिए एक"; "अनेक से अनेक": उन मामलों में एक-से-एक संबंध स्थापित किया जाता है जहां मुख्य तालिका की एक विशिष्ट पंक्ति किसी भी समय चाइल्ड टेबल की केवल एक पंक्ति से जुड़ी होती है; किसी भी समय मुख्य तालिका में एक विशिष्ट पंक्ति होने पर एक-से-अनेक संबंध स्थापित होता है![](https://i0.wp.com/refdb.ru/images/1652/3302801/7ead05d4.jpg)
परिचय
विशेषज्ञ 21वीं सदी की शुरुआत को कंप्यूटर प्रौद्योगिकी की सदी कहते हैं। मानवता मौलिक रूप से नए सूचना युग में प्रवेश कर रही है। लोगों की जीवनशैली के सभी घटक बदल रहे हैं। सूचना का स्तर राज्य के विकास के स्तर की विशेषताओं में से एक बन जाता है।
कई विकासशील देशों ने उचित स्तर पर उन लाभों को महसूस किया है जो सूचना और संचार प्रौद्योगिकियों के प्रसार और विकास से नहीं मिलते हैं। और इस तथ्य पर किसी को संदेह नहीं है कि सूचना समाज की ओर बढ़ना एक प्रकार का मार्ग है जिसका उद्देश्य मानव सभ्यता का भविष्य है।
रिलेशनल मॉडल के आधार पर, डेटाबेस तालिकाओं का एक विशिष्ट संग्रह होता है, जिस पर ऑपरेशन किए जाते हैं, जो रिलेशनल बीजगणित और रिलेशनल कैलकुलस के संदर्भ में तैयार किए जाते हैं।
रिलेशनल मॉडल में, डेटाबेस ऑब्जेक्ट्स से संबंधित संचालन में एक सेट-सैद्धांतिक प्रकृति होती है, जो किसी भी डेटाबेस का मूल होता है। मॉडल विभिन्न प्रकार की डेटा संरचनाओं, अखंडता बाधाओं और डेटा हेरफेर संचालन का प्रतिनिधित्व करता है।
संबंधपरक डेटा मॉडल की बुनियादी अवधारणाएँ
संबंधपरक डेटा की मुख्य अवधारणाएँ डेटा प्रकार, डोमेन, विशेषता, टपल, प्राथमिक कुंजी संबंध हैं। सबसे पहले, आइए "कर्मचारी" संबंध के उदाहरण का उपयोग करके इन अवधारणाओं के अर्थ पर ध्यान दें, जिसमें एक निश्चित संगठन के कर्मचारियों के बारे में जानकारी शामिल है
रिलेशनल डेटा मॉडल में डेटा प्रकार की अवधारणा प्रोग्रामिंग भाषाओं में डेटा प्रकार की अवधारणा के साथ तुलनीय है। आधुनिक रिलेशनल डेटाबेस में, प्रतीकात्मक संख्यात्मक डेटा, बिट स्ट्रिंग्स, साथ ही विशेष "टेम्पोरल" डेटा का भंडारण होता है, जो रिलेशनल सिस्टम की क्षमताओं का विस्तार करने की प्रक्रिया में काफी सक्रिय रूप से विकसित किया जा रहा है।
डोमेन की अवधारणा में डेटाबेस के लिए कुछ विशिष्टताएं हैं, हालांकि उनके पास कुछ प्रोग्रामिंग भाषाओं के संबंध में उपप्रकारों के साथ कुछ संकलन हैं। सामान्य तौर पर, एक डोमेन को एक निश्चित आधार प्रकार निर्दिष्ट करके परिभाषित किया जाता है जिससे डोमेन तत्व संबंधित होता है और एक मनमाना तार्किक अभिव्यक्ति होती है जिसे डेटा प्रकार तत्व में एप्लिकेशन मिला है। जब इस बूलियन अभिव्यक्ति का मूल्यांकन एक सही परिणाम उत्पन्न करता है, तो तत्व एक डोमेन तत्व है।
किसी डोमेन की अवधारणा की अधिक सही व्याख्या किसी दिए गए प्रकार के मानों के अनुमेय संभावित सेटों में से एक के रूप में डोमेन की समझ है।
उदाहरण के लिए, हमारे मामले में डोमेन "नाम" को आधार प्रकार के वर्ण शब्द पर परिभाषित किया गया है, लेकिन इसके मूल्यों की संख्या में केवल वे शब्द शामिल होंगे जो किसी नाम का प्रतिनिधित्व करने में सक्षम हैं (ऐसे शब्द नरम चिह्न से शुरू नहीं हो सकते हैं) ). किसी डोमेन की अवधारणा के सिमेंटिक लोड को नोट करना भी आवश्यक है: केवल उस स्थिति में डेटा तुलनीय होगा जब वे डोमेन से संबंधित हों, लेकिन केवल एक
हमारे मामले में, डोमेन "गैप नंबर" और "ग्रुप नंबर" के मान, जो पूर्णांक प्रकार से संबंधित हैं, की तुलना नहीं की जा सकती है। ध्यान दें कि कुछ मामलों में रिलेशनल डीबीएमएस में "डोमेन" की अवधारणा को लागू नहीं किया जाता है, क्योंकि Oracle V.7 में पहले से ही समर्थित है।
एक संबंध स्कीमा जोड़ों का एक नाममात्र सेट है: जिसमें शामिल हैं: विशेषता नाम, प्रकार, लेकिन केवल उस मामले में जहां डोमेन की अवधारणा समर्थित नहीं है। "कलात्मकता" की डिग्री संबंधपरक योजनाओं का प्रतिनिधित्व करती है - यह इस सेट की एक निश्चित शक्ति है।
इस मामले में, "कर्मचारी" संबंध चार के बराबर होगा और 4-एरी माना जाएगा। और यदि एक रिश्ते की सभी विशेषताओं को अपेक्षाकृत अलग-अलग डोमेन पर परिभाषित किया गया है, तो विशेषताओं को नाम देने के लिए संबंधित डोमेन के नामों का उपयोग करना उचित है, यह न भूलें कि इसे केवल सुविधाजनक नामकरण विधियों में से एक माना जाता है और यह अवसर प्रदान नहीं करता है डोमेन और विशेषता की अवधारणा के संबंध में मतभेदों को खत्म करना। डेटाबेस स्कीमा रिलेशनल स्कीमाओं का एक विशिष्ट सेट है।
टुपल जो किसी दिए गए संबंध स्कीमा से मेल खाता है, जोड़ियों का एक समूह है जो संबंध स्कीमा से संबंधित प्रत्येक विशेषता नाम की घटना में परिलक्षित होता है।
उस स्थिति में विशेषता के लिए "मान" को एक वैध डोमेन मान माना जाता है जहां डोमेन अवधारणा समर्थित नहीं है। परिणामस्वरूप, टुपल की डिग्री, अर्थात्। परिभाषित तत्वों की संख्या संबंधित संबंध योजना की डिग्री के साथ मेल खाती है
टुपल किसी दिए गए प्रकार के नामित मानों का एक संग्रह है।
एक संबंध बड़ी संख्या में टुपल्स है जो एक संबंध स्कीमा के अनुरूप होते हैं। वास्तव में, एक संबंध स्कीमा की अवधारणा प्रोग्रामिंग भाषाओं में एक संरचनात्मक डेटा प्रकार की अवधारणा के करीब है, और टुपल्स के एक सेट के रूप में संबंध संबंध का मुख्य भाग था। इसलिए, किसी संबंध स्कीमा को अलग से परिभाषित करने की अनुमति देना और बाद में इस स्कीमा द्वारा एक या अधिक संबंधों की अनुमति देना तर्कसंगत होगा, लेकिन यह संबंधपरक डेटाबेस में स्वीकार नहीं किया जाता है।
ऐसे डेटाबेस से संबंधित किसी संबंध का स्कीमा नाम ज्यादातर मामलों में संबंधित उदाहरण संबंध के नाम के समान होता है। क्लासिक रिलेशनल डेटाबेस में, एक बार डेटाबेस स्कीमा परिभाषित हो जाने के बाद, केवल इंस्टेंस संबंध बदलते हैं। उनमें नए टुपल्स दिखाई दे सकते हैं और मौजूदा टुपल्स को हटाया या बदला जा सकता है। लेकिन साथ ही, कई कार्यान्वयनों में डेटाबेस स्कीमा में बदलाव होता है: नए को परिभाषित करना और मौजूदा संबंध स्कीमा को बदलना, जिसे आमतौर पर डेटाबेस स्कीमा का विकास कहा जाता है।
किसी संबंध का सामान्य प्रतिनिधित्व एक तालिका है, जिसका शीर्ष संबंध का स्कीमा है, और पंक्तियाँ उदाहरण संबंध के टुपल्स हैं, जिस स्थिति में विशेषता नामों को इस तालिका के कॉलम कहा जाता है। इस संबंध में, वे कभी-कभी "टेबल कॉलम" कहते हैं, जिसका अर्थ है "संबंध विशेषता"। जैसा कि आप देख सकते हैं, संबंधपरक डेटा मॉडल (डोमेन की अवधारणा को छोड़कर) की बुनियादी संरचनात्मक अवधारणाओं की एक बहुत ही सरल सहज व्याख्या है, हालांकि संबंधपरक डेटाबेस के सिद्धांत में वे सभी बिल्कुल औपचारिक और सटीक रूप से परिभाषित हैं।