डेटाबेस की अवधारणाएँ (Database Concepts)

कोई स्कूल अपने रिकॉर्ड अलग-अलग फ़ाइलों में रख सकता है — एक प्रवेश की, एक शुल्क की, एक परिणाम की — और बहुत से कभी ऐसा करते थे। यह अध्याय उन समस्याओं से शुरू होता है जो इस तरीक़े से पैदा होती हैं और दिखाता है कि डेटाबेस प्रबंधन प्रणाली (DBMS) उन्हें कैसे हल करती है। फिर यह संबंधपरक मॉडल (relational model) की शब्दावली रखता है, जिसमें डेटा तालिकाओं में रहता है: गुण (attribute) और टपल, डोमेन, डिग्री और कार्डिनैलिटी, तथा वे गुणधर्म जो हर संबंध (relation) में होने चाहिए। अंत में यह कुंजियों (keys) को लेता है, वे गुण जो किसी पंक्ति की पहचान करते हैं और एक तालिका को दूसरी से जोड़ते हैं। ये शब्द परिभाषाओं और छोटे हल किए उदाहरणों के रूप में परखे जाते हैं, और अगला SQL अध्याय इनमें से हर एक का प्रयोग करता है।

केवल फ़ाइलें क्यों नहीं? फ़ाइल प्रणाली की सीमाएँ

फ़ाइल प्रणाली में हर अनुप्रयोग अपना डेटा अपनी फ़ाइलों में रखता है। कुछ रिकॉर्डों तक यह चलता है, पर डेटा और उपयोगकर्ता बढ़ने पर पुस्तक छह समस्याएँ पहचानती है:

फ़ाइल प्रणाली की सीमाएँ
समस्याअर्थ
पहुँच में कठिनाईहर नए प्रश्न के लिए फ़ाइलें पढ़ने वाला नया अनुप्रयोग-प्रोग्राम लिखना पड़ता है
डेटा अतिरेक (redundancy)एक ही डेटा कई फ़ाइलों में रखा जाता है, स्थान व्यर्थ होता है
डेटा असंगति (inconsistency)एक ही डेटा की प्रतियाँ असहमत होती हैं, क्योंकि एक अद्यतन हुई और दूसरी नहीं
डेटा पृथक्करण (isolation)संबंधित डेटा अलग फ़ाइलों में, प्रायः भिन्न प्रारूपों में, बिना किसी संबंध के रहता है
डेटा निर्भरता (dependence)फ़ाइल की संरचना में परिवर्तन से उसका प्रयोग करने वाले हर प्रोग्राम को बदलना पड़ता है
नियंत्रित डेटा साझेदारीअलग-अलग उपयोगकर्ताओं को केवल वही दिखाना कठिन है जिसकी उन्हें अनुमति है
⚠️ अतिरेक से असंगति होती है
ये भिन्न समस्याएँ हैं जिनके बीच कारण-परिणाम का संबंध है। अतिरेक स्वयं दोहराव है — किसी विद्यार्थी का पता शुल्क-फ़ाइल और प्रवेश-फ़ाइल दोनों में। असंगति वह है जो तब होती है जब पता एक फ़ाइल में बदला जाए और दूसरी में नहीं, जिससे दोनों प्रतियाँ असहमत हो जाएँ।

डेटाबेस प्रबंधन प्रणालियाँ

डेटाबेस संबंधित डेटा का संगठित संग्रह है, और डेटाबेस प्रबंधन प्रणाली (DBMS) वह सॉफ़्टवेयर है जिससे उसे बनाया, सहेजा, अद्यतन और प्राप्त किया जाता है — MySQL, Oracle, PostgreSQL, SQL Server, Microsoft Access और MongoDB उदाहरण हैं। चूँकि DBMS डेटा को एक स्थान पर रखता है और उस तक पहुँच नियंत्रित करता है, यह अतिरेक व असंगति घटाता है, किसी भी अधिकृत उपयोगकर्ता को नए प्रोग्रामों के बिना नए प्रश्न पूछने देता है, और तय करता है कि कौन क्या देख सकता है।

  • डेटाबेस स्कीमा: डेटाबेस की रूपरेखा — उसकी तालिकाएँ, उनके गुण और प्रकार, और उन पर प्रतिबंध।
  • डेटा प्रतिबंध (constraint): गुण द्वारा लिए जा सकने वाले मानों को सीमित करने वाला नियम, जैसे "अंक ऋणात्मक नहीं हो सकते" या "अनुक्रमांक ख़ाली नहीं हो सकता"।
  • मेटा-डेटा (डेटा डिक्शनरी): डेटा के बारे में डेटा — स्कीमा और प्रतिबंध, जिन्हें DBMS सहेजता है।
  • डेटाबेस इंस्टेंस: किसी विशेष क्षण पर डेटाबेस में वास्तव में संग्रहित डेटा; स्कीमा वही रहता है जबकि इंस्टेंस हर प्रविष्टि या अद्यतन के साथ बदलता है।
  • क्वेरी और डेटा परिचालन (manipulation): क्वेरी डेटा प्राप्त करने का अनुरोध है; परिचालन का अर्थ उसे जोड़ना, हटाना और अद्यतन करना है। डेटाबेस इंजन वह घटक है जो इन्हें वास्तव में करता है।

संबंधपरक डेटा मॉडल

संबंधपरक मॉडल, जिसे ई. एफ़. कॉड (E. F. Codd) ने 1970 में प्रस्तावित किया, डेटा को संबंधों (relations) — पंक्तियों और स्तंभों की तालिकाओं — में रखता है। हर स्तंभ एक नाम वाला गुण (attribute) है; हर पंक्ति एक टपल (tuple), एक रिकॉर्ड। किसी गुण द्वारा लिए जा सकने वाले मानों का समूह उसका डोमेन है — Gender गुण के लिए शायद {M, F, T}। संबंध में गुणों की संख्या उसकी डिग्री है, और टपलों की संख्या उसकी कार्डिनैलिटी। RollNo, Name, Class, Marks और City गुणों तथा आठ पंक्तियों वाले STUDENT संबंध की डिग्री 5 और कार्डिनैलिटी 8 है। पंक्तियाँ जोड़ने से केवल कार्डिनैलिटी बदलती है; स्तंभ जोड़ने या हटाने से केवल डिग्री।

  • संबंध में हर गुण का अद्वितीय नाम होता है, और गुणों का क्रम मायने नहीं रखता।
  • कोई दो टपल समान नहीं होते, और टपलों का क्रम मायने नहीं रखता।
  • हर मान परमाणुक (atomic) होता है — उसे और विभाजित नहीं किया जा सकता; एक कोष्ठिका में एक मान होता है, सूची नहीं।
  • जो मान अज्ञात हो या लागू न हो उसे NULL से दर्शाया जाता है, जो न शून्य है न ख़ाली स्ट्रिंग।

संबंधपरक डेटाबेस में कुंजियाँ

चूँकि कोई दो टपल समान नहीं हो सकते, कोई गुण या गुणों का समूह उन्हें अलग पहचानना चाहिए। हर वह गुण (या गुणों का न्यूनतम समूह) जो हर टपल की अद्वितीय पहचान कर सके, प्रत्याशी कुंजी (candidate key) है। डेटाबेस डिज़ाइनर द्वारा टपलों की पहचान हेतु चुनी गई एक प्रत्याशी कुंजी प्राथमिक कुंजी (primary key) है; न चुनी गई प्रत्याशी कुंजियाँ वैकल्पिक कुंजियाँ (alternate keys) हैं। एक से अधिक गुणों से बनी प्राथमिक कुंजी संयुक्त प्राथमिक कुंजी (composite primary key) है। प्राथमिक कुंजी कभी NULL नहीं हो सकती, क्योंकि अनुपस्थित मान किसी की पहचान नहीं कर सकता।

विदेशी कुंजी (foreign key) दो संबंधों को जोड़ती है: यह एक संबंध का ऐसा गुण है जिसके मान दूसरे संबंध — संदर्भित (referenced) संबंध — की प्राथमिक कुंजी से लिए जाते हैं। RESULT(RollNo, Subject, Marks) में RollNo, STUDENT(RollNo) को संदर्भित करने वाली विदेशी कुंजी है, अतः परिणाम केवल उसी विद्यार्थी का दर्ज हो सकता है जो मौजूद हो। विदेशी कुंजी दोहराई जा सकती है (एक विद्यार्थी, कई परिणाम) और NULL हो सकती है जब वह अपने संबंध की प्राथमिक कुंजी का भाग न हो। ATTENDANCE(RollNo, AttDate, Status) में न RollNo अकेले अद्वितीय है न AttDate — हर विद्यार्थी की कई तिथियाँ और हर तिथि के कई विद्यार्थी — पर दोनों मिलकर हैं, अतः (RollNo, AttDate) संयुक्त प्राथमिक कुंजी है।

🧠 प्रत्याशी = प्राथमिक + वैकल्पिक
STUDENT(RollNo, AadhaarNo, Name, Class) में RollNo और AadhaarNo दोनों अद्वितीय हैं, अतः दोनों प्रत्याशी कुंजियाँ हैं। RollNo को प्राथमिक कुंजी चुनें तो AadhaarNo वैकल्पिक कुंजी बन जाती है। Name प्रत्याशी कुंजी नहीं है: दो विद्यार्थियों का नाम एक हो सकता है।

मुख्य बिंदु

  • फ़ाइल प्रणाली में पहुँच की कठिनाई, अतिरेक, असंगति, पृथक्करण, डेटा निर्भरता और साझेदारी पर कमज़ोर नियंत्रण होता है; DBMS इन्हें हल करता है।
  • स्कीमा रूपरेखा है, इंस्टेंस किसी क्षण का डेटा, मेटा-डेटा स्कीमा का सहेजा गया विवरण।
  • संबंधपरक मॉडल (कॉड) में स्तंभ गुण है, पंक्ति टपल; डिग्री गुण गिनती है, कार्डिनैलिटी टपल।
  • टपल भिन्न और क्रमहीन होते हैं, गुण अद्वितीय नाम वाले और क्रमहीन, मान परमाणुक, और NULL अज्ञात को दर्शाता है।
  • प्रत्याशी कुंजियाँ प्रत्येक टपलों की पहचान कर सकती हैं; चुनी गई प्राथमिक कुंजी है (कभी NULL नहीं), शेष वैकल्पिक कुंजियाँ।
  • संयुक्त कुंजी कई गुणों को साथ प्रयोग करती है; विदेशी कुंजी अपने मान दूसरे संबंध की प्राथमिक कुंजी से लेती है।

अभ्यास प्रश्न (8)

उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।

  1. एक संबंध में 5 गुण और 8 टपल हैं। दो नए टपल जोड़े जाते हैं और एक गुण हटाया जाता है। अब उसकी डिग्री और कार्डिनैलिटी क्या हैं?

    1. डिग्री 10, कार्डिनैलिटी 4
    2. डिग्री 4, कार्डिनैलिटी 10
    3. डिग्री 6, कार्डिनैलिटी 9
    4. डिग्री 5, कार्डिनैलिटी 10
    उत्तर देखें

    उत्तर: B — डिग्री 4, कार्डिनैलिटी 10

    डिग्री गुण गिनती है: 5 − 1 = 4। कार्डिनैलिटी टपल गिनती है: 8 + 2 = 10। डिग्री 10 और कार्डिनैलिटी 4 में दोनों शब्द उलटे हैं, इस जोड़ी की सबसे आम चूक। डिग्री 5 हटाए गए गुण को भूल जाता है, और डिग्री 6 के साथ कार्डिनैलिटी 9 हर परिवर्तन को ग़लत गिनती पर लगाता है।
  2. किसी विद्यार्थी का पता शुल्क-फ़ाइल और प्रवेश-फ़ाइल दोनों में रखा है। पता केवल शुल्क-फ़ाइल में बदला जाता है, अतः दोनों फ़ाइलें अब भिन्न पते दिखाती हैं। यह फ़ाइल प्रणाली की किस समस्या को दर्शाता है?

    1. डेटा पृथक्करण
    2. डेटा निर्भरता
    3. डेटा असंगति
    4. पहुँच में कठिनाई
    उत्तर देखें

    उत्तर: C — डेटा असंगति

    एक ही तथ्य की दो प्रतियाँ अब असहमत हैं, और यही असहमति डेटा असंगति है। इसका कारण अतिरेक है — पता दो बार रखना — पर प्रश्न बेमेल का वर्णन करता है, दोहराव का नहीं। पृथक्करण बिना संबंध बिखरा संबंधित डेटा है, निर्भरता फ़ाइल की संरचना बदलने पर प्रोग्रामों का टूटना है, और पहुँच की कठिनाई हर नई क्वेरी के लिए नया प्रोग्राम चाहिए होना है।
  3. STUDENT(RollNo, AadhaarNo, Name, Class) में RollNo और AadhaarNo दोनों हर विद्यार्थी के लिए अद्वितीय हैं, और RollNo को प्राथमिक कुंजी चुना गया है। AadhaarNo क्या है?

    1. एक विदेशी कुंजी
    2. एक संयुक्त कुंजी
    3. एक वैकल्पिक कुंजी
    4. कुंजी नहीं, क्योंकि केवल एक प्राथमिक कुंजी की अनुमति है
    उत्तर देखें

    उत्तर: C — एक वैकल्पिक कुंजी

    AadhaarNo हर टपल की पहचान कर सकता है, अतः वह प्रत्याशी कुंजी है; प्राथमिक कुंजी के रूप में न चुनी गई प्रत्याशी कुंजी वैकल्पिक कुंजी है। यह विदेशी कुंजी नहीं क्योंकि किसी अन्य संबंध को संदर्भित नहीं करता, और संयुक्त नहीं क्योंकि एक ही गुण है। प्राथमिक कुंजी केवल एक हो सकती है, पर अन्य प्रत्याशी कुंजियाँ कुंजी बनी रहती हैं।
  4. निम्नलिखित में से कौन विदेशी कुंजी की सबसे अच्छी परिभाषा है?

    1. ऐसा गुण जिसके मान अपने ही संबंध में अद्वितीय और कभी NULL न हों
    2. एक संबंध का ऐसा गुण जिसके मान दूसरे संबंध की प्राथमिक कुंजी से लिए जाते हैं
    3. एक ही संबंध के दो या अधिक गुणों को मिलाकर बनी कुंजी
    4. कोई भी प्रत्याशी कुंजी जिसे प्राथमिक कुंजी नहीं चुना गया
    उत्तर देखें

    उत्तर: B — एक संबंध का ऐसा गुण जिसके मान दूसरे संबंध की प्राथमिक कुंजी से लिए जाते हैं

    विदेशी कुंजी से दो संबंध जुड़ते हैं: इसके मान संदर्भित संबंध की प्राथमिक कुंजी से मेल खाने चाहिए, जैसे RESULT का RollNo, STUDENT के RollNo से। "अद्वितीय और कभी NULL नहीं" प्राथमिक कुंजी का वर्णन है, गुणों का संयोजन संयुक्त कुंजी है, और न चुनी गई प्रत्याशी कुंजी वैकल्पिक कुंजी है। विदेशी कुंजी दोहराई जा सकती है और NULL हो सकती है, ठीक वही जो प्राथमिक कुंजी नहीं कर सकती।
  5. ATTENDANCE(RollNo, AttDate, Status) दर्ज करता है कि हर विद्यार्थी हर दिन उपस्थित था या नहीं। प्राथमिक कुंजी का कौन-सा चुनाव सही है?

    1. केवल RollNo
    2. केवल AttDate
    3. केवल Status
    4. RollNo और AttDate एक साथ
    उत्तर देखें

    उत्तर: D — RollNo और AttDate एक साथ

    हर विद्यार्थी की हर दिन की एक पंक्ति है, अतः RollNo दोहराता है; हर दिन हर विद्यार्थी की पंक्ति है, अतः AttDate दोहराता है; पर एक विद्यार्थी की एक दिन में एक ही पंक्ति है, अतः यह जोड़ी हर टपल की पहचान करती है — संयुक्त प्राथमिक कुंजी। Status केवल दो-एक मान लेता है और लगातार दोहराता है, अतः वह किसी की पहचान नहीं करता।
  6. किसी संबंध के बारे में इन कथनों पर विचार कीजिए। I. उसके टपलों का क्रम मायने नहीं रखता। II. उसके दो टपल बिल्कुल समान हो सकते हैं। III. उसका हर मान परमाणुक है। कौन-से सही हैं?

    1. केवल I और II
    2. केवल II और III
    3. केवल I और III
    4. I, II और III
    उत्तर देखें

    उत्तर: C — केवल I और III

    संबंध टपलों का समुच्चय है, अतः उनके क्रम का कोई अर्थ नहीं (I) और हर कोष्ठिका में एक अविभाज्य मान होता है (III)। II असत्य है: कोई दो टपल समान नहीं हो सकते, इसीलिए हर संबंध में उन्हें अलग पहचानने वाली कुंजी होती है। II वाला कोई भी विकल्प उन दोहराई पंक्तियों को स्वीकारता है जिन्हें संबंधपरक मॉडल वर्जित करता है।
  7. अभिकथन (A): विदेशी कुंजी गुण में कभी NULL मान नहीं हो सकता। कारण (R): विदेशी कुंजी दूसरे संबंध की प्राथमिक कुंजी को संदर्भित करती है।

    1. A और R दोनों सत्य हैं, और R, A की सही व्याख्या है
    2. A और R दोनों सत्य हैं, पर R, A की सही व्याख्या नहीं है
    3. A सत्य है, पर R असत्य है
    4. A असत्य है, पर R सत्य है
    उत्तर देखें

    उत्तर: D — A असत्य है, पर R सत्य है

    R विदेशी कुंजी की परिभाषा है, अतः सत्य है। A असत्य है: NULL-निषेध का नियम प्राथमिक कुंजी का है, और जो विदेशी कुंजी अपने संबंध की प्राथमिक कुंजी का भाग न हो वह NULL हो सकती है — जैसे वह कर्मचारी जिसे अभी किसी विभाग में नहीं रखा गया। A को सत्य मानना प्राथमिक कुंजी का नियम उस कुंजी पर लगाना है जो केवल उसे संदर्भित करती है।
  8. डेटाबेस की समग्र रूपरेखा — उसकी तालिकाएँ, उनके गुण व डेटा प्रकार, और उन पर प्रतिबंध — को डेटाबेस का क्या कहते हैं?

    1. इंस्टेंस
    2. स्कीमा
    3. इंजन
    4. क्वेरी
    उत्तर देखें

    उत्तर: B — स्कीमा

    स्कीमा डेटाबेस की संरचना है, और डेटा आने-जाने पर भी वही रहता है। इंस्टेंस उलटा विचार है, किसी क्षण पर वास्तव में सहेजा डेटा, जो हर प्रविष्टि के साथ बदलता है। इंजन वह घटक है जो संक्रियाएँ करता है, और क्वेरी डेटा प्राप्त करने का एक अनुरोध है।