Theory
Meera की sheet आख़िरकार टूटती है
यह वह पल है जिसकी ओर पूरा unit बढ़ रहा था। Meera की एक विशाल sheet items, suppliers और customers को एक ही table में ठूँसती है, supplier का phone number उसके supply किए हर item row पर फिर से लिखा।
फिर एक ही दिन तीन चीज़ें गलत होती हैं: वह एक नया supplier नहीं जोड़ सकती, एक phone number बदलने में बीस edits लगते हैं, और एक पुराना item delete करने से एक supplier पूरी तरह मिट जाता है।
ये तीन anomalies हैं, और ये ठीक वह कारण हैं कि normalization मौजूद है। Meera का दर्द textbook का सबक है।
Theory
हर page पर अपना पता लिखना
एक diary की कल्पना कीजिए जहाँ, हर एक page पर, आप अपना पूरा घर का पता फिर से लिखते हैं। घर बदलिए, और आपको हर page ठीक करना होगा (एक छूटा और आपकी diary ख़ुद का खंडन करती है)। अपनी पहली entry से पहले अपना नया पता note करना चाहते हैं? आप नहीं कर सकते, अभी कोई page ही नहीं। अपना इकलौता page फाड़िए और आपका पता भी गायब। हर जगह एक ही तथ्य दोहराना जड़-बीमारी है। Normalization हर तथ्य को एक बार लिखना है।
Theory
तीन anomalies
तीनों redundancy से निकलती हैं, एक ही तथ्य को कई rows में store करना:
- Insertion anomaly: आप कुछ data दूसरे, असंबंधित data के बिना नहीं जोड़ सकते। Meera एक नया supplier दर्ज नहीं कर सकती जब तक उसने एक item supply न किया हो, क्योंकि supplier के ब्योरे सिर्फ item rows पर रहते हैं।
- Update anomaly: कई rows में store किया एक तथ्य सब में बदलना पड़ता है। Supplier का नया phone मतलब हर item row edit करना; एक छूटा और data ख़ुद का खंडन करता है।
- Deletion anomaly: एक row delete करना असंबंधित तथ्य खो देता है। Supplier का आख़िरी item delete कीजिए और आप उस supplier के अस्तित्व का इकलौता record मिटा देते हैं।
At a glance
तीन anomalies
| Anomaly | समस्या | Meera का मामला |
|---|---|---|
| Insertion | असंबंधित Y के बिना X नहीं जोड़ सकते | नए supplier को पहले एक item चाहिए |
| Update | एक तथ्य कई rows में बदलो या खंडन | नया phone = हर item row edit |
| Deletion | delete करना असंबंधित data खोता है | आख़िरी item हटाओ, supplier खोओ |
Quiz
Meera एक supplier का phone number बदलती है, पर यह 30 item rows पर store है। वह 29 update करती है और एक छूट जाती है। कौन सी anomaly ने अभी उसे काटा?
- Update anomaly, redundant value अब rows में ख़ुद का खंडन करती है
- Insertion anomaly, उसने नया data जोड़ा
- Deletion anomaly, उसने data हटाया
- कोई anomaly नहीं, यह सामान्य database बर्ताव है
Show the answer
Update anomaly, redundant value अब rows में ख़ुद का खंडन करती है
Phone number 30 rows पर redundantly store है, तो इसे update करना मतलब सारे 30 बदलना; एक छूटना database को एक supplier के लिए दो अलग phone numbers कहते छोड़ देता है, एक update anomaly। जड़ कारण redundancy है। Normalization phone को एक Supplier table में एक बार store करता, तो एक edit इसे हर जगह ठीक कर देता। यह क्लासिक update-anomaly परिदृश्य है।
Think first
आकस्मिक मिटाव
Meera एक ख़ास supplier द्वारा कभी supply किया आख़िरी item delete करती है, बस पुराने stock की सफ़ाई। अचानक उसके पास कोई record नहीं कि यह supplier मौजूद भी है। इस anomaly का नाम बताइए, और समझाइए कि tables बाँटना इसे क्यों रोकेगा।
Show the answer
यह एक deletion anomaly है: एक item row हटाना साथ ही उस supplier के ब्योरों की इकलौती store की copy भी हटाता है, असंबंधित जानकारी एक side effect के रूप में खोई। अगर suppliers अपनी ख़ुद की table में रहते (एक foreign key से items से जुड़े), तो एक item delete करना सिर्फ item को छूता, supplier record अछूता बच जाता। entities को उनकी ख़ुद की tables में अलग करना ठीक वही है जो normalization करता है, और यह तीनों anomalies को गायब कर देता है।
Watch out
Marks कहाँ कटते हैं
तीन anomalies (insertion, update, deletion) को सटीक रूप से हर एक के अलग उदाहरण के साथ नाम न देना, यह exam का पसंदीदा ढाँचा है। यह भूलना कि redundancy तीनों का जड़ कारण है। और यह कहना कि normalization 'बस tables बाँटना' है, क्यों कहिए: redundancy और उसके ज़रिए anomalies हटाने को। अस्पष्ट जवाब marks खोते हैं; ठोस anomaly उदाहरण (जैसे Meera का supplier phone) उन्हें कमाते हैं।
Formula
Exam recipe: 'हम normalize क्यों करते हैं?'
इसे एक आकार में कहिए: normalization redundancy हटाता है ताकि तीन anomalies ख़त्म हों, insertion (Y के बिना X नहीं जोड़ सकते), update (हर जगह एक तथ्य बदलो या खंडन), deletion (असंबंधित data खोओ)। हर anomaly का एक ठोस उदाहरण दीजिए। फिर जोड़िए: यह एक table को keys से जुड़ी कई में decompose करके हासिल होता है। परिभाषा + तीन anomalies + उदाहरण + तरीका = पूरे marks, हर बार।
Theory
इलाज के चरण हैं
अब आप बीमारी को अपनी हड्डियों में महसूस करते हैं (Meera की तीन आफ़तें)। इलाज, normalization, चरणों में लगाया जाता है जिन्हें normal forms कहते हैं: 1NF, 2NF, 3NF, BCNF, हर एक एक ख़ास तरह की redundancy हटाता। वह बिलकुल अगला lesson है। keys और attributes के बारे में आपने जो सीखा वह आपको इस fix के लिए तैयार कर रहा था। आगे: normal forms, और वे नियम जो उन्हें चलाते हैं।
Summary
Key takeaways
- Normalization एक फूली table को अच्छे-design वाली में बाँटता है ताकि redundancy हटे।
- Redundancy (एक तथ्य को कई rows में दोहराना) तीन anomalies पैदा करती है।
- Insertion anomaly: दूसरे असंबंधित data के बिना data नहीं जोड़ सकते।
- Update anomaly: एक redundant तथ्य हर row में बदलना पड़ता है, वरना ख़ुद का खंडन करता है।
- Deletion anomaly: एक row delete करना असंबंधित जानकारी एक side effect के रूप में खोता है।
- इलाज keys से जुड़ी अलग tables में decomposition है।
- याद रखने का hook: हर diary page पर अपना पता फिर से मत लिखिए, हर तथ्य एक बार लिखिए।