database design - Can every 2NF relation be made into 3NF relation? -


क्या प्रत्येक संबंध जो 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