Database Normalization, Database डिज़ाइन करते समय एक बहुत अहम कदम होता है Normalization, यह प्रक्रिया आपके डेटाबेस को सही ढंग से organize और structure करने में मदद करती है, ताकि डेटा न तो बार-बार दोहराया जाए और न ही असंगत (inconsistent) हो।
Normalization क्या है? (Database Normalization in Hindi)
Normalization (नॉर्मलाइज़ेशन) एक प्रक्रिया है जिसमें database के tables और columns को इस तरह व्यवस्थित किया जाता है कि
- डेटा बार-बार store न हो (redundancy कम हो)
- डेटा हमेशा सही और एक-जैसा रहे (integrity बनी रहे)
- Database की performance बेहतर बनी रहे
दूसरे शब्दों में – “Normalization वह तरीका है जिससे हम डेटा को छोटे-छोटे तार्किक भागों में बाँटते हैं, ताकि उसे manage और update करना आसान हो।”
Normalization का उद्देश्य
Normalization का मुख्य उद्देश्य है –
- डेटा को logically store करना
- redundancy और inconsistency हटाना
- update anomalies से बचना
- storage को efficient बनाना
- database maintenance को आसान बनाना
Normalization की प्रक्रिया (Process of Normalization)
Normalization आमतौर पर दो प्रमुख steps में पूरी की जाती है –
Redundant Data हटाना
यानी duplicate या बार-बार दोहराए गए data को eliminate करना।
Relevant Data को अलग रखना
हर table में केवल उसी विषय से संबंधित data रखा जाता है।
Normal Forms क्या होती है?
Normalization को कई stages या “Normal Forms” में बाँटा गया है।
हर level पिछले level से ज़्यादा structured और refined होता है।
E.F. Codd (डेटाबेस के जनक) ने Normal Forms का सिद्धांत प्रस्तुत किया था।
आइए इन्हें एक-एक करके समझते है –
First Normal Form (1NF)
उद्देश्य:
टेबल के सभी कॉलम्स में केवल atomic (indivisible) values हों।
शर्तें:
- प्रत्येक कॉलम में केवल एक ही value होनी चाहिए।
- कोई repeating group या multiple values नहीं होनी चाहिए।
उदाहरण:
| Roll_No | Name | Subjects |
|---|---|---|
| 1 | Mahesh | Math, Science |
| 2 | Riya | English |
ऊपर दिया गया table 1NF में नहीं है, क्योंकि “Subjects” कॉलम में एक से ज़्यादा values हैं।
इसे सही करने के लिए –
| Roll_No | Name | Subject |
|---|---|---|
| 1 | Mahesh | Math |
| 1 | Mahesh | Science |
| 2 | Riya | English |
अब यह table 1NF में है।
Second Normal Form (2NF)
उद्देश्य:
Partial dependency को हटाना।
शर्तें:
- Table पहले से 1NF में होना चाहिए।
- हर non-key column पूरी तरह से primary key पर निर्भर होना चाहिए।
उदाहरण:
| Roll_No | Subject | Teacher |
|---|---|---|
| 1 | Math | Mr. X |
| 1 | Science | Mr. Y |
यह table 2NF में है क्योंकि सभी non-key attributes (Teacher) primary key (Roll_No + Subject) पर पूरी तरह निर्भर है।
Third Normal Form (3NF)
उद्देश्य:
Transitive dependency को हटाना।
शर्तें:
- Table 2NF में होना चाहिए।
- कोई non-key column किसी अन्य non-key column पर निर्भर नहीं होना चाहिए।
उदाहरण:
| Roll_No | Subject | Teacher | Department |
|---|---|---|---|
| 1 | Math | Mr. X | Science |
यहाँ Department “Teacher” पर निर्भर है, जबकि Teacher खुद Subject पर निर्भर है, यह transitive dependency है।
इसे ठीक करने के लिए दो अलग tables बनाएं –
Subject_TeacherSubject_Department
अब डेटा साफ और dependency-free है।
Fourth Normal Form (4NF)
उद्देश्य:
Multivalued dependency को खत्म करना।
शर्तें:
- Table पहले से 3NF में होना चाहिए।
- Table में कोई multivalued dependency नहीं होनी चाहिए।
उदाहरण:
| Student | Course | Hobby |
|---|---|---|
| Mahesh | Math | Cricket |
| Mahesh | Science | Football |
यहाँ Student के पास दो अलग-अलग multivalued attributes हैं — Course और Hobby।
इसे सही करने के लिए दो अलग tables बनाते है –
Course Table
| Student | Course |
|---|---|
| Mahesh | Math |
| Mahesh | Science |
Hobby Table
| Student | Hobby |
|---|---|
| Raj | Cricket |
| Raj | Football |
अब multivalued dependency खत्म हो गई है।
Fifth Normal Form (5NF)
(जिसे Project-Join Normal Form या PJNF भी कहा जाता है)
उद्देश्य:
Complex dependencies को handle करना और redundancy को पूरी तरह खत्म करना।
शर्तें:
- Table 4NF में होना चाहिए।
- Table को छोटे-छोटे हिस्सों में तोड़ने के बाद भी जब join किया जाए तो data loss न हो (Lossless join)।
- Join Dependency को satisfy करना चाहिए।
उदाहरण:
| Employee | Project | Skill |
|---|---|---|
| Mahesh | Project A | Java |
| Mahesh | Project A | Python |
| Mahesh | Project B | Java |
| Mahesh | Project B | Python |
यहाँ डेटा बार-बार repeat हो रहा है।
इसे 5NF में बदलने के लिए table को तीन भागों में तोड़ दे –
1. Employee-Project Table
| Employee | Project |
|---|---|
| Mahesh | Project A |
| Mahesh | Project B |
2. Employee-Skill Table
| Employee | Skill |
|---|---|
| Mahesh | Java |
| Mahesh | Python |
3. Project-Skill Table
| Project | Skill |
|---|---|
| Project A | Java |
| Project A | Python |
| Project B | Java |
| Project B | Python |
अब join करने पर वही data मिलेगा लेकिन redundancy खत्म हो गई।
Normalization के फायदे
- Data redundancy हटाता है।
- Update anomalies से बचाता है।
- Database integrity बनाए रखता है।
- Storage space बचाता है।
- Query performance को बेहतर करता है।
- Maintenance आसान बनाता है।
इन्हें भी पढ़े –
- DBMS क्या है DBMS के प्रकार और कार्य की पूरी जानकारी | DBMS In Hindi
- डेटाबेस यूजर्स क्या है?
- डेटा इंडिपेंडेंस क्या है
- DBMS के लाभ
- Characteristics Of DBMS In Hindi
- डेटा मॉडल क्या है?
- डेटाबेस स्कीमा क्या है
- इंस्टैंस क्या है
- डेटाबेस इंटरफ़ेस क्या है
- डेटाबेस लैंग्वेज क्या है
- Classification of DBMS in Hindi
- Entity Set in DBMS
- DBMS Architecture in Hindi
- Types of Data Models in Hindi
- Attributes in DBMS in Hindi
- Entity Set in DBMS (Hindi)
- Entity Types in DBMS (Hindi)
- Types of Attributes in DBMS
- ER Model in DBMS (E-R मॉडल) क्या है?
- Entities के बीच संबंध
- Domain in DBMS
- Tuples in DBMS
- SQL में Joins क्या हैं?
- Primary Key in DBMS
- DBMS Keys in Hindi
- DBMS Data Integrity in Hindi
- Relational Algebra in DBMS
- Normalization in DBMS क्या है?
- BCNF (Boyce-Codd Normal Form) in DBMS
- Functional Dependency in DBMS
- Non-Loss Decomposition in DBMS
- SQL Data Types in Hindi
- Create Table in SQL in Hindi
- SQL DROP TABLE और ALTER TABLE in Hindi
- SQL Indexes in Hindi
- SDLC in Hindi
- DBLC in Hindi
- SQL Views in Hindi
- PL/SQL PROCEDURES in hindi
निष्कर्ष (Conclusion)
Normalization database designing का सबसे जरूरी concept है।
यह सुनिश्चित करता है कि आपका डेटा न केवल साफ और consistent रहे बल्कि maintain और update करना भी आसान हो।