डेटाबेस की ज़रूरत क्यों?
फ़ाइल सिस्टम में हर विभाग अपनी फ़ाइलें रखता है। इससे समस्याएँ होती हैं:
- डेटा दोहराव (redundancy): एक ही डेटा कई बार, जगह बर्बाद।
- डेटा असंगति (inconsistency): एक कॉपी बदली, बाकी नहीं, तो वे मेल नहीं खातीं।
- ढूँढना और बाँटना कठिन: हर सवाल के लिए नया प्रोग्राम।
- कमज़ोर सुरक्षा: कौन क्या देखे, नियंत्रण कठिन।
- डेटा अलगाव और निर्भरता: अलग-अलग प्रारूप की फ़ाइलें; फ़ाइल का ढाँचा बदलने से प्रोग्राम टूटते हैं।
डेटाबेस एक जगह रखा संबंधित डेटा का व्यवस्थित संग्रह है, ताकि वह साझा, संगत और सुरक्षित रहे।
डेटाबेस मैनेजमेंट सिस्टम (DBMS)
DBMS डेटाबेस बनाने, रखने, बदलने, खोजने और सँभालने, और कौन इस्तेमाल करे यह नियंत्रित करने का सॉफ़्टवेयर है। उदाहरण: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access।
लाभ: कम दोहराव, संगति, कई उपयोगकर्ताओं में साझा, पासवर्ड और अनुमति से सुरक्षा, बैकअप और रिकवरी, और क्वेरी भाषा (SQL) से आसान खोज।
रोज़ के उपयोग: बैंक, रेलवे आरक्षण, स्कूल रिकॉर्ड, ऑनलाइन शॉपिंग, अस्पताल।
रिलेशनल मॉडल: रिलेशन, एट्रिब्यूट, टपल, डोमेन
रिलेशनल डेटा मॉडल में डेटा तालिकाओं में रहता है।
- रिलेशन: नाम वाली तालिका, जैसे STUDENT।
- एट्रिब्यूट: स्तंभ, जैसे Name।
- टपल: पंक्ति, यानी एक पूरा रिकॉर्ड।
- डोमेन: किसी एट्रिब्यूट के अनुमत मानों का समूह, जैसे कक्षा ∈ {9, 10, 11, 12}।
- डिग्री: एट्रिब्यूट (स्तंभों) की संख्या।
- कार्डिनैलिटी: टपल (पंक्तियों) की संख्या।
नियम: हर स्तंभ का नाम अलग; पंक्तियों या स्तंभों का क्रम मायने नहीं रखता; कोई दो पंक्तियाँ बिल्कुल एक जैसी नहीं; हर ख़ाने में एक ही मान (या NULL, यानी अज्ञात)।
की: कैंडिडेट, प्राइमरी और ऑल्टरनेट
- कैंडिडेट की: ऐसा एट्रिब्यूट (या एट्रिब्यूट-समूह) जिसका मान हर पंक्ति के लिए अद्वितीय हो और कभी NULL न हो। एक तालिका में कई हो सकती हैं।
- प्राइमरी की: पंक्तियाँ पहचानने के लिए चुनी गई एक कैंडिडेट की। यह न NULL हो सकती है, न दोहराई जा सकती है।
- ऑल्टरनेट की: हर वह कैंडिडेट की जो प्राइमरी नहीं चुनी गई।
उदाहरण: STUDENT(AdmNo, Name, Class, Email)। Name और Class दोहराते हैं, इसलिए की नहीं। AdmNo और (अगर हमेशा भरा और अलग हो) Email कैंडिडेट की हैं। AdmNo को प्राइमरी चुनें; Email ऑल्टरनेट की बनती है।
यह भी उपयोगी: कंपोज़िट की दो या ज़्यादा स्तंभ मिलाकर (जैसे Class + RollNo); फ़ॉरेन की एक तालिका का वह स्तंभ जो दूसरी तालिका की प्राइमरी की की ओर इशारा करके दोनों को जोड़ता है।
करके देखें: अपने ID कार्ड में की ढूँढें
अपना स्कूल ID कार्ड या बस पास देखें। हर ख़ाना लिखें (नाम, कक्षा, रोल नं., प्रवेश नं., फ़ोन)। हर एक पर दो सवाल पूछें: क्या दो छात्रों का मान एक हो सकता है? क्या यह ख़ाली हो सकता है? लिखें कौन-सी कैंडिडेट की हैं और आप प्राइमरी किसे चुनेंगे। फिर 3D के कदम 6 में यही जाँचें।
मुख्य सूत्र और परिभाषाएँ
- रिलेशन = तालिका; एट्रिब्यूट = स्तंभ; टपल = पंक्ति
- डिग्री = स्तंभों की संख्या; कार्डिनैलिटी = पंक्तियों की संख्या
- कैंडिडेट की: अद्वितीय + NULL नहीं
- प्राइमरी की = चुनी गई कैंडिडेट की; ऑल्टरनेट की = बाकी
हल किए गए उदाहरण
1. एक तालिका में 5 स्तंभ और 30 पंक्तियाँ हैं। डिग्री और कार्डिनैलिटी बताइए।
डिग्री = 5, कार्डिनैलिटी = 30।
2. डिग्री 4, कार्डिनैलिटी 10 वाली तालिका में 2 पंक्तियाँ और 1 स्तंभ जोड़ने पर नए मान?
डिग्री = 5, कार्डिनैलिटी = 12।
3. EMPLOYEE(EmpID, Name, Aadhaar, Dept)। कैंडिडेट, प्राइमरी और ऑल्टरनेट की पहचानें।
EmpID और Aadhaar अद्वितीय → कैंडिडेट की। EmpID को प्राइमरी चुनें; Aadhaar ऑल्टरनेट की। Name और Dept दोहरा सकते हैं।
4. STUDENT में Name प्राइमरी की क्यों नहीं हो सकता?
दो छात्रों का नाम एक हो सकता है, इसलिए यह पंक्ति को अलग नहीं पहचानता।
5. एक अक्षर में रखे Gender एट्रिब्यूट का डोमेन बताइए।
{"M", "F", "O"} (या जो कोड स्कूल तय करे)।
आम गलतियाँ
- स्तंभ को टपल कहना। टपल = पंक्ति; एट्रिब्यूट = स्तंभ।
- डिग्री को पंक्तियों की संख्या कहना। डिग्री स्तंभ गिनती है।
- यह सोचना कि तालिका में केवल एक कैंडिडेट की हो सकती है। कई हो सकती हैं, पर प्राइमरी एक ही।
- प्राइमरी की स्तंभ में NULL आने देना।