2013-02-27 283 views
20

में एक संबंध को विघटित करते हुए मुझे बॉस-कोडड सामान्य फॉर्म में संबंध होने पर और बीसीएनएफ की जानकारी को विघटित करने के तरीके में स्थापित होने में समस्या हो रही है। > बी, सी - -> डीबीसीएनएफ

मैं इसे कैसे सड़ते के बारे में जाते हो एक:

आर (ए, सी, बी, डी, ई) कार्यात्मक निर्भरता के साथ: इस उदाहरण को देखते हुए?

चरणों मैं लिया है

हैं:

A+ = AB 
C+ = CD 
R1 = A+ = **AB** 
R2 = ACDE (since elements of C+ still exist, continue decomposing) 
R3 = C+ = **CD** 

R4 = ऐस (कोई एफडी बंद इस संबंध में रहते हैं)

तो अब मुझे पता है कि ऐस पूरे संबंध रचना करेंगे, लेकिन अपघटन का जवाब है: एबी, सीडी, एसीई।

मुझे लगता है कि मैं बीसीएनएफ फॉर्म में एक संबंध को ठीक तरह से विघटित करने के तरीके से संघर्ष कर रहा हूं और यह कहने के लिए कि आप कब किया जाए। वास्तव में इन समस्याओं को हल करते समय मुझे अपनी विचार प्रक्रिया के माध्यम से चलने वाले किसी भी व्यक्ति की सराहना करेंगे। धन्यवाद!

+0

क्या आपने साइडबार में बीसीएनएफ के बारे में उन सभी प्रश्नों को पढ़ा था? –

+0

मैंने एक उदाहरण के माध्यम से पढ़ा जो अपघटन के साथ मदद करता है। मुझे लगता है कि मैं समझता हूं कि हिस्सा ठीक है, लेकिन मैं अभी भी थोड़ा उलझन में हूं जब आप पूरी तरह से विघटन कर रहे हैं। क्या यह तब होता है जब आपके संबंधों में आपके कार्यात्मक निर्भरताओं में से किसी एक को बंद करने के भीतर सभी विशेषताओं को शामिल नहीं किया जाता है? – raphnguyen

+0

बीसीएनएफ में एक रिश्ता है जब प्रत्येक कार्यात्मक निर्भरता में प्रत्येक "तीर" उम्मीदवार कुंजी से "तीर" होता है। –

उत्तर

83

हालांकि सवाल पुराना है, अन्य प्रश्न/उत्तर बीसीएनएफ को संबंधों को निर्धारित करने और विघटन करने पर एक बहुत स्पष्ट कदम-दर-चरण सामान्य उत्तर प्रदान नहीं करते हैं।

1. निर्धारित BCNF:
संबंध आर BCNF में होने के लिए, सभी कार्यात्मक निर्भरता (एफडी) में अनुसंधान में पकड़ संपत्ति है कि निर्धारकों एक्स आर यानी के सभी superkeys हैं को संतुष्ट करने की जरूरत है, तो एक्स > वाई आर में है, तो एक्स बीसीएनएफ में होने के लिए आर का एक सुपरकी होना चाहिए।

आपके मामले में, यह दिखाया जा सकता है कि केवल उम्मीदवार कुंजी (न्यूनतम सुपरकी) एसीई है। इस प्रकार दोनों एफडी: A-> बी और सी> डी BCNF उल्लंघन कर रहे हैं के रूप में दोनों ए और सी superkeys या आर

2. विघटित आर BCNF रूप में नहीं कर रहे हैं:
तो आर BCNF में नहीं है , हम बीसीएनएफ में संबंध एस के एक सेट में आर विघटित करते हैं।

S = {ABCDE}  // Intialization S = {R} 
S = {ACDE, AB} // Pick FD: A->B which violates BCNF 
S = {ACE, AB, CD} // Pick FD: C->D which violates BCNF 
// Return S as all relations are in BCNF 

इस प्रकार आर (ए, बी, सी, डी, ई) है:
यह एक बहुत ही सरल एल्गोरिथ्म के साथ पूरा किया जा सकता है: इस प्रकार

Initialize S = {R} 
While S has a relation R' that is not in BCNF do: 
    Pick a FD: X->Y that holds in R' and violates BCNF 
    Add the relation XY to S 
    Update R' = R'-Y 
Return S 

आपके मामले में पुनरावृत्ति कदम हैं संबंधों के एक सेट में विघटित: आर 1 (ए, सी, ई), आर 2 (ए, बी) और आर 3 (सी, डी) जो बीसीएनएफ को संतुष्ट करते हैं।

ध्यान दें कि इस मामले में, कार्यात्मक निर्भरता संरक्षित है लेकिन बीसीएनएफ को सामान्यीकरण इसकी गारंटी नहीं देता है।

मुझे आशा है कि इस मदद करता है।

+3

चरण पुनरावृत्ति द्वारा आपका स्पष्टीकरण और चरण सही था। धन्यवाद –

+0

याद रखें कि आपको 'आर' के साथ कार्यात्मक निर्भरताओं को स्टोर करने की आवश्यकता है क्योंकि आपको प्रत्येक पुनरावृत्ति में एक tuple '(R ', Σ') का विश्लेषण करने की आवश्यकता है। तो 'एस' सामान्य रूप से इस तरह दिखना चाहिए: 'एस = [(आर_1, Σ_1); (आर_2, Σ_2); ...; (आर_एन, Σ_n)} '। मैं इस तरह 'आर' = एक्स (आर '- वाई) '' आर 'को अद्यतन करने की भी सिफारिश करता हूं। – Pengxer

1

1NF -> 2NF -> 3NF -> BCNF

दिया एफडी के अनुसार सेट "एस" रूपों कुंजी। स्पष्ट रूप से आर (ए, बी, सी, डी, ई) 2 एनएफ में नहीं है। 2 एनएफ अपघटन आर 1 (ए, बी), आर 2 (सी, डी) और आर 3 (ए, सी, ई) देता है। यह अपघटन विघटन संबंध 3 एनएफ में और बीसीएनएफ में भी हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^