फलनात्मक निर्भरताएँ, सामान्य रूप व अखंडता प्रतिबंध
पहले संवर्त, फिर कुंजियाँ, तत्पश्चात् शेष सब
लें R(A, B, C, D, E) सहित F = {A → B, BC → E, ED → A}। हाथ से संवर्त निकालें और कुंजी-संरचना निकल आती है। A⁺ = AB और रुक जाता है, अतः केवल A कुंजी से बहुत दूर है। CD⁺ = CD — कोई निर्भरता नहीं चलती, क्योंकि आपके पास C के साथ जोड़ने हेतु न A है न B। किंतु ACD⁺: A से B मिलता है, अतः आप ABCD रखते हैं; अब BC से E मिलता है, अतः ABCDE। वह सम्पूर्ण संबंध है, अतः ACD अधिकुंजी है, और चूँकि CD⁺ = CD तथा AC⁺ = ABCE तथा AD⁺ = ABD, उसका कोई उचित उपसमुच्चय अधिकुंजी नहीं — ACD अभ्यर्थी कुंजी है। वही चाल BCD⁺ = ABCDE (BC से E, ED से A) तथा CDE⁺ = ABCDE (ED से A, A से B) देती है, अतः BCD व CDE भी अभ्यर्थी कुंजियाँ हैं। तीन अभ्यर्थी कुंजियाँ, और वे मिलकर संबंध का प्रत्येक गुण प्रयोग करती हैं — और वह परिणामों वाला तथ्य है।
| गुण-समुच्चय X | X⁺ | निर्णय |
|---|---|---|
| A | AB | अधिकुंजी नहीं |
| CD | CD | कुछ भी नहीं चलता |
| AC | ABCE | D अनुपस्थित — अधिकुंजी नहीं |
| ACD | ABCDE | अभ्यर्थी कुंजी |
| BCD | ABCDE | अभ्यर्थी कुंजी |
| CDE | ABCDE | अभ्यर्थी कुंजी |
सीढ़ी, तथा वह पायदान जहाँ प्रमुख गुण आपको बचाते हैं
| रूप | अपेक्षा | छूट का उपवाक्य |
|---|---|---|
| 1NF | प्रत्येक गुण एकल अविभाज्य मान रखता है | कोई नहीं — बहुमानी गुण को अपनी सारणी चाहिए |
| 2NF | कोई अप्रमुख गुण किसी अभ्यर्थी कुंजी के उचित भाग पर निर्भर नहीं | जब प्रत्येक अभ्यर्थी कुंजी एकल गुण हो तब स्वतः |
| 3NF | X अधिकुंजी हो या Y − X का प्रत्येक गुण प्रमुख हो | प्रमुख छूट — यही वह पायदान है जो प्रयुक्त होता है |
| BCNF | X अधिकुंजी है। और कुछ नहीं। | कोई नहीं — BCNF ठीक 3NF की छूट हटाता है |
A⁺ = AB, अतः नहीं। BC? BC⁺ = BCE, नहीं। ED? ED⁺ = ABDE, नहीं। तीनों निर्भरताओं में प्रत्येक BCNF का उल्लंघन करती है। अब 3NF जाँचें, जो उल्लंघन की छूट तब देता है जब निर्धारित गुण प्रमुख हो। अभ्यर्थी कुंजियाँ ACD, BCD व CDE हैं, और वे मिलकर A, B, C, D व E रखती हैं — अतः प्रत्येक गुण प्रमुख है। A → B, B निर्धारित करता है, प्रमुख। BC → E, E निर्धारित करता है, प्रमुख। ED → A, A निर्धारित करता है, प्रमुख। संबंध 3NF में है। यह विषय का सर्वाधिक उपयोगी संक्षिप्त मार्ग है: यदि प्रत्येक गुण प्रमुख हो, तो 3NF स्वतः टिकता है, निर्भरताएँ कैसी भी दिखें, क्योंकि 3NF की छूट कभी विफल नहीं हो सकती। अतः ईमानदार प्रक्रिया है अभ्यर्थी कुंजियाँ खोजें, उनका सम्मिलन लें, और यदि वह संबंध को ढके तो 3NF की चिंता छोड़ें व सीधे BCNF जाँचने जाएँ। यह भी समझाता है कि इतने परीक्षा-संबंध ठीक 3NF-पर-BCNF-नहीं पर क्यों बैठते हैं: अतिव्यापी अभ्यर्थी कुंजियों वाला संबंध प्रायः वही होता है।| संबंध व निर्भरताएँ | अभ्यर्थी कुंजियाँ | उच्चतम रूप | उसे क्या तय करता है |
|---|---|---|---|
| R(ABCD), A→B, B→C, C→D, D→A | A, B, C, D | BCNF | प्रत्येक वाम पक्ष सम्पूर्ण अभ्यर्थी कुंजी है |
| R(ABC), AB→C, C→A | AB, BC | 3NF | C→A, BCNF तोड़ता है, पर A प्रमुख है, अतः 3NF बचता है |
| R(ABCDE), AB→C, C→D, D→E | केवल AB | 2NF | C→D व D→E संक्रमणीय हैं; D व E अप्रमुख |
अलोप्य संयोजन, निर्भरता-संरक्षण, तथा आप कौन-सा छोड़ते हैं
R का R1 व R2 में विघटन अलोप्य है जब उन्हें पुनः संयोजित करने पर ठीक R मिले — कोई कूट टपल नहीं। द्वि-मार्गी विघटन की कसौटी एक पंक्ति है: X को R1 व R2 के साझा गुण मानें; विघटन अलोप्य है यदि और केवल यदि X, R1 की या R2 की अधिकुंजी हो, तुल्यतः यदि X⁺ किसी एक अर्ध को समाविष्ट करे। R(ABCDE) पर F = {A → B, BC → E, ED → A} सहित: (AB, ACDE) में विघटन A साझा करता है, और A⁺ = AB जो AB को ढकता है, अतः वह अलोप्य है। (ABC, CDE) में विघटन C साझा करता है, और C⁺ = C, जो न ABC न CDE को ढकता है, अतः वह लोप्य है — उन दोनों को पुनः जोड़ना ऐसे टपल बनाता है जो R में कभी नहीं थे। और (AB, CDE) कुछ साझा नहीं करता, जो सदा लोप्य है, क्योंकि संयोजन कार्तीय गुणन में अपभ्रष्ट हो जाता है।
AB → C व C → B। अभ्यर्थी कुंजियाँ AB व AC हैं, अतः B व C प्रमुख हैं और संबंध 3NF में है; C → B, BCNF का उल्लंघन करता है क्योंकि C⁺ = CB सब कुछ नहीं। किसी भी BCNF विघटन को B को C से या A से अलग करना पड़ता है, और आप जैसे भी काटें, AB → C दो खंडों में फैल जाता है और स्थानीय रूप से जाँचा नहीं जा सकता। अतः BCNF सरलतः “3NF से श्रेष्ठ” नहीं: वह अतिरेक अधिक पूर्णता से हटाता है और आपसे लागू करने योग्य प्रतिबंधों की लागत ले सकता है, और इसीलिए वास्तविक स्कीमा प्रायः जानबूझकर 3NF पर रुक जाते हैं।अखंडता प्रतिबंध: आँकड़ाकोश क्या संचित करने से मना करता है
| प्रतिबंध | वह क्या मना करता है |
|---|---|
| प्रांत अखंडता | स्तंभ के घोषित प्रकार या CHECK शर्त के बाहर का मान |
| सत्ता अखंडता | प्राथमिक कुंजी के किसी भी भाग में शून्य, तथा द्विरुक्त कुंजी-मान |
| संदर्भात्मक अखंडता | संदर्भित सारणी में मेल खाती पंक्ति के बिना गैर-शून्य विदेशी कुंजी |
कुंजी (UNIQUE) | द्विरुक्त मान — किंतु प्राथमिक कुंजी के विपरीत शून्य मान अनुमत हैं |
mgr में शून्य रखता है, और आँकड़ाकोश संतुष्ट है। और यह भी, संयोगवश नहीं, वही मार्ग है जिससे पिछले अध्याय का NOT IN जाल वास्तविक स्कीमा में आता है। दो और भेद परीक्षित होते हैं। प्राथमिक कुंजी किसी घटक में शून्य नहीं हो सकती और प्रति सारणी अधिकतम एक होती है; UNIQUE प्रतिबंध द्विरुक्तियाँ मना करता है पर शून्य अनुमत करता है और कई बार घोषित हो सकता है। और जब संदर्भित पंक्ति विलोपित हो, तो क्रिया घोषित होती है, अनुमानित नहीं: ON DELETE CASCADE आश्रित पंक्तियाँ हटाता है, ON DELETE SET NULL विदेशी कुंजी रिक्त करता है, और मूलभूत NO ACTION (या RESTRICT) विलोपन से मना कर देता है — अतः जनक पंक्ति विलोपित करने का परिणाम स्कीमा का निर्णय है जिसे प्रश्न को उत्तर पाने से पूर्व बताना चाहिए।मुख्य बिंदु
- पहले संवर्त निकालें, उनसे अभ्यर्थी कुंजियाँ पढ़ें, और निर्भरताएँ केवल उसके पश्चात् जाँचें।
- A→B, BC→E, ED→A सहित R(ABCDE) पर अभ्यर्थी कुंजियाँ ACD, BCD व CDE हैं — तीन।
- यदि प्रत्येक गुण प्रमुख हो, तो 3NF स्वतः टिकता है, निर्भरताएँ कैसी भी दिखें।
- 2NF आंशिक निर्भरता पर विफल; 3NF संक्रमणीय पर। पायदान पृथक्-पृथक् जाँचें।
- BCNF माँगता है प्रत्येक वाम पक्ष अधिकुंजी हो और उसमें कोई छूट नहीं।
- द्वि-मार्गी विघटन अलोप्य है यदि और केवल यदि साझा गुण किसी एक अर्ध की अधिकुंजी हों।
- अलोप्य निर्भरता-संरक्षी 3NF विघटन सदा विद्यमान है; BCNF हेतु नहीं भी।
- अभ्यर्थी कुंजी का प्रत्येक अधिसमुच्चय अधिकुंजी है — गिनें, खोजें नहीं।
- शून्य विदेशी कुंजी संदर्भात्मक अखंडता संतुष्ट करती है; प्राथमिक कुंजी में शून्य कभी नहीं।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
फलनात्मक निर्भरताओं F = {A → B, BC → E, ED → A} सहित संबंध R(A, B, C, D, E) हेतु अभ्यर्थी कुंजियों की संख्या ______ है
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 3
3 — ACD, BCD व CDE। उससे आरंभ करें जो प्रत्येक कुंजी में होना ही चाहिए: C व D किसी दक्षिण पक्ष पर नहीं आते, अतः उन्हें कुछ निर्धारित नहीं करता और प्रत्येक अभ्यर्थी कुंजी में दोनों होने चाहिए। औरCD⁺ = CD, अतः केवल CD पर्याप्त नहीं। अब CD तथा एक और गुण जाँचें।ACD⁺: A से B, फिर BC से E, ABCDE तक ✓।BCD⁺: BC से E, फिर ED से A, ABCDE तक ✓।CDE⁺: ED से A, फिर A से B, ABCDE तक ✓। तीनों चलते हैं, किसी का कोई उचित उपसमुच्चय नहीं चलता (चूँकि केवल CD विफल है), अतः तीनों अभ्यर्थी कुंजियाँ हैं और अन्य कोई नहीं — चौथी हेतु CD में जोड़ने योग्य चौथा गुण चाहिए होता, और केवल A, B, E विद्यमान हैं। दो उपयोगी उपोत्पाद: तीनों कुंजियाँ मिलकर प्रत्येक गुण रखती हैं, अतः प्रत्येक गुण प्रमुख है और संबंध 3NF में है; और अधिकुंजी-गिनती 7 है, वे तीन तथा ABCD, ACDE, BCDE व ABCDE।R(A, B, C, D, E) में F = {A → B, BC → E, ED → A} है तथा अभ्यर्थी कुंजियाँ ACD, BCD व CDE। R जो उच्चतम सामान्य रूप संतुष्ट करता है वह है:
उत्तर देखें
उत्तर: B — 3NF
3NF, और BCNF नहीं। पहले BCNF जाँचें, क्योंकि वह कठोरतर शर्त है: उसे प्रत्येक वाम पक्ष अधिकुंजी चाहिए।A⁺ = AB,BC⁺ = BCE,ED⁺ = ABDE— तीनों में कोई अधिकुंजी नहीं, अतः तीनों निर्भरताएँ BCNF का उल्लंघन करती हैं और विकल्प C बाहर है। अब 3NF, जो गैर-अधिकुंजी वाम पक्ष की छूट इस शर्त पर देता है कि वह जो गुण निर्धारित करे वे प्रमुख हों। तीनों अभ्यर्थी कुंजियाँ ACD, BCD व CDE मिलकर A, B, C, D व E रखती हैं, अतः R का प्रत्येक गुण प्रमुख है। A → B प्रमुख गुण निर्धारित करता है, BC → E वैसे ही, ED → A वैसे ही, अतः 3NF टिकता है — और वह ऐसे कारण से टिकता है जो विफल नहीं हो सकता, और वही ले जाने योग्य संक्षिप्त मार्ग है: जैसे ही अभ्यर्थी कुंजियों का सम्मिलन संबंध को ढके, 3NF स्वतः है। विकल्प A कम आँकता है: 2NF हेतु आंशिक निर्भरता सर्वाधिक बुरी समस्या होनी चाहिए, और यहाँ ऐसी कोई निर्भरता नहीं जिसका वाम पक्ष किसी अभ्यर्थी कुंजी का उचित उपसमुच्चय हो। विकल्प D यह मान लेने की प्रतिवर्त क्रिया है कि तीन BCNF उल्लंघनों का अर्थ निम्न रूप होना चाहिए।R(A, B, C, D, E) में F = {AB → C, C → D, D → E} है तथा AB उसकी एकमात्र अभ्यर्थी कुंजी। R जो उच्चतम सामान्य रूप संतुष्ट करता है वह है:
उत्तर देखें
उत्तर: B — 2NF
ठीक 2NF। AB एकमात्र अभ्यर्थी कुंजी होने से प्रमुख गुण A व B हैं, अतः C, D व E सब अप्रमुख हैं। 2NF आंशिक निर्भरताओं के विषय में पूछता है — किसी अभ्यर्थी कुंजी के उचित भाग से निर्धारित अप्रमुख गुण। यहाँ न केवल A न केवल B कुछ निर्धारित करता है, अतः कोई आंशिक निर्भरता नहीं और 2NF टिकता है। 3NF संक्रमणीय निर्भरताओं के विषय में पूछता है — ऐसी वस्तु से निर्धारित अप्रमुख गुण जो अधिकुंजी न हो। दो हैं:C → DवD → E, जहाँC⁺ = CDEतथाD⁺ = DE, कोई अधिकुंजी नहीं, और D व E अप्रमुख। अतः 3NF विफल होता है, और उसके साथ BCNF भी। विकल्प A जिस भूल का प्रतिनिधित्व करता है वह “उल्लंघन हैं” से सीधे निम्नतम पायदान पर कूदना है; सीढ़ी एक-एक चरण चढ़नी पड़ती है, और संबंध 2NF संतुष्ट करते हुए 3NF में विफल हो सकता है, ठीक यहाँ की भाँति। पिछले प्रश्न से उपयोगी वैषम्य ध्यान दें: वहाँ गैर-अधिकुंजी वाम पक्ष हानिरहित थे क्योंकि प्रत्येक गुण प्रमुख था; यहाँ उल्लंघन का वही आकार 3NF हेतु घातक है क्योंकि D व E प्रमुख नहीं।R(A, B, C, D, E) में F = {A → B, BC → E, ED → A} है। कौन-सा विघटन अलोप्य है?
उत्तर देखें
उत्तर: B — (AB, ACDE)
(AB, ACDE)। द्वि-मार्गी कसौटी लगाएँ: विघटन अलोप्य है यदि और केवल यदि साझा गुण किसी एक अर्ध की अधिकुंजी बनाएँ। यहाँ अर्ध A साझा करते हैं, औरA⁺ = AB, जो सम्पूर्ण AB रखता है — अतः A खंड AB की कुंजी है और संयोजन R को ठीक पुनर्रचित करता है। विकल्प A केवल C साझा करता है, औरC⁺ = C: C कुछ निर्धारित नहीं करता, अतः वह न ABC की न CDE की कुंजी है, और पुनःसंयोजन ऐसे टपल गढ़ता है जो R में कभी नहीं थे। विकल्प C कुछ भी साझा नहीं करता, जो सदा लोप्य है — साझा गुण के बिना प्राकृतिक संयोजन कार्तीय गुणन में अपभ्रष्ट हो जाता है। विकल्प D E साझा करता है, औरE⁺ = E, अतः वह उसी कारण से विफल है जिससे A। बनाने योग्य आदत: साझा गुण पहचानें, उनका संवर्त लें, और उसे प्रत्येक अर्ध के सामने जाँचें। दो साझा गुण एक से श्रेष्ठ नहीं; महत्व इसका है कि संवर्त किसी खंड को निगलता है क्या।सामान्य रूपों में विघटन के विषय में निम्नलिखित में से कौन-से सत्य हैं?
उत्तर देखें
उत्तर: A — 3NF में अलोप्य, निर्भरता-संरक्षी विघटन सदा विद्यमान है; B — BCNF में अलोप्य विघटन सदा विद्यमान है; D — BCNF में प्रत्येक संबंध 3NF में है
A, B व D। A व B दो अस्तित्व-प्रमेय हैं, और उनके बीच की असममिति ही परीक्षणीय विषय है। C असत्य है, और मानक साक्षी है R(A, B, C) सहितAB → CवC → B: उसकी अभ्यर्थी कुंजियाँ AB व AC हैं, अतः B व C प्रमुख हैं और संबंध पहले से 3NF में है, जबकिC → B, BCNF का उल्लंघन करता है क्योंकिC⁺ = CBसम्पूर्ण संबंध नहीं। किसी भी BCNF विघटन को B को A से पृथक् करना पड़ता है, और तबAB → Cदो खंडों में फैलता है और बिना संयोजन जाँचा नहीं जा सकता — अतः आप जैसे भी काटें निर्भरता-संरक्षण खो जाता है। D परिभाषाओं से तत्काल है: BCNF माँगता है प्रत्येक वाम पक्ष अधिकुंजी हो, जो 3NF का प्रथम विकल्प है, अतः BCNF कठोरतः बलवत्तर शर्त है और 3NF का निगमन करती है। A को C के सामने पढ़ने का व्यावहारिक अर्थ यही है कि वास्तविक स्कीमा प्रायः जानबूझकर 3NF पर रुकते हैं: BCNF अधिक अतिरेक हटाता है पर आपसे ऐसे प्रतिबंध की लागत ले सकता है जिसे आँकड़ाकोश अन्यथा सस्ते में लागू कर पाता।R(A, B, C, D) में F = {A → B, B → C, C → D, D → A} है। R की अधिकुंजियों की संख्या ______ है
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 15
15। निर्भरताएँ चक्र बनाती हैं, अतः प्रत्येक एकल गुण शेष सब तक पहुँचता है:A⁺ = ABCD(A से B, B से C, C से D), और सममिति सेB⁺ = C⁺ = D⁺ = ABCD। अतः चारों एकल गुण अभ्यर्थी कुंजियाँ हैं। अधिकुंजी कोई भी ऐसा समुच्चय है जिसका संवर्त सब कुछ हो, और चूँकि {A, B, C, D} का प्रत्येक अरिक्त उपसमुच्चय कम से कम एक एकल गुण रखता है, प्रत्येक अरिक्त उपसमुच्चय अधिकुंजी है: 2⁴ − 1 = 15। −1 रिक्त समुच्चय है, जिसका संवर्त रिक्त है। इससे दो बातें लेने योग्य हैं। प्रथम, संबंध BCNF में है: प्रत्येक वाम पक्ष सम्पूर्ण अभ्यर्थी कुंजी है, अतः उल्लंघन करने योग्य कुछ नहीं। द्वितीय, गिनती की विधि केवल तब सामान्यीकृत होती है जब अभ्यर्थी कुंजियाँ असंयुक्त या एकल हों — अतिव्यापी बहु-गुण कुंजियों सहित समावेश–अपवर्जन चाहिए, और ACD, BCD, CDE कुंजियों सहित R(ABCDE) हेतु उत्तर 7 है, दो की कोई स्वच्छ घात नहीं।R(A, B, C) में F = {AB → C, C → A} है। कौन-सा कथन सही है?
उत्तर देखें
उत्तर: B — R, 3NF में है किंतु BCNF में नहीं
3NF में किंतु BCNF में नहीं — उस अंतराल का प्रामाणिक उदाहरण। पहले कुंजियाँ:AB⁺ = ABC✓ तथाBC⁺ = ABC(C से A) ✓, जबकिA⁺ = A,B⁺ = B,C⁺ = CA, अतः अभ्यर्थी कुंजियाँ AB व BC हैं, और प्रत्येक गुण उनमें किसी एक में आता है — A, B, C सब प्रमुख हैं। अब BCNF:C → AमेंC⁺ = CAहै, सम्पूर्ण संबंध नहीं, अतः C अधिकुंजी नहीं और BCNF विफल है। अब 3NF: C जो गुण निर्धारित करता है वह A है, जो प्रमुख है, अतः छूट लागू होती है और 3NF टिकता है। विकल्प C हेतु कुंजी के भाग से निर्धारित अप्रमुख गुण चाहिए; यहाँ अप्रमुख गुण ही कोई नहीं, अतः 2NF या 3NF का उल्लंघन कुछ नहीं कर सकता। यह संबंध वह मानक साक्षी भी है कि निर्भरता-संरक्षी BCNF विघटन विद्यमान होना आवश्यक नहीं: BCNF संतुष्ट करने हेतु विभाजन A को B से पृथक् करता है, और तबAB → Cदो खंडों में फैलता है और स्थानीय रूप से लागू नहीं हो सकता।सारणी
emp(eid, mgr)मेंmgrकोemp(eid)का संदर्भ देती विदेशी कुंजी घोषित किया गया है।mgrको NULL रखकर एक पंक्ति डाली जाती है। क्या होता है?उत्तर देखें
उत्तर: B — डालना सफल होता है — शून्य विदेशी कुंजी संदर्भात्मक अखंडता संतुष्ट करती है
डालना सफल होता है। संदर्भात्मक अखंडता अपेक्षा करती है कि विदेशी कुंजी का मान किसी विद्यमान प्राथमिक कुंजी से मेल खाए, और शून्य के पास मेल कराने योग्य मान नहीं — प्रतिबंध गैर-शून्य मानों पर कहा गया है और रिक्ततः संतुष्ट है। ER मानचित्रण आंशिक सहभागिता का निरूपण ठीक उसी प्रकार करता है: प्रबंधक-रहित कर्मचारी शून्य रखता है, और यह छिद्र के बजाय अभिप्रेत अभिकल्प है। प्राथमिक कुंजी से वैषम्य करें, जो किसी घटक में शून्य नहीं हो सकती — वह सत्ता अखंडता है, भिन्न प्रतिबंध, और दोनों को मिला देना ही विकल्प A को आकर्षक बनाता है। विकल्प D ऐसा कुछ वर्णित करता है जो कोई SQL आँकड़ाकोश नहीं करता; प्रतिबंध अस्वीकार या स्वीकार करते हैं, वे चुपचाप मान प्रतिस्थापित नहीं करते। पिछले अध्याय से जोड़ने योग्य: यही वैध शून्य वह मार्ग है जिससे वास्तविक स्कीमाNOT INसंकट प्राप्त करता है, क्योंकि तबeid NOT IN (SELECT mgr FROM emp)कोई पंक्ति नहीं लौटाएगी।