Normalization :
Normalization डेटाबेस में डेटा के आयोजन की एक प्रक्रिया है जो डेटारिडंडेंसी insertion विसंगति (anomaly), update विसंगति एवं deletion विसंगति को दूर करने के लिए काम करता है। इस प्रक्रिया में हम एक दिए गए रिलेशन स्कीमा की जाँच कुछ Normal forms के विरुद्ध करते हैं यह पता करने कि यह किसी normal form को संतुष्ट करता है या नहीं। यदि एक रिलेशन स्कीमा किसी normal form को संतुष्ट नहीं करता है, तो फिर हम इसे छोटे स्कीमा में विघटित करते हैं।
Normalization मुख्य रूप से दो उद्देश्य के लिए उपयोग किया जाता है,
- अनावश्यक (अनुपयोगी) डेटा को नष्ट करने के लिए।
- यह सुनिश्चित करने के लिए की डेटा dependencies का मतलब है अर्थात् डेटा संग्रहीत तार्किक है।
Normal forms: विभिन्न Normal forms हैं।
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- BCNF
First Normal Form (1NF):
यदि प्रत्येक फील्ड केवल Atomic मान रखता है (कोई सूचियाँ नहीं और न ही सेट) तो रिलेशन First Normal Form (1NF) में है।
उदाहरणः
चित्र में नीचे दी गई Student table 1NF में नहीं है,

Second normal form: Second normal form के अनुसार किसी भी स्तंभ की primary key पर partial dependency नहीं होनी चाहिए। इसका मतलब है कि किसी table के लिए जिसकी primary key है, table का हर non prime attribute, primary key attribute पर पूरी तरह functionally dependent होना चाहिए। यदि कोई भी स्तंभ केवल primary key के एक भाग पर निर्भर करता है, तो table Second normal form में विफल है।
StudentReads Subject (Roll_no, subjected, Sname, address, SubjectName)
इस student और subject रिलेशन में primary key attribute Roll_no और subjectId है। नियम के अनुसार non key attributes sname और subjectName दोनों पर निर्भर होना चाहिए लेकिन हम पाते हैं कि Sname को Roll no द्वारा और , subjectName को Subjectld द्वारा स्वतंत्र रूप से पहचाना जा सकता है। यह partial dependency कहा जाता है, जिसकी Second normal form में अनुमति नहीं है।
हमने रिलेशन को दो रिलेशन में तोड़ दिया है। ताकि वहाँ कोई partial dependency मौजूद न हो।
Student (Roll_no, Sname, address)
Subject (SubjectId, Subject Name)
Third Normal Form (3NF)
कोई रिलेशन स्कीमा 3NF में है या नहीं यह चैक करने के लिए हम उस स्कीमा की प्रत्येक FD के लिए निम्न शर्तों को चैक करते हैं। अगर किसी FD के लिए निम्न शर्तं फेल होती हैं तो वह स्कीमा 3NF में नहीं होगा।
शर्तेः
- अगर कोई FD ट्राइवल (trivial) है अर्थात् β →A में (A ε β), है तो या
- अगर किसी FD के बाँयी तरफ के ऐट्रीब्यूटस् उस स्कीमा की key है या
- अगर किसी FD के दाँयी तरफ के ऐट्रीब्यूटस् रिलेशन स्कीमा की key का पार्ट है
BCNF
कोई रिलेशन स्कीमा 3NF में है या नहीं यह चैक करने के लिए हम उस स्कीमा की प्रत्येक FD के लिए निम्न शर्तों को चैक करते हैं। अगर किसी FD के लिए निम्न शर्ते फेल होती हैं तो वह स्कीमा 3NF में नहीं होगा।
शर्तेः
- अगर कोई FD ट्राइवल (trivial) है अर्थात् β→A में (A ε β), है तो या
- अगर किसी FD के बाँयी तरफ के ऐट्रीब्यूटस् उस स्कीमा की key है या
- यदि कोई रिलेशन R, BCNF में है तो फिर यह 3NF में भी हो जाएगा। तात्पर्य BCNF implies 3NF but 3NF cannot implies BCNF.