1 एनएफ एक पंक्ति में सूचियों को दोहराने पर प्रतिबंध लगाता है। आपका डिजाइन इस का उल्लंघन करती है, और इसलिए होगा निम्नलिखित डिजाइन:
Student Phones
'John D' '555-5555, 666-6666, 777-7777'
'Sally S' '111-1111, 222-2222'
निम्नलिखित डिजाइन 2NF का उल्लंघन होगा, क्योंकि केवल प्राथमिक कुंजी Name, Phone
है, लेकिन Address
विशेषता Phone
पर निर्भर नहीं करता:
Name Phone Address
'John D' '555-5555' '1 Square Village'
'John D' '666-6666' '1 Square Village'
'John D' '777-7777' '1 Square Village'
'Sally S' '111-1111' '999 Flash City'
'Sally S' '222-2222' '999 Flash City'
अगले डिजाइन 3NF का उल्लंघन होगा, क्योंकि AreaName नाम पर निर्भर नहीं करता है, लेकिन केवल क्षेत्र पर:
Name Area Phone AreaName
'John D' '555' '5555' '111name'
'John D' '666' '6666' '666name'
'John D' '777' '7777' '777name'
'Sally S' '111' '1111' '111name'
'Sally S' '222' '2222' '222name'
भले ही आपका डिज़ाइन 1 एनएफ का उल्लंघन करता है, यह एक उत्कृष्ट विकल्प है। PhoneNumber
तालिका जोड़ने की जटिलता शायद ही कभी उचित है।
इस बारे में सोचें कि ग्राहक के लिए एक अद्यतन कितना मुश्किल हो जाता है यदि आप 1 एनएफ के अनुरूप हैं। संख्या एक अलग मेज में होगी। तो अगर कोई फ़ोन नंबरों की एक अद्यतन सूची के साथ एक फॉर्म सबमिट करता है, तो आप डेटाबेस कैसे बदलेंगे? सबसे पहले आपको संख्याओं की मौजूदा सूची पुनर्प्राप्त करनी होगी। फिर आपको उन्हें सबमिट की गई सूची में तुलना करना होगा। फिर आपको अंतर के आधार पर पंक्तियां हटाना या डालना होगा। एक जटिल समाधान का एक बिल्ली।
यदि आप अपने समाधान से चिपके रहते हैं, तो आप केवल तीन कॉलम अपडेट कर सकते हैं। बचाया समय वास्तविक सुविधाओं पर खर्च किया जा सकता है! या यहां तक कि स्टैक ओवरफ़्लो पर लंबे उत्तरों को लिखना।
वहाँ, 1NF में एक उत्कृष्ट लेख @ http://en.wikipedia.org/wiki/First_normal_form#Repeating_groups –