क्या प्रत्येक संबंध जो 2NF
में है 3NF
दोषरहित शामिल होने और निर्भरता संरक्षण के साथ?
संपादित करें:
कार्यात्मक निर्भरता F
के सेट के साथ एक संबंध आर
है। आर
में 2NF
है, लेकिन 3NF
में नहीं है। क्या हम रिलायंस R
को छोटे संबंध में विघटित कर सकते हैं जो कि 3NF
में हैं और दोषरहित कम्पोस्टोन के साथ दोषरहित हैं? और यह हर बार किया जा सकता है?
संक्षेप में: हाँ - यह किया जा सकता है।
लंबा विवरण।
मान लें कि हमारे पास R
संबंध है जो कि x के बीच है - & gt; y
। मान लें कि R
2nF में नहीं है, नए संबंधों पी
और Q
चाहिए मौजूद है, जहां P : X - & gt; Z
और क्यू: जेड - & gt; वाई
और पी
, क्यू तुच्छ नहीं होना चाहिए । यहां
x
, y
, z
संबंधित कार्यात्मक संस्थाएं हैं (वे "कॉलम" सामान्य मामले में नहीं हैं, वे भी हो सकता है "स्तंभों का सेट" , यदि SQL तालिकाओं के संदर्भ में हो)।
हमें यह भी मान लेना चाहिए कि पी
और Q
के पास कोई संक्रमणीय उप-संबंध नहीं है (जैसे R
है) - अर्थात वे 3 एनएफ़ में हैं (अन्यथा यह कुछ भी बदलेगा, हम केवल गहराई से जायेंगे और तब तक दोहराएंगे जब तक उप-संबंध नहीं पाए जाते हैं, जिसमें कोई पारगमनशील उप-संबंध नहीं हैं)।
तो हमारे पास:
< प्री> आर (x) = y, पी (x) = z, = & gt; क्यू (पी (एक्स)) = वाई क्यू (जेड) = y
यह संवादात्मक संबंध की परिभाषा से है इसलिए, R
को दो संबंधों में विभाजित किया जाएगा P
और R
(क्योंकि केवल P
और Q < / कोड> संबंध स्थापित करने के लिए पर्याप्त हैं
x -> y
, इसलिए आर
अनावश्यक है और इसे पी
और Q से बदला जा सकता है
उन दो रिश्तों में शामिल होने के साथ)। हमारा पी
और Q
3 एनएफ में है, इस प्रकार, हमें R
3 एनएफ़ संबंधों में रूपांतरित कर दिया गया है। वास्तव में, यह काम है जो 2NF -> 3NF (यानी सभी संक्रमणीय संबंधों को इस तरह से ढूंढें और हल करने) के सामान्य होने पर किया जाना चाहिए।
Comments
Post a Comment