DBMS में, Normalization एक प्रक्रिया है जिसका उपयोग Database को Organize और Structured करने के लिए किया जाता है। यह प्रक्रिया Redundancy को कम करती है और Data Integrity सुनिश्चित करती है।
दूसरे शब्दों में कहें तो, “Normalization एक प्रक्रिया है जिसमें हम database के tables और columns को इस तरह structure करते हैं कि: –
- Data redundancy कम हो (एक ही डेटा बार-बार store न हो)।
- Data integrity maintain रहे (डेटा accurate और consistent रहे)।
- Database की performance बेहतर हो।
Normalization का मुख्य उद्देश्य data को database में प्रभावी ढंग से स्टोर और मैनेज करना होता है।
सामान्यतया, Normalization दो step की process है जो निम्न है:-
पहला Step:- पहले step में, यह रिलेशनल टेबल में से redundant data (वह डेटा जो एक से अधिक बार स्टोर हुआ हो) को हटाता है।
दूसरा Step:- दूसरे step में, यह सुनिश्चित करता है कि table में केवल उससे सम्बंधित डेटा ही store हो।
Types of Normal Forms in DBMS in Hindi (नॉर्मल फॉर्म्स के प्रकार)
DBMS में Normal Forms पाँच प्रकार के होते हैं, जिन्हें E.F. Codd ने विकसित किया था।
1NF (First Normal Form)
1NF का उद्देश्य है कि data एक structured और टेबल के form में हो। इसमें:-
- सभी values atomic (indivisible) होनी चाहिए।
- एक attribute (column) में multiple values नहीं होनी चाहिए।
उदाहरण:
| Roll_No | Name | Subjects |
| 1 | Raj | Math, Science |
| 2 | Priya | English |
ऊपर दी गई table 1NF में नहीं है क्योंकि “Subjects” column में multiple values हैं। इसे fix करने के लिए:
| Roll_No | Name | Subject |
| 1 | Raj | Math |
| 1 | Raj | Science |
| 2 | Priya | English |
2NF (Second Normal Form)
2NF तभी प्राप्त होता है जब:-
- जब वह 1st normal form की सभी requirements (जरूरतों) को पूरी करता हों
- सभी non key attributes पूरी तरह से primary key पर निर्भर हों।
उदाहरण:
| Roll_No | Subject | Teacher |
| 1 | Math | Mr. A |
| 1 | Science | Mr. B |
यह table 2NF में है क्योंकि इसमें कोई partial dependency नहीं है।
3NF (Third Normal Form)
3NF का उद्देश्य transitive dependency को हटाना है। कोई टेबल या रिलेशन तब 3rd normal form में होता है जब-
- जब वह 2nd normal form की सभी जरूरतों को पूरी करता हो।
- उनमें transitive functional dependency नही होनी चाहिए।
उदाहरण:
| Roll_No | Subject | Teacher | Department |
| 1 | Math | Mr. A | Science |
यह टेबल transitive dependency का example है:
- “Subject” से “Department” indirect तरीके से “Teacher” के द्वारा dependent है।
इसे 3NF में लाने के लिए:
- Subject-Teacher mapping अलग table में हो।
- Subject-Department mapping अलग table में हो।
4NF (Fourth Normal Form)
4NF तब होता है जब:
- टेबल 3NF में हो।
- टेबल में multivalued dependency न हो।
उदाहरण:
| Student | Course | Hobby |
| Raj | Math | Cricket |
| Raj | Science | Football |
यहाँ multi-valued dependency है। इसे अलग tables में divide करें:
Course Table:
| Student | Course |
| Raj | Math |
| Raj | Science |
Hobby Table:
| Student | Hobby |
| Raj | Cricket |
| Raj | Football |
5NF (Fifth Normal Form)
Fifth Normal Form (5NF), जिसे Project-Join Normal Form (PJNF) भी कहा जाता है, database normalization का सबसे highest level है। यह complex relationships को handle करता है और tables को और भी efficient बनाता है।
5NF तब satisfy (संतुष्ट) होता है जब:
- टेबल 4NF (Fourth Normal Form) में हो।
- Table को छोटे-छोटे tables में तब तक decompose (विभाजित) न किया जा सके जब तक कि lossless join की condition satisfy न हो जाए।
- Join Dependency का पालन करता हो।
Join Dependency क्या है?
Join Dependency का मतलब है कि अगर एक table को multiple sub-tables में decompose किया गया है, तो उन sub-tables को फिर से join करके original table प्राप्त किया जा सकता है।
5NF का Example (उदाहरण)
मान लीजिए हमारे पास एक company का database है, जिसमें हम तीन चीज़ों को track कर रहे हैं:
- Employees
- Projects
- Skills
और हमारे पास एक table है:
| Employee | Project | Skill |
| Raj | Project A | Java |
| Raj | Project A | Python |
| Raj | Project B | Java |
| Raj | Project B | Python |
इस table का मतलब क्या है?
- Raj नाम का employee दो projects पर काम कर रहा है: Project A और Project B
- उसके पास दो skills हैं: Java और Python
और यह मानते हैं कि:
- Raj दोनों projects पर दोनों skills का use कर रहा है।
- सभी skills का इस्तेमाल सभी projects में होता है।
Problem क्या है?
ऊपर दिए गए table में same data बार-बार repeat हो रहा है।
यह टेबल redundant है और अगर मान लो future में skill या project में बदलाव होता है, तो हमें बहुत सारीं rows को edit करना पड़ेगा — जिससे inconsistency हो सकती है।
5NF में इसे कैसे Break करें?
अब हम इस table को तीन अलग-अलग tables में तोड़ते हैं:
1. Employee – Project Table
| Employee | Project |
| Raj | Project A |
| Raj | Project B |
2. Employee – Skill Table
| Employee | Skill |
| Raj | Java |
| Raj | Python |
3. Project – Skill Table
| Project | Skill |
| Project A | Java |
| Project A | Python |
| Project B | Java |
| Project B | Python |
अब अगर हम इन तीनों tables को join करें, तो हमें फिर से वही original table मिल जाएगा — लेकिन अब कोई डेटा repeat नहीं है, और tables ज़्यादा organized (व्यवस्थित) हैं।
इसे भी पढ़ें:-
निवेदन:- आपको Normalization in DBMS in Hindi पोस्ट कैसी लगी आप हमें कमेंट के माध्यम से अवश्य बतायें। हमें आपके कमेंट्स का बेसब्री से इन्तजार रहता है। अगर आपके कोई सवाल या कोई topics है तो हमें बतायें हम उसको एक या दो दिन के अंदर यहाँ प्रकाशित करेंगे और हाँ पोस्ट शेयर जरूर करें।