Chapter 08 Database Concepts
“आपके मन की असंगति… आपकी स्मृति को नुकसान पहुँचा सकती है… असंगत डेटा को हटा दें… और मूल डेटा को बनाए रखें !!!”
$\quad$ - निसर्ग जैन
8.1 परिचय
पिछले अध्याय में डेटा के महत्व को जानने के बाद, हमें डेटा को इलेक्ट्रॉनिक रूप से संग्रहीत और प्रबंधित करने की विधियों का अन्वेषण करना होगा। आइए एक स्कूल का उदाहरण लें जो अपने छात्रों के बारे में डेटा रखता है, साथ ही उनकी उपस्थिति रिकॉर्ड और अभिभावक विवरण भी।
कक्षा शिक्षक छात्रों की दैनिक उपस्थिति को उपस्थिति रजिस्टर में अंकित करता है। शिक्षक प्रत्येक कार्य दिवस पर प्रत्येक छात्र की रोल संख्या के सामने ’ $\mathrm{P}$ ’ उपस्थित या ’ $\mathrm{A}$ ’ अनुपस्थित दर्ज करता है। यदि कक्षा की ताकत 50 है और एक महीने में कुल कार्य दिवस 26 हैं, तो शिक्षक को हर महीने रजिस्टर में $50 \times 26$ रिकॉर्ड मैन्युअल रूप से दर्ज करने होते हैं। जैसे-जैसे डेटा की मात्रा बढ़ती है, मैन्युअल डेटा प्रवेश कठिन हो जाता है। इस उदाहरण में मैन्युअल रिकॉर्ड रखने की कुछ सीमाएँ निम्नलिखित हैं:
गतिविधि 8.1
कुछ दुकानों पर जाएँ जहाँ रिकॉर्ड मैन्युअल रूप से रखे जाते हैं और उनके द्वारा सामना की जाने वाली मैन्युअल रिकॉर्ड रखने की कुछ सीमाओं की पहचान करें।
- अगली कक्षा में प्रोन्नत होने पर नये उपस्थिति रजिस्टर में छात्र विवरण (रोल नंबर और नाम) की प्रविष्टि।
- हर महीने की उपस्थिति पृष्ठ पर छात्र विवरण लिखना जहाँ गलत नाम लिखने, छात्र रिकॉर्ड छोड़ने आदि से असंगति हो सकती है।
- उपस्थिति रजिस्टर खो जाने या क्षतिग्रस्त होने पर डेटा की हानि।
- उपस्थिति रिकॉर्ड को मैन्युअल रूप से समेकित करते समय गलत गणना।
कार्यालय कर्मचारी छात्र विवरण अर्थात् रोल नंबर, नाम और जन्म तिथि के साथ-साथ संबंधित अभिभावक विवरण अर्थात् अभिभावक का नाम, संपर्क नंबर और पता भी मैन्युअल रूप से बनाए रखते हैं। यह छात्र की उपस्थिति और परिणाम के संबंध में अभिभावक से पत्राचार के लिए आवश्यक है।
कागज़ के विशाल ढेर से सूचना खोजना या किसी प्रविष्टि को हटाना/संशोधित करना पेन-पेपर आधारित दृष्टिकोण में कठिन कार्य है। मैन्युअल रिकॉर्ड रखने में आने वाली परेशानियों को दूर करने के लिए यह वांछनीय है कि उपस्थिति रिकॉर्ड और छात्र विवरण को कंप्यूटरीकृत प्रणाली पर अलग-अलग डेटा फ़ाइलों में संग्रहित किया जाए, ताकि कार्यालय कर्मचारी और शिक्षक:
- जब छात्र अगली कक्षा में प्रोन्नत हों तो पुरानी उपस्थिति फ़ाइल से नयी उपस्थिति फ़ाइल में छात्र विवरण सरलता से कॉपी कर सकें।
- छात्र या अभिभावक के बारे में कोई भी डेटा खोज सकें।
- जब भी कोई नया छात्र स्कूल में प्रवेश ले तो मौजूदा डेटा में और अधिक विवरण जोड़ सकें।
- जब भी आवश्यक हो तो छात्र या अभिभावक के विवरण जैसे संग्रहित डेटा को संशोधित कर सकें।
- जब भी कोई छात्र स्कूल छोड़े तो डेटा को हटा/डिलीट कर सकें।
8.2 फ़ाइल सिस्टम
एक फ़ाइल को कंप्यूटर में डेटा संग्रहीत करने के लिए एक कंटेनर के रूप में समझा जा सकता है। फ़ाइलें कंप्यूटर सिस्टम के स्टोरेज डिवाइस पर संग्रहीत की जा सकती हैं। फ़ाइल की सामग्री पाठ, कंप्यूटर प्रोग्राम कोड, अल्पविराम से अलग किए गए मान (CSV) आदि हो सकती है। इसी प्रकार, चित्र, ऑडियो/वीडियो, वेब पेज भी फ़ाइलें हैं।
कंप्यूटर पर संग्रहीत फ़ाइलों को सीधे एक्सेस किया जा सकता है और वांछित डेटा के लिए खोजा जा सकता है। लेकिन किसी सॉफ़्टवेयर के माध्यम से फ़ाइल के डेटा तक पहुँचने के लिए, उदाहरण के लिए, स्कूल की वेबसाइट पर मासिक उपस्थिति रिपोर्ट प्रदर्शित करने के लिए, फ़ाइलों से डेटा तक पहुँचने के लिए कंप्यूटर प्रोग्राम लिखने होते हैं।
स्कूल में उपस्थिति के उदाहरण को जारी रखते हुए, हमें छात्रों और उपस्थिति के बारे में डेटा को दो अलग-अलग फ़ाइलों में संग्रहीत करना होगा। तालिका 8.1 STUDENT फ़ाइल की सामग्री दिखाती है जिसमें छह कॉलम हैं, जैसा कि नीचे विस्तार से दिया गया है:
RollNumber - छात्र का रोल नंबर
SName - छात्र का नाम
SDateofBirth - छात्र की जन्म तिथि
GName - अभिभावक का नाम
GPhone - छात्र के अभिभावक का फोन नंबर
GAddress - छात्र के अभिभावक का पता
$\hspace{4.2cm}$ तालिका 8.1 कार्यालय स्टाफ द्वारा बनाए रखी गई STUDENT फ़ाइल
| रोल नंबर |
SName | SDateof Birth |
GName | GPhone | GAddress | |
|---|---|---|---|---|---|---|
| 1 | अथर्व आहूजा | $2003-05-15$ | अमित आहूजा | 5711492685 | G-35, अशोक विहार, दिल्ली |
|
| 2 | डेज़ी भूटिया | $2002-02-28$ | बाइचुंग भूटिया |
7110047139 | फ़्लैट नं. 5, दार्जिलिंग अपार्टमेंट, शिमला |
|
| 3 | तालीम शाह | $2002-02-28$ | हिमांशु शाह | 9818184855 | 26/77, वेस्ट पटेल नगर, अहमदाबाद |
|
| 4 | जॉन डिसूज़ा | $2003-08-18$ | डैनी डिसूज़ा | S-13, अशोक विलेज, दमन |
||
| 5 | अली शाह | $2003-07-05$ | हिमांशु शाह | 9818184855 | 26/77, वेस्ट पटेल नगर, अहमदाबाद |
|
| 6 | मणिका पी. | $2002-03-10$ | सुजाता पी. | 7802983674 | HNO-13, B-ब्लॉक, प्रीत विहार, मदुरै |
तालिका 8.2 एक अन्य फ़ाइल को दिखाती है जिसे ATTENDANCE कहा जाता है जिसमें चार कॉलम हैं, जैसा कि नीचे विस्तृत है:
AttendanceDate - वह तिथि जिसके लिए उपस्थिति अंकित की गई थी
RollNumber - छात्र का रोल नंबर
SName - छात्र का नाम
AttendanceStatus - P (उपस्थित) या A (अनुपस्थित) के रूप में अंकित
$\hspace{0.7cm}$ तालिका 8.2 कक्षा शिक्षक द्वारा बनाए रखी गई ATTENDANCE फ़ाइल
| उपस्थिति तिथि | रोल नंबर | एस नाम | उपस्थिति स्थिति |
|---|---|---|---|
| $2018-09-01$ | 1 | अथर्व आहूजा | P |
| $2018-09-01$ | 2 | डेज़ी भूटिया | P |
| $2018-09-01$ | 3 | तालीम शाह | A |
| $2018-09-01$ | 4 | जॉन डिसूज़ा | P |
| $2018-09-01$ | 5 | अली शाह | A |
| $2018-09-01$ | 6 | मानिका पी. | P |
| $2018-09-02$ | 1 | अथर्व आहूजा | P |
| $2018-09-02$ | 2 | डेज़ी भूटिया | P |
| $2018-09-02$ | 3 | तालीम शाह | A |
| $2018-09-02$ | 4 | जॉन डिसूज़ा | A |
| $2018-09-02$ | 5 | अली शाह | P |
| $2018-09-02$ | 6 | मानिका पी. | P |
8.2.1 फ़ाइल प्रणाली की सीमाएँ
फ़ाइल प्रणाली को संभालना कठिन हो जाता है जब फ़ाइलों की संख्या बढ़ती है और डेटा की मात्रा भी बढ़ती है। फ़ाइल प्रणाली की कुछ सीमाएँ निम्नलिखित हैं:
(A) पहुँच में कठिनाई
फ़ाइलें स्वयं डेटा पुनःप्राप्त करने के लिए कोई तंक प्रदान नहीं करतीं। फ़ाइल प्रणाली में संरक्षित डेटा तक पहुँच अनुप्रयोग प्रोग्रामों के माध्यम से होती है। ऐसे प्रोग्राम लिखते समय डेवलपर डेटा तक पहुँच के संभावित सभी तरीकों की कल्पना नहीं कर सकता। इसलिए कभी-कभी आवश्यक प्रारूप में डेटा तक पहुँचना कठिन होता है और डेटा तक पहुँचने के लिए अनुप्रयोग प्रोग्राम लिखना पड़ता है।
(B) डेटा अतिरेक
रिडन्डेंसी का अर्थ है कि एक ही डेटा को विभिन्न स्थानों (फ़ाइलों) में दोहराया गया है। हमारे उदाहरण में, छात्रों के नाम दोनों फ़ाइलों में रखे गए हैं। इसके अलावा, तालिका 8.1 में, रोल नंबर 3 और 5 वाले छात्रों का अभिभावक का नाम समान है और इसलिए समान अभिभावक का नाम दो बार रखा गया है। ये दोनों रिडन्डेंसी के उदाहरण हैं जिसे फ़ाइल सिस्टम में टालना कठिन होता है। रिडन्डेंसी अतिरिक्त भंडारण का उपयोग करती है और डेटा असंगति का भी कारण बन सकती है।
(C) डेटा असंगति
डेटा असंगति तब होती है जब एक ही डेटा जो विभिन्न स्थानों पर रखा गया है, मेल नहीं खाता। यदि कोई छात्र अपने नाम की वर्तनी बदलवाना चाहती है, तो इसे दोनों फ़ाइलों में SName कॉलम में बदलना होगा। इसी तरह, यदि कोई छात्र स्कूल छोड़ता है, तो विवरण को दोनों फ़ाइलों से हटाना होगा। चूँकि फ़ाइलों को विभिन्न लोग बनाए रख रहे हैं, परिवर्तन किसी एक फ़ाइल में नहीं हो सकता है। उस स्थिति में, छात्र का नाम दोनों फ़ाइलों में भिन्न (असंगत) होगा।
(D) डेटा आइसोलेशन
टेबल 8.1 (STUDENT) और टेबल 8.2 (ATTENDANCE) में प्रस्तुत दोनों फ़ाइलें छात्रों से संबंधित हैं। लेकिन इनके बीच कोई लिंक या मैपिंग नहीं है। स्कूल को इन दोनों फ़ाइलों तक पहुँचने के लिए अलग-अलग प्रोग्राम लिखने होंगे। ऐसा इसलिए है क्योंकि फ़ाइल सिस्टम में डेटा मैपिंग समर्थित नहीं है। एक अधिक जटिल सिस्टम में जहाँ डेटा फ़ाइलें विभिन्न व्यक्तियों द्वारा विभिन्न समय पर उत्पन्न की जाती हैं, अलग-अलग बनाई गई फ़ाइलें भिन्न-भिन्न प्रारूपों की हो सकती हैं। ऐसी स्थिति में, कई स्थानों पर रखी गई विभिन्न फ़ाइलों से डेटा प्राप्त करने के लिए नए एप्लिकेशन प्रोग्राम लिखना कठिन हो जाता है, क्योंकि प्रत्येक फ़ाइल की अंतर्निहित संरचना को समझना पड़ता है।
(E) डेटा निर्भरता
डेटा को फ़ाइल में एक विशिष्ट प्रारूप या संरचना में संग्रहित किया जाता है। यदि संरचना या प्रारूप स्वयं बदल दिया जाए, तो उस फ़ाइल तक पहुँचने वाले सभी मौजूदा एप्लिकेशन प्रोग्रामों को भी बदलना होगा। अन्यथा, प्रोग्राम सही ढंग से काम नहीं करेंगे। यही डेटा निर्भरता है। इसलिए, किसी डेटा फ़ाइल की संरचना को अद्यतन करने के लिए उस फ़ाइल तक पहुँचने वाले सभी एप्लिकेशन प्रोग्रामों में संशोधन की आवश्यकता होती है।
(F) नियंत्रित डेटा साझाकरण
विभिन्न प्रकार के उपयोगकर्ता हो सकते हैं जैसे शिक्षक, कार्यालय कर्मचारी और अभिभावक। आदर्श रूप से, हर उपयोगकर्ता को सभी डेटा तक पहुँच नहीं होनी चाहिए। उदाहरण के लिए, अभिभावक और कार्यालय कर्मचारी केवल छात्र की उपस्थिति डेटा देख सकते हैं लेकिन उसे संशोधित/हटा नहीं सकते। इसका अर्थ है कि इन उपयोगकर्ताओं को ATTENDANCE फ़ाइल तक सीमित पहुँच (केवल पढ़ने योग्य) दी जानी चाहिए। केवल शिक्षक को ही उपस्थिति डेटा अद्यतन करने की अनुमति होनी चाहिए। फ़ाइल प्रणाली में इस प्रकार का पहुँच नियंत्रण लागू करना बहुत कठिन है जबकि एप्लिकेशन प्रोग्रामों के माध्यम से फ़ाइलों तक पहुँचा जाता है।
8.3 डेटाबेस प्रबंधन प्रणाली
फ़ाइल प्रणाली में आने वाली सीमाओं को दूर किया जा सकता है यदि डेटा को एक डेटाबेस में संग्रहीत किया जाए जहाँ डेटा तार्किक रूप से संबंधित होते हैं। हम संबंधित डेटा को एक डेटाबेस में इस प्रकार संगठित कर सकते हैं ताकि उसे कुशल और सरल तरीके से प्रबंधित किया जा सके।
एक डेटाबेस प्रबंधन प्रणाली (DBMS) या संक्षेप में डेटाबेस प्रणाली, एक सॉफ़्टवेयर है जिसका उपयोग डेटाबेस बनाने और प्रबंधित करने के लिए किया जा सकता है। DBMS उपयोगकर्ताओं को एक डेटाबेस बनाने, उसमें डेटा संग्रहीत करने, प्रबंधित करने, अद्यतन/संशोधित करने और उपयोगकर्ताओं या एप्लिकेशन प्रोग्रामों द्वारा उस डेटाबेस से डेटा पुनः प्राप्त करने की अनुमति देता है। कुछ ओपन सोर्स और वाणिज्यिक DBMS उदाहरणों में MySQL, Oracle, PostgreSQL, SQL Server, Microsoft Access, MongoDB शामिल हैं।
कुछ डेटाबेस प्रबंधन प्रणालियों में उपयोगकर्ताओं के लिए डेटाबेस बनाने और प्रबंधित करने हेतु ग्राफ़िकल यूज़र इंटरफ़ेस होता है। अन्य डेटाबेस प्रणालियाँ कमांड लाइन इंटरफ़ेस का उपयोग करती हैं जिनमें उपयोगकर्ताओं को डेटाबेस बनाने और प्रबंधित करने के लिए प्रोग्रामिंग कमांडों का उपयोग करना पड़ता है।
एक डेटाबेस सिस्टम यह छिपाता है कि डेटा वास्तव में कैसे संग्रहीत और रखरखाव किया जाता है। इस प्रकार, यह उपयोगकर्ताओं को डेटा का एक अमूर्त दृश्य प्रदान करता है। एक डेटाबेस सिस्टम में प्रोग्रामों का एक समूह होता है जिनके माध्यम से उपयोगकर्ता या अन्य प्रोग्राम संग्रहीत डेटा को एक्सेस, संशोधित और पुनः प्राप्त कर सकते हैं।
DBMS डेटाबेस और अंतिम उपयोगकर्ताओं या एप्लिकेशन प्रोग्रामों के बीच एक इंटरफेस के रूप में कार्य करता है। डेटाबेस से विशेष प्रकार की कमांड्स के माध्यम से डेटा पुनः प्राप्त करने को डेटाबेस क्वेरी करना कहा जाता है। इसके अतिरिक्त, उपयोगकर्ता DBMS के माध्यम से डेटाबेस की संरचना को भी संशोधित कर सकते हैं।
डेटाबेस का उपयोग विभिन्न क्षेत्रों में व्यापक रूप से किया जाता है। कुछ अनुप्रयोग टेबल 8.3 में दिए गए हैं।
$\hspace{1cm}$ टेबल 8.3 वास्तविक जीवन के अनुप्रयोगों में डेटाबेस का उपयोग
| अनुप्रयोग | डेटाबेस द्वारा रखे जाने वाले डेटा के बारे में |
|---|---|
| बैंकिंग | ग्राहक सूचना, खाता विवरण, ऋण विवरण, लेनदेन विवरण, आदि |
| फसल ऋण | किसान क्रेडिट कार्ड डेटा, किसान की व्यक्तिगत डेटा, भूमि क्षेत्र और खेती डेटा, ऋण इतिहास, पुनर्भुगतान डेटा, आदि |
| इन्वेंटरी प्रबंधन |
उत्पाद विवरण, ग्राहक सूचना, ऑर्डर विवरण, डिलीवरी डेटा, आदि |
| संगठन संसाधन प्रबंधन |
कर्मचारी रिकॉर्ड, वेतन विवरण, विभाग सूचना, शाखा स्थान, आदि |
| ऑनलाइन शॉपिंग |
वस्तु विवरण, उपयोगकर्ता लॉगिन विवरण, उपयोगकर्ता प्राथमिकताएँ विवरण, आदि |
8.3.1 फाइल सिस्टम से DBMS
आइए हम अपने स्कूल के उदाहरण को फिर से देखें जहाँ दो डेटा फ़ाइलें बनाए रखी गई थीं (टेबल 8.1 कार्यालय द्वारा और टेबल 8.2 शिक्षक द्वारा)। आइए अब उन दोनों फ़ाइलों के डेटा को संग्रहित करने के लिए एक डेटाबेस डिज़ाइन करें। हम जानते हैं कि डेटाबेस में टेबल्स एक या अधिक सामान्य कॉलम या फ़ील्ड्स के माध्यम से लिंक या संबंधित होती हैं। हमारे उदाहरण में, STUDENT (टेबल 8.1) फ़ाइल और ATTENDANCE (टेबल 8.2) फ़ाइल में RollNumber और SName सामान्य फ़ील्ड नाम हैं। इन दोनों फ़ाइलों को डेटाबेस में बदलने के लिए हमें निम्नलिखित बदलावों को शामिल करना होगा:
a) SName को ATTENDANCE फ़ाइल में बनाए रखने की आवश्यकता नहीं है क्योंकि यह पहले से ही STUDENT में मौजूद है। किसी छात्र का विवरण दोनों फ़ाइलों में सामान्य फ़ील्ड RollNumber के माध्यम से प्राप्त किया जा सकता है।
b) यदि दो भाई-बहन एक ही कक्षा में हैं, तो दोनों के लिए समान अभिभावक विवरण (GName, GPhone और GAddress) बनाए रखा जाता है। हम जानते हैं कि यह एक अतिरिक्तता है और डेटाबेस का उपयोग करके हम इससे बच सकते हैं। तो आइए STUDENT फ़ाइल को दो फ़ाइलों (STUDENT फ़ाइल और GUARDIAN फ़ाइल) में विभाजित करें ताकि प्रत्येक अभिभावक का डेटा केवल एक बार बनाए रखा जाए।
c) एक या अधिक अभिभावकों का एक ही नाम हो सकता है। ऐसे में यह संभव नहीं होगा कि पहचान की जा सके कि कौन सा अभिभावक किस छात्र से संबंधित है। ऐसी स्थिति में, हमें एक अतिरिक्त कॉलम बनाने की आवश्यकता है, मान लीजिए GUID (Guardian ID) जो GUARDIAN फ़ाइल में प्रत्येक रिकॉर्ड के लिए अद्वितीय मान लेगा। कॉलम GUID को STUDENT फ़ाइल के साथ भी रखा जाएगा ताकि इन दोनों फ़ाइलों को संबंधित किया जा सके।
फ़ाइल सिस्टम से DBMS में स्थानांतरित करने पर उच्च लागत आती है:
- परिष्कृत हार्डवेयर और सॉफ़्टवेयर की खरीद।
- क्वेरी करने के लिए उपयोगकर्ताओं को प्रशिक्षण।
- नियमित बैकप लेने और रिकवरी संचालन करने के लिए आवर्ती लागत।
नोट: हम अभिभावकों को उनके फ़ोन नंबर से भी पहचान सकते हैं। लेकिन फ़ोन नंबर बदल सकता है, इसलिए वह वास्तव में अभिभावक को पहचानने वाला नहीं हो सकता।
चित्र 8.1 STUDENT, GUARDIAN और ATTENDANCE विवरण के लिए संबंधित डेटा फ़ाइलें दिखाता है। ध्यान दें कि यह पूर्ण डेटाबेस स्कीमा नहीं है क्योंकि यह तालिकाओं के बीच कोई संबंध नहीं दिखाता।
| STUDENT | GUARDIAN | ATTENDANCE |
|---|---|---|
| RollNumber SName SDateofBirth GUID |
GUID GName GPhone GAddress |
AttendanceDate RollNumber AttendanceStatus |
चित्र 8.1: STUDENTATTENDANCE डेटाबेस में तीन फ़ाइलों की रिकॉर्ड संरचना
चित्र 8.1 में दिखाई गई तालिकाएँ खाली हैं, जिन्हें तालिका 8.4, 8.5 और 8.6 में दिखाए गए वास्तविक डेटा से भरा जाना है।
$\hspace{2cm}$ तालिका 8.4 STUDENT तालिका का स्नैपशॉट
| RollNumber | SName | SDateofBirth | GUID |
|---|---|---|---|
| 1 | Atharv Ahuja | $2003-05-15$ | 444444444444 |
| 2 | Daizy Bhutia | $2002-02-28$ | 11111111111 |
| 3 | Taleem Shah | $2002-02-28$ | |
| 4 | John Dsouza | $2003-08-18$ | 33333333333 |
| 5 | Ali Shah | $2003-07-05$ | 101010101010 |
| 6 | Manika P. | $2002-03-10$ | 46644444666 |
$\hspace{3.5cm}$ तालिका 8.5 GUARDIAN तालिका का स्नैपशॉट
| GUID | GName | GPhone | GAddress |
|---|---|---|---|
| 444444444444 | अमित आहूजा | 5711492685 | G-35, अशोक विहार, दिल्ली |
| 111111111111 | बाइचुंग भूटिया | 3612967082 | फ्लैट नं. 5, दार्जिलिंग अपार्टमेंट, शिमला |
| 101010101010 | हिमांशु शाह | 4726309212 | $26 / 77$, वेस्ट पटेल नगर, अहमदाबाद |
| 333333333333 | डैनी डिसूजा | S-13, अशोक विलेज, दमन | |
| 466444444666 | सुजाता पी. | 3801923168 | HNO-13, B-ब्लॉक, प्रीत विहार, मदुरै |
टेबल 8.6 उपस्थिति टेबल का स्नैपशॉट
| Date | RollNumber | Status |
|---|---|---|
| $2018-09-01$ | 1 | P |
| $2018-09-01$ | 2 | P |
| $2018-09-01$ | 3 | A |
| $2018-09-01$ | 4 | P |
| $2018-09-01$ | 5 | A |
| $2018-09-01$ | 6 | P |
| $2018-09-02$ | 1 | P |
| $2018-09-02$ | 2 | P |
| $2018-09-02$ | 3 | A |
| $2018-09-02$ | 4 | A |
| $2018-09-02$ | 5 | P |
| $2018-09-02$ | 6 | P |
आकृति 8.2 एक सरल डेटाबेस दिखाती है जिसे STUDENTATTENDANCE कहा जाता है, जिसका उपयोग छात्र, अभिभावक और उपस्थिति के बारे में डेटा बनाए रखने के लिए किया जाता है। जैसा कि यहाँ दिखाया गया है, DBMS एक केंद्रीकृत स्थान पर डेटा का एकल भंडार बनाए रखता है और इसे एक ही समय में कई उपयोगकर्ता (कार्यालय स्टाफ, शिक्षक) द्वारा उपयोग किया जा सकता है।
8.3.2 DBMS में प्रमुख संकल्पनाएँ
डेटा को DBMS का उपयोग करके कुशलतापूर्वक प्रबंधित करने के लिए, आइए कुछ प्रमुख शब्दों को समझें:
(A) डेटाबेस स्कीमा
डेटाबेस स्कीमा एक डेटाबेस की डिज़ाइन है। यह डेटाबेस का ढांचा है जो संरचना (टेबल नाम और उनके फ़ील्ड/कॉलम), प्रत्येक कॉलम में रखे जा सकने वाले डेटा का प्रकार, डेटा पर लगाए गए बंधन (यदि कोई हों), और टेबलों के बीच संबंधों को दर्शाता है। डेटाबेस स्कीमा को दृश्य या तार्किक आर्किटेक्चर भी कहा जाता है क्योंकि यह बताता है कि डेटाबेस में डेटा कैसे व्यवस्थित हैं।
चित्र 8.2: STUDENTATTENDANCE डेटाबेस वातावरण
(B) डेटा बंधन
कभी-कभी हम किसी टेबल के एक या अधिक कॉलम में डाले जाने वाले डेटा के प्रकार पर कुछ प्रतिबंध या सीमाएँ लगाते हैं। यह टेबल बनाते समय उस कॉलम(कॉलमों) पर एक या अधिक बंधन निर्दिष्ट करके किया जाता है। उदाहरण के लिए, कोई यह बंधन परिभाषित कर सकता है कि मोबाइल नंबर कॉलम में केवल ठीक 10 अंकों की ऋणात्मक-रहित पूर्णांक मान ही हो सकते हैं। चूँकि प्रत्येक छात्र का एक अद्वितीय रोल नंबर होता है, हम RollNumber कॉलम पर NOT NULL और UNIQUE बंधन लगा सकते हैं। बंधन डेटाबेस में डेटा की सटीकता और विश्वसनीयता सुनिश्चित करने के लिए उपयोग किए जाते हैं।
(C) मेटा-डेटा या डेटा डिक्शनरी
डेटाबेस स्कीमा के साथ-साथ डेटा पर विभिन्न बंधनों को DBMS एक डेटाबेस कैटलॉग या डिक्शनरी में संग्रहीत करता है, जिसे मेटा-डेटा कहा जाता है। मेटा-डेटा डेटा के बारे में डेटा होता है।
(D) डेटाबेस इंस्टेंस
जब हम डेटाबेस की संरचना या स्कीमा को परिभाषित करते हैं, तो डेटाबेस की स्थिति खाली होती है, अर्थात् कोई डेटा प्रविष्टि नहीं होती। डेटा लोड करने के बाद, किसी दिए गए समय पर डेटाबेस की स्थिति या स्नैपशॉट डेटाबेस इंस्टेंस होता है। हम तब क्वेरी के माध्यम से डेटा पुनः प्राप्त कर सकते हैं या अद्यतन, संशोधन या विलोपन के माध्यम से डेटा में हेरफेर कर सकते हैं। इस प्रकार, डेटाबेस की स्थिति बदल सकती है, और इस प्रकार एक डेटाबेस स्कीमा के विभिन्न समय पर कई इंस्टेंस हो सकते हैं।
(E) क्वेरी
एक क्वेरी डेटाबेस से वांछित तरीके से जानकारी प्राप्त करने के लिए एक अनुरोध होता है। क्वेरी एक तालिका से या तालिकाओं के संयोजन से डेटा प्राप्त करने के लिए की जा सकती है। उदाहरण के लिए, “उन सभी छात्रों के नाम खोजें जो उपस्थिति तिथि 2000-01-02 को उपस्थित थे” डेटाबेस के लिए एक क्वेरी है। डेटा पुनः प्राप्त करने या हेरफेर करने के लिए, उपयोगकर्ता को एक क्वेरी भाषा का उपयोग करके क्वेरी लिखनी होती है, जिसकी चर्चा अध्याय 8 में की गई है।
(F) डेटा मैनिपुलेशन
डेटाबेस में संशोधन तीन संचालनों से मिलकर बनता है अर्थात् समावेशन, विलोपन या अद्यतन। मान लीजिए, रिवान कक्षा में एक नया विद्यार्थी के रूप में शामिल होता है तो विद्यार्थी का विवरण STUDENT के साथ-साथ Student Attendance डेटाबेस के GUARDIAN फ़ाइलों में भी जोड़ा जाना चाहिए। इसे डेटाबेस पर समावेशन संचालन कहा जाता है। यदि कोई विद्यार्थी विद्यालय छोड़ता है, तो उसका डेटा तथा उसके अभिभावक का विवरण क्रमशः STUDENT, GUARDIAN और ATTENDANCE फ़ाइलों से हटाना होगा। इसे डेटाबेस पर विलोपन संचालन कहा जाता है। मान लीजिए अथर्व के अभिभावक ने अपना मोबाइल नंबर बदल दिया है, तो उसका GPhone GUARDIAN फ़ाइल में अद्यतित किया जाना चाहिए। इसे डेटाबेस पर अद्यतन संचालन कहा जाता है।
(G) डेटाबेस इंजन
डेटाबेस इंजन वह अंतर्निहित घटक या प्रोग्रामों का समूह है जिसका उपयोग DBMS डेटाबेस बनाने और डेटा पुनर्प्राप्ति तथा हेरफेर के लिए विभिन्न क्वेरी संभालने में करता है।
DBMS की सीमाएँ
बढ़ी हुई जटिलता: DBMS के उपयोग से सुरक्षा, संगति, साझाकरण और अखंडता जैसी कार्यक्षमताओं को बनाए रखने की जटिलता बढ़ जाती है
बढ़ी हुई डेटा भेद्यता: चूँकि डेटा केंद्रित रूप से संग्रहीत होते हैं, इसलिए हार्डवेयर या सॉफ्टवेयर की किसी विफलता के कारण डेटा हानि की संभावना बढ़ जाती है। यह सभी उपयोगकर्ताओं के लिए सभी संचालनों को ठप कर सकती है।
8.4 संबंधात्मक डेटा मॉडल
विभिन्न प्रकार के DBMS उपलब्ध हैं और उनका वर्गीकरण अंतर्निहित डेटा मॉडल के आधार पर किया जाता है। एक डेटा मॉडल डेटाबेस की संरचना का वर्णन करता है, जिसमें यह शामिल है कि डेटा कैसे परिभाषित और प्रस्तुत किए जाते हैं, डेटा के बीच संबंध और बाधाएं। सबसे अधिक प्रयुक्त डेटा मॉडल रिलेशनल डेटा मॉडल है। डेटा मॉडल के अन्य प्रकारों में ऑब्जेक्ट-ओरिएंटेड डेटा मॉडल, एंटिटी-रिलेशनशिप डेटा मॉडल, डॉक्यूमेंट मॉडल और हायरार्किकल डेटा मॉडल शामिल हैं। यह पुस्तक रिलेशनल डेटा मॉडल पर आधारित DBMS की चर्चा करती है।
रिलेशनल मॉडल में, टेबल्स को रिलेशन्स कहा जाता है जो विभिन्न कॉलमों के लिए डेटा संग्रहीत करते हैं। प्रत्येक टेबल में कई कॉलम हो सकते हैं जहां प्रत्येक कॉलम का नाम अद्वितीय होना चाहिए। उदाहरण के लिए, टेबल में प्रत्येक पंक्ति संबंधित मानों का एक समूह दर्शाती है। टेबल 8.5 की प्रत्येक पंक्ति एक विशेष अभिभावक को दर्शाती है और इसमें संबंधित मान होते हैं जैसे अभिभावक की आईडी, अभिभावक का नाम, पता और फोन नंबर। इस प्रकार, एक टेबल रिलेशनशिप्स के संग्रह से बना होता है।
यहां यह ध्यान देना महत्वपूर्ण है कि डेटाबेस में रिलेशन्स स्वतंत्र टेबल्स नहीं होते हैं, बल्कि वे एक-दूसरे से संबद्ध होते हैं। उदाहरण के लिए, रिलेशन ATTENDANCE में विशेषता RollNumber होती है जो इसे रिलेशन STUDENT में संबंधित छात्र रिकॉर्ड से जोड़ती है। इसी प्रकार, विशेषता GUID STUDENT टेबल में रखी जाती है ताकि किसी विशेष छात्र के अभिभावक विवरण निकाले जा सकें। यदि उपयुक्त रिलेशन्स में लिंकिंग विशेषताएं नहीं होंगी, तो डेटाबेस को सही स्थिति में रखना और डेटाबेस से वैध जानकारी प्राप्त करना संभव नहीं होगा।
चित्र 8.3 रिलेशनल डेटाबेस स्टूडेंट अटेंडेंस को तीन रिलेशन्स (टेबल्स) STUDENT, ATTENDANCE और GUARDIAN के साथ दिखाता है।
चित्र 8.3: STUDENTATTENDANCE डेटाबेस को रिलेशनल डेटा मॉडल का उपयोग करके प्रस्तुत करना
तालिका 8.7 स्टूडेंट अटेंडेंस डेटाबेस के रिलेशन स्कीमा और उनके विवरण
| रिलेशन स्कीमा | विशेषताओं का विवरण |
|---|---|
| STUDENT(RollNumber, SName, SDateofBirth, GUID) |
RollNumber: छात्र की अद्वितीय आईडी SName: छात्र का नाम SDateofBirth: छात्र की जन्म तिथि GUID: छात्र के अभिभावक की अद्वितीय आईडी |
| ATTENDANCE (AttendanceDate, RollNumber, AttendanceStatus) |
AttendanceDate: वह तिथि जिस पर उपस्थिति ली गई RollNumber: छात्र का रोल नंबर AttendanceStatus: उपस्थित (P) या अनुपस्थित (A) ध्यान दें कि AttendanceDate और RollNumber का संयोजन प्रत्येक रिकॉर्ड में अद्वितीय होगा टेबल में |
| GUARDIAN(GUID, GName, GPhone, GAddress) |
GUID: अभिभावक की अद्वितीय आईडी GName: अभिभावक का नाम GPhone: अभिभावक का संपर्क नंबर GAddress: अभिभावक का संपर्क पता |
प्रत्येक टपल (पंक्ति) एक सम्बन्ध (तालिका) में किसी वास्तविक विश्व इकाई (उदाहरण के लिए, छात्र, अभिभावक और उपस्थिति) के आंकड़ों से मेल खाती है। GUARDIAN सम्बन्ध (तालिका 8.5) में प्रत्येक पंक्ति अभिभावक के बारे में तथ्यों को दर्शाती है और GUARDIAN तालिका में प्रत्येक स्तंभ का नाम उस स्तंभ के अंतर्गत संग्रहीत आंकड़ों के अर्थ की व्याख्या करने के लिए प्रयुक्त होता है। एक डेटाबेस जो सम्बन्धात्मक डेटा मॉडल की अवधारणा पर आधारित होता है, उसे सम्बन्धात्मक डेटाबेस कहा जाता है। चित्र 8.4 कुछ भरे हुए आंकड़ों के साथ GUARDIAN सम्बन्ध को दिखाता है।
आइए अब चित्र 8.4 का उपयोग करके सम्बन्धात्मक डेटा मॉडल में प्रयुक्त सामान्य शब्दावली को समझें।
सम्बन्ध GUARDIAN 4 गुणधर्म/स्तंभों के साथ
| GUID | GName | GPhone | GAddress |
|---|---|---|---|
| 444444444444 | अमित आहूजा | 5711492685 | G-35, अशोक विहार, दिल्ली |
| 111111111111 | बाइचुंग भूटिया | 3612967082 | फ्लैट नं. 5, दार्जिलिंग अपार्टमेंट, शिमला |
| 101010101010 | हिमांशु शाह | 4726309212 | 26/77, वेस्ट पटेल नगर, अहमदाबाद |
| 333333333333 | डैनी डिसूज़ा | S-13, अशोक विलेज, दमन | |
| 466444444666 | सुजाता पी. | 3801923168 | HNO-13, B-ब्लॉक, प्रीत विहार, मदुरै |
सम्बन्ध GUARDIAN के बारे में तथ्य: $\hspace{3cm}$ रिकॉर्ड/टपल/पंक्ति
- डिग्री (गुणधर्मों की संख्या) = 4
- कार्डिनैलिटी (पंक्तियों/टपल/रिकॉर्ड की संख्या) = 5
- सम्बन्ध एक फ्लैट फ़ाइल है, अर्थात् प्रत्येक स्तंभ में एकल मान होता है और प्रत्येक रिकॉर्ड में समान संख्या में स्तंभ होते हैं
चित्र 8.4: GUARDIAN सम्बन्ध अपने गुणधर्मों और टपलों के साथ
i) गुणधर्म (ATTRIBUTE): वे विशेषताएँ या पैरामीटर जिनके लिए डेटा को किसी संबंध में संग्रहित किया जाना है। सरल शब्दों में, संबंध के स्तंभ ही गुणधर्म होते हैं जिन्हें फ़ील्ड भी कहा जाता है। उदाहरण के लिए, GUID, GName, GPhone और GAddress संबंध GUARDIAN के गुणधर्म हैं।
ii) टपल (TUPLE): किसी संबंध (तालिका) में डेटा की प्रत्येक पंक्ति को टपल कहा जाता है। $n$ स्तंभों वाली तालिका में, एक टपल $\mathrm{n}$ संबंधित मानों के बीच का संबंध होता है।
iii) डोमेन (DOMAIN): यह मानों का एक समुच्चय होता है जिसमें से कोई गुणधर्म प्रत्येक पंक्ति में मान ले सकता है। सामान्यतः, किसी गुणधर्म के लिए डोमेन निर्दिष्ट करने के लिए एक डेटा प्रकार प्रयुक्त होता है। उदाहरण के लिए, STUDENT संबंध में गुणधर्म RollNumber पूर्णांक मान लेता है और इसलिए इसका डोमेन पूर्णांक मानों का समुच्चय है। इसी प्रकार, वर्ण स्ट्रिंग्स का समुच्चय गुणधर्म SName का डोमेन बनाता है।
iv) डिग्री (DEGREE): किसी संबंध में मौजूद गुणधर्मों की संख्या को उस संबंध की डिग्री कहा जाता है। उदाहरण के लिए, चार गुणधर्मों वाला संबंध GUARDIAN डिग्री 4 का संबंध है।
v) कार्डिनैलिटी (CARDINALITY): किसी संबंध में मौजूद टपल्स की संख्या को उस संबंध की कार्डिनैलिटी कहा जाता है। उदाहरण के लिए, संबंध GUARDIAN की कार्डिनैलिटी 5 है क्योंकि तालिका में 5 टपल हैं।
8.4.1 संबंध के तीन महत्वपूर्ण गुण
रिलेशनल डेटा मॉडल में, संबंध के संबंध में निम्नलिखित तीन गुण देखे जाते हैं जो किसी संबंध को डेटा फ़ाइल या साधारण तालिका से भिन्न बनाते हैं।
गुण 1: संबंध के किसी गुणधर्म पर निम्नलिखित नियम थोपता है।
- प्रत्येक संबंध में एक विशेषता (attribute) का नाम अद्वितीय होता है।
- संबंध में विशेषताओं का क्रम महत्वहीन होता है।
गुण 2: संबंध के टपल (tuple) पर निम्नलिखित नियमों को नियंत्रित करता है।
- संबंध में प्रत्येक टपल भिन्न होता है। उदाहरण के लिए, ATTENDANCE संबंध के किसी भी दो टपल में सभी विशेषताओं के लिए डेटा मान समान नहीं हो सकते। इस प्रकार, प्रत्येक टपल को उसकी सामग्री द्वारा अद्वितिय रूप से पहचाना जाना चाहिए।
- संबंध में टपलों का क्रम महत्वहीन होता है। टपलों को क्रमबद्ध नहीं माना जाता, भले ही वे सारणीबद्ध रूप में दिखाई देते हों।
गुण 3: संबंध की स्थिति पर निम्नलिखित नियम थोपता है।
- किसी विशेषता में सभी डेटा मान एक ही डोमेन (समान डेटा प्रकार) से होने चाहिए।
- किसी विशेषता से जुड़ा प्रत्येक डेटा मान परमाणु (atomic) होना चाहिए (अर्थपूर्ण उप-भागों में और विभाजित नहीं किया जा सकता)। उदाहरण के लिए, GUARDIAN संबंध का GPhone दस अंकों की संख्या है जो अविभाज्य है।
- कोई भी विशेषता एक टपल में कई डेटा मान नहीं रख सकती। उदाहरण के लिए, GPhone विशेषता के तहत अभिभावक एकाधिक संपर्क नंबर नहीं दे सकता।
- एक विशेष मान “NULL” का उपयोग उन मानों को दर्शाने के लिए किया जाता है जो अज्ञात हैं या किसी विशेषता के लिए लागू नहीं होते। उदाहरण के लिए, यदि कोई अभिभावक स्कूल प्राधिकरणों के साथ अपना संपर्क नंबर साझा नहीं करता है, तो GPhone को NULL (अज्ञात डेटा) पर सेट किया जाता है।
8.5 रिलेशनल डेटाबेस में कुंजियाँ
संबंध के भीतर टपल्स अलग-अलग होने चाहिए। इसका अर्थ है कि किसी तालिका में कोई भी दो टपल सभी गुणों (attributes) में समान मान नहीं रखने चाहिए। अर्थात् कम-से-कम एक ऐसा गुण होना चाहिए जिसमें डेटा भिन्न (अद्वितीय) हो और NULL न हो। इस प्रकार हम संबंध के प्रत्येक टपल को अद्वितिय रूप से पहचान सकते हैं। इसलिए रिलेशनल डेटा मॉडल गुणों के मानों पर और एक संबंध की सामग्री को दूसरे संबंध के माध्यम से कैसे संदर्भित किया जाए, पर कुछ प्रतिबंध या बाध्यताएँ लगाता है। ये प्रतिबंध डेटाबेस को परिभाषित करते समय नीचे दिए गए विभिन्न प्रकार की कुंजियों के माध्यम से निर्दिष्ट किए जाते हैं:
8.5.1 उम्मीदवार कुंजी (Candidate Key)
किसी संबंध में एक या अधिक ऐसे गुण हो सकते हैं जो भिन्न मान ग्रहण करते हैं। इनमें से कोई भी गुण संबंध के टपल्स को अद्वितिय रूप से पहचानने के लिए प्रयोग किया जा सकता है। ऐसे गुणों को उम्मीदवार कुंजी कहा जाता है क्योंकि इनमें से प्रत्येक प्राथमिक कुंजी के लिए उम्मीदवार होता है।
जैसा कि चित्र 8.4 में दिखाया गया है, संबंध GUARDIAN के चार गुण हैं जिनमें GUID और GPhone सदैव अद्वितीय मान लेते हैं। कोई भी दो अभिभावक समान फोन नंबर या समान GUID नहीं रखेंगे। इसलिए ये दोनों गुण उम्मीदवार कुंजी हैं क्योंकि ये दोनों प्राथमिक कुंजी के उम्मीदवार हैं।
8.5.2 प्राथमिक कुंजी (Primary Key)
एक या अधिक उम्मीदवार कुंजियों में से वह गुण जिसे डेटाबेस डिज़ाइनर संबंध के टपल्स को अद्वितिय रूप से पहचानने के लिए चुनता है, उस संबंध की प्राथमिक कुंजी कहलाती है। उम्मीदवार कुंजियों की सूची में शेष बचे गुणों को वैकल्पिक कुंजी (alternate keys) कहा जाता है।
संबंध GUARDIAN में, मान लीजिए GUID को प्राथमिक कुंजी चुना गया है, तो GPhone को वैकल्पिक कुंजी कहा जाएगा।
8.5.3 संयुक्त प्राथमिक कुंजी
यदि किसी संबंध में कोई भी एकल गुण टपलों को अद्वितिय रूप से पहचानने में सक्षम नहीं है, तो एक से अधिक गुणों को एक साथ प्राथमिक कुंजी के रूप में लिया जाता है। ऐसी प्राथमिक कुंजी जिसमें एक से अधिक गुण हों, संयुक्त प्राथमिक कुंजी कहलाती है।
संबंध ATTENDANCE में, रोल नंबर को प्राथमिक कुंजी के रूप में उपयोग नहीं किया जा सकता क्योंकि एक ही छात्र का रोल नंबर किसी अन्य तारीख के लिए दूसरी पंक्ति में दिखाई देगा। इसी प्रकार, संबंध Attendance में, AttendanceDate को प्राथमिक कुंजी के रूप में उपयोग नहीं किया जा सकता क्योंकि एक ही तारीख प्रत्येक रोल नंबर के लिए दोहराई जाती है। हालांकि इन दोनों गुणों RollNumber और AttendanceDate का संयोजन हमेशा ATTENDANCE तालिका में अद्वितीय मान रखेगा क्योंकि किसी भी कार्य दिवस पर, किसी छात्र की उपस्थिति केवल एक बार अंकित की जाएगी। अतः $\{$ RollNumber, AttendanceDate $\}$ ATTENDANCE संबंध की संयुक्त प्राथमिक कुंजी बनाएगी।
8.5.4 विदेशी कुंजी
एक विदेशी कुंजी (foreign key) का उपयोग दो संबंधों (relations) के बीच संबंध को दर्शाने के लिए किया जाता है। एक विदेशी कुंजी एक ऐसा गुण (attribute) होता है जिसका मान किसी अन्य संबंध की प्राथमिक कुंजी (primary key) से प्राप्त होता है। इसका अर्थ है कि किसी संबंध का कोई भी गुण (संदर्भित करने वाला), जो किसी अन्य (संदर्भित) संबंध की सामग्री को संदर्भित करने के लिए प्रयोग किया जाता है, विदेशी कुंजी बन जाता है यदि वह संदर्भित संबंध की प्राथमिक कुंजी को संदर्भित करता है। संदर्भित करने वाले संबंध को विदेशी संबंध (Foreign Relation) कहा जाता है। कुछ मामलों में, विदेशी कुंजी NULL मान ले सकती है यदि यह विदेशी तालिका की प्राथमिक कुंजी का हिस्सा नहीं है। वह संबंध जिसमें संदर्भित प्राथमिक कुंजी परिभाषित की गई है, प्राथमिक संबंध या मास्टर संबंध (primary relation or master relation) कहलाता है।
चित्र 8.5 में, स्टूडेंट अटेंडेंस डेटाबेस (Student Attendance database) में दो विदेशी कुंजियों को स्कीमा आरेख (schema diagram) के माध्यम से दिखाया गया है, जहाँ विदेशी कुंजी को एक निर्देशित चाप (तीर) के रूप में दिखाया गया है जो उससे उत्पन्न होकर संदर्भित तालिका की प्राथमिक कुंजी के संगत गुण पर समाप्त होता है। रेखांकित गुण उस तालिका की प्राथमिक कुंजी बनाते हैं।
चित्र 8.5: STUDENTATTENDANCE डेटाबेस प्राथमिक और विदेशी कुंजियों के साथ
सारांश
- एक फ़ाइल सिस्टम में फ़ाइल एक कंटेनर होता है जो कंप्यूटर में डेटा संग्रहीत करने के लिए उपयोग होता है।
- फ़ाइल सिस्टम डेटा रिडन्डेंसी, डेटा असंगति, डेटा आइसोलेशन, डेटा डिपेंडेंस और नियंत्रित डेटा शेयरिंग से पीड़ित होता है।
- डेटाबेस मैनेजमेंट सिस्टम (DBMS) डेटाबेस बनाने और प्रबंधित करने के लिए एक सॉफ़्टवेयर है। एक डेटाबेस टेबलों का संग्रह होता है।
- डेटाबेस स्कीमा एक डेटाबेस का डिज़ाइन होता है।
- एक डेटाबेस कंस्ट्रेंट डेटा पर एक प्रतिबंध होता है जो टेबल में सम्मिलित किया जा सकता है।
- डेटाबेस स्कीमा और डेटाबेस कंस्ट्रेंट डेटाबेस कैटलॉग में संग्रहीत होते हैं।
- किसी भी समय डेटाबेस का स्नैपशॉट डेटाबेस इंस्टेंस होता है।
- एक क्वेरी डेटाबेस के लिए सूचना पुनर्प्राप्ति और डेटा मैनिपुलेशन (सम्मिलन, विलोपन या अद्यतन) के लिए एक अनुरोध होता है। इसे स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) में लिखा जाता है।
- रिलेशनल DBMS (RDBMS) संबंधित टेबलों में डेटा संग्रहीत करने के लिए उपयोग किया जाता है। टेबल की पंक्तियों और स्तंभों को क्रमशः टपल और एट्रिब्यूट कहा जाता है। एक टेबल को एक रिलेशन कहा जाता है।
- RDBMS में संग्रहीत डेटा पर विनाश कुंजियों जैसे कैंडिडेट कुंजी, प्राइमरी कुंजी, कंपोज़िट प्राइमरी कुंजी, फॉरेन कुंजी के उपयोग से लागू किया जाता है।
- एक रिलेशन में प्राइमरी कुंजी टपल की अद्वितीय पहचान के लिए उपयोग की जाती है।
- फॉरेन कुंजी दो टेबलों या रिलेशनों को संबंधित करने के लिए उपयोग की जाती है।
- टेबल में प्रत्येक स्तंभ एक रिकॉर्ड की एक विशेषता (एट्रिब्यूट) को दर्शाता है। टेबल एक इकाई के लिए सूचना संग्रहीत करता है जबकि एक पंक्ति एक रिकॉर्ड को दर्शाती है।
- टेबल में प्रत्येक पंक्ति एक रिकॉर्ड को दर्शाती है। एक टपल एट्रिब्यूट मानों का संग्रह होता है जो एक रिकॉर्ड को अद्वितीय बनाता है।
- एक टपल एक अद्वितीय इकाई होती है जबकि एट्रिब्यूट मान टेबल में दोहराए जा सकते हैं।
- SQL MySQL जैसे RDBMS सिस्टम के लिए मानक भाषा है।
अभ्यास
1. निम्नलिखित के लिए उपयुक्त पद बताइए:
a) तार्किक रूप से संबंधित रिकॉर्ड्स का संग्रह।
b) DBMS एक ऐसी फ़ाइल बनाता है जिसमें डेटाबेस में संग्रहीत डेटा के बारे में विवरण होता है।
c) वह विशेषता जो किसी संबंध में टपलों को अद्वितीय रूप से पहचान सकती है।
d) वह विशेष मान जो तब संग्रहीत किया जाता है जब किसी विशेषता के लिए वास्तविक डेटा मान अज्ञात हो।
e) वह विशेषता जो तालिका के टपलों को अद्वितीय रूप से पहचान सकती है लेकिन तालिका की प्राइमरी कुंजी के रूप में परिभाषित नहीं है।
f) वह सॉफ़्टवेयर जिसका उपयोग संबंधपरक डेटाबेस बनाने, हेरफेर करने और बनाए रखने के लिए किया जाता है।
2. फॉरेन कुंजियों को NULL मान रखने की अनुमति क्यों दी जाती है? उदाहरण सहित समझाइए।
3. अंतर बताइए:
a) डेटाबेस स्थिति और डेटाबेस स्कीमा
b) प्राइमरी कुंजी और फॉरेन कुंजी
c) संबंध की डिग्री और कार्डिनैलिटी
4. फ़ाइल सिस्टम की तुलना में डेटाबेस प्रबंधन प्रणाली डेटाबेस के माध्यम से डेटा में अतिरेक से कैसे बचती है?
5. फ़ाइल सिस्टम की क्या सीमाएँ हैं जिन्हें संबंधपरक DBMS द्वारा दूर किया जा सकता है?
6. एक स्कूल के नियम के अनुसार प्रत्येक छात्र को खेल गतिविधि में भाग लेना आवश्यक है। इसलिए प्रत्येक को खेल गतिविधि के लिए केवल एक वरीयता देनी होती है। मान लीजिए किसी कक्षा में पाँ� छात्र हैं, प्रत्येक का अद्वितीय रोल नंबर है। कक्षा प्रतिनिधि ने खेल वरीयताओं की एक सूची तैयार की है जैसा नीचे दिखाया गया है। निम्नलिखित प्रश्नों के उत्तर दीजिए:
तालिका: खेल वरीयताएँ
| रोल_नं | पसंद |
|---|---|
| 9 | क्रिकेट |
| 13 | फुटबॉल |
| 17 | बैडमिंटन |
| 17 | फुटबॉल |
| 21 | हॉकी |
| 24 | NULL |
| NULL | कबड्डी |
क) रोल नं 24 को खेलों में रुचि नहीं हो सकती। क्या उस छात्र के preference फ़ील्ड में NULL मान निर्धारित किया जा सकता है?
ख) रोल नं 17 ने खेलों में दो पसंद दी हैं। यहाँ रिलेशनल DBMC का कौन-सा गुण उल्लंघित होता है? क्या हम रिलेशनल DBMS में ऐसे उल्लंघन की जाँच के लिए कोई constraint या key उपयोग कर सकते हैं, यदि हो?
ग) कबड्डी किसी भी छात्र द्वारा नहीं चुना गया। क्या Sports Preferences रिलेशन में यह tuple होना संभव है?
7. एक अन्य कक्षा में 2 खंड हैं, दोनों के क्लास प्रतिनिधियों ने 2 अलग-अलग Sports Preferences तालिकाएँ तैयार की हैं, जैसा नीचे दिखाया गया है:
खंड 1 की खेल पसंद (रोल नंबर कॉलम पर व्यवस्थित)
तालिका: Sports Preferences
| Roll_no | Sports |
|---|---|
| 9 | Cricket |
| 13 | Football |
| 21 | Badminton |
| 24 | Hockey |
खंड 2 की खेल पसंद (खेल के नाम पर व्यवस्थित, और कॉलम क्रम भी भिन्न है)
| Sports | Ro11_no |
|---|---|
| Badminton | 17 |
| Cricket | 9 |
| Cricket | 24 |
| Football | 13 |
| Hockey | 21 |
क्या दोनों रिलेशन की स्थितियाँ समतुल्य हैं? औचित्य दीजिए।
8. स्कूल कैंटीन स्कूल कैंटीन में उपलब्ध वस्तुओं के रिकॉर्ड रखना चाहता है और जब छात्र कैंटीन से कोई वस्तु खरीदते हैं तो बिल तैयार करना चाहता है। स्कूल कैंटीन डेटाबेस बनाना चाहता है ताकि कैंटीन में मौजूद वस्तुओं और छात्रों द्वारा खरीदी गई वस्तुओं की निगरानी रखी जा सके। निम्नलिखित प्रश्नों के उत्तर देकर एक डेटाबेस डिज़ाइन करें:
a) प्रत्येक वस्तु का नाम उसकी कीमत के साथ संग्रहित करने के लिए किस संबंध का उपयोग किया जाना चाहिए? उपयुक्त विशेषता नामों को उनके डेटा प्रकार के साथ तय करें। प्रत्येक वस्तु और उसकी कीमत केवल एक बार संग्रहित की जानी चाहिए। संबंध को परिभाषित करते समय किस प्रतिबंध का उपयोग किया जाना चाहिए?
b) बिल तैयार करने के लिए, हमें यह जानना होगा कि कोई वस्तु कितनी मात्रा में खरीदी गई है। क्या यह जानकारी एक नए संबंध में होनी चाहिए या पिछले संबंध का हिस्सा होनी चाहिए? यदि एक नया संबंध आवश्यक है, तो विशेषताओं के लिए उपयुक्त नाम और डेटा प्रकार तय करें। साथ ही, उपयुक्त प्राथमिक कुंजी और विदेशी कुंजी की पहचान करें ताकि निम्नलिखित दो प्रतिबंध संतुष्ट हों:
i) एक ही बिल को भिन्न-भिन्न ऑर्डरों के लिए नहीं बनाया जा सकता।
ii) बिल केवल कैंटीन में उपलब्ध वस्तुओं के लिए ही बनाया जा सकता है।
c) स्कूल यह जानना चाहता है कि जब छात्र कोई वस्तु ऑर्डर करते हैं तो वे कितनी कैलोरी लेते हैं। विशेषता ‘calories’ किस संबंध में संग्रहित की जानी चाहिए?
9. एक संगठन अपने कर्मचारियों और उनके आश्रितों के बारे में निम्नलिखित विवरण रखने के लिए EMPDEPENDENT नामक डेटाबेस बनाना चाहता है।
EMPLOYEE(AadharNumber, Name, Address,
$\hspace{1.5cm}$ Department,EmployeeID)
DEPENDENT(EmployeeID, DependentName,
$\hspace{1.5cm}$ Relationship)
a) EMPLOYEE के उन विशेषताओं का नाम बताइए जिन्हें उम्मीदवार कुंजी के रूप में प्रयोग किया जा सकता है।
b) कंपनी किसी विशेष कर्मचारी के आश्रित का विवरण प्राप्त करना चाहती है। इस विवरण को प्राप्त करने के लिए आवश्यक तालिकाओं और कुंजी का नाम बताइए।
c) EMPLOYEE और DEPENDENT संबंध की डिग्री क्या है?
10. स्कूल यूनिफॉर्म $\mathrm{M} / \mathrm{s}$ शीतल प्राइवेट लिमिटेड पर उपलब्ध है। उन्होंने SCHOOL_UNIFORM डेटाबेस को दो संबंधों यानी UNIFORM और COST के साथ बनाए रखा है। निम्न आकृति डेटाबेस स्कीमा और उसकी स्थिति को दर्शाती है।
a) क्या वे निम्न टपल्स को UNIFORM संबंध में सम्मिलित कर सकते हैं? अपने उत्तर के समर्थन में कारण दीजिए।
i) 7, रूमाल, NULL
ii) 4, रिबन, लाल
iii) 8 , NULL, सफेद
b) क्या वे निम्न टपल्स को COST संबंध में सम्मिलित कर सकते हैं? अपने उत्तर के समर्थन में कारण दीजिए।
i) $7, \mathrm{~S}, 0$
ii) 9, XL, 100
11. एक मल्टीप्लेक्स में फिल्में विभिन्न ऑडिटोरियम में प्रदर्शित की जाती हैं। एक फिल्म को एक से अधिक ऑडिटोरियम में दिखाया जा सकता है। फिल्मों का रिकॉर्ड बनाए रखने के लिए, मल्टीप्लेक्स दो संबंधों यानी MOVIE और AUDI वाले रिलेशनल डेटाबेस को बनाए रखता है जैसा कि नीचे दिखाया गया है:
मूवी(मूवी_आईडी, मूवी_नाम, रिलीज़_तिथि)
ऑडी(ऑडी_नंबर, मूवी_आईडी, सीटें, स्क्रीन_प्रकार, टिकट_कीमत)
क) क्या मूवी संबंध में मूवी_आईडी को प्राथमिक कुंजी नियुक्त करना सही है? यदि नहीं, तो उपयुक्त प्राथमिक कुंजी सुझाएं।
ख) क्या ऑडी संबंध में ऑडी_नंबर को प्राथमिक कुंजी नियुक्त करना सही है? यदि नहीं, तो उपयुक्त प्राथमिक कुंजी सुझाएं।
ग) क्या इनमें से किसी संबंध में विदेशी कुंजी है?
12. उपरोक्त दिए गए डेटाबेस STUDENT-PROJECT के लिए, निम्नलिखित का उत्तर दें:
क) प्रत्येक तालिका की प्राथमिक कुंजी का नाम बताएं।
ख) तालिका PROJECT-ASSIGNED में विदेशी कुंजी(यां) खोजें।
ग) क्या तालिका STUDENT में कोई वैकल्पिक कुंजी है? अपने उत्तर के लिए औचित्य दें।
घ) क्या कोई उपयोगकर्ता STUDENT तालिका के फ़ील्ड रोलनंबर में डुप्लिकेट मान नियुक्त कर सकता है? औचित्य दें।
13. उपरोक्त दिए गए डेटाबेस STUDENT-PROJECT के लिए, क्या हम निम्नलिखित संचालन कर सकते हैं?
क) रोल नंबर मान के बिना एक छात्र रिकॉर्ड डालें।
ख) पंजीकरण नंबर मान के बिना एक छात्र रिकॉर्ड डालें।
ग) सबमिशन-तिथि के बिना एक प्रोजेक्ट विवरण डालें।
घ) तालिका PROJECT-ASSIGNED में पंजीकरण आईडी IP-101-19 और प्रोजेक्टनंबर 206 के साथ एक रिकॉर्ड डालें।