Normalization in DBMS in Hindi - नॉर्मलाइजेशन क्या है?

Normalization in Hindi -  नॉर्मलाइजेशन क्या है?

DBMS में Normalization, data को संगठित करने की प्रक्रिया है। यह duplicate data को हटाता है और database को साफ और सटीक बनाएं रखने में मदद करता है।

इस प्रक्रिया में बड़े table को छोटे tables में बांटा जाता है। इससे data को manage करना आसान हो जाता है। 
Normalization, डेटाबेस की गति मे सुधार लाता है और जगह को बचाता है। 
इस विधि से database बेहतर काम करता है। यह data को सही तरीके से संग्रहित करने में मदद करता है ताकि एक ही सूचना विभिन्न स्थानों में repeat न है। इससे data खोजना और अपडेट करना तेज और आसान होता है।
 

Types of Normalization in Hindi - नॉर्मलाइजेशन के प्रकार 
Normalization के निम्न प्रकार है 
Types of Normalization in Hindi

First Normal Form (1NF)  

First Normal Form (1NF) का मतलब एक table का प्रत्येक row unique होना चाहिए और प्रत्येक column में single values होना चाहिए। 

column में एक ही data बार-बार नहीं होना चाहिए। 1NF यह सुनिश्चित करता है कि प्रत्येक column की value, single है और उसे छोटे भागों में नहीं तोड़ा जा सकता

Example:

Duplicate Columns को हटाएं 

Rule: 
प्रत्येक column में unique values होना चाहिए और एक cell में कई values नहीं होना चाहिए जैसे नीचे टेबल में दिखाया गया हैl

Before 1NF(Unnormalized Table) 

StudentID   Name   Subjects 
101Rohit  Math, Science 
102Yash EVS, Math 

Problem:
Subjects column के cell में दो subjects दिए गए हैं।

After 1NF ( हर Subject के लिए अलग Rows)

StudentID   Name     Subjects     
101RohitMath
101RohitScience 
102YashEVS 
103YashMath 

Second Normal Form (2NF)

Second Normal Form (2NF) का मतलब है कि टेबल 1NF में हो और उसमें कोई Partial Dependency न हो। 
सभी columns को संपूर्ण Composite primary key पर निर्भर होना चाहिए न कि उसके केवल एक भाग पर।

अगर कोई कॉलम सिर्फ Composite primary key के एक हिस्से पर निर्भर है, तो उसे नए टेबल में ले जाना चाहिए।

Note
Composite primary key वह है जब एक Primary key दो या अधिक columns से मिलकर बनते हैं।

Note: Partial Dependency का मतलब जब एक column, Composite primary key के केवल एक भाग पर निर्भर करता है न कि पूरे पर। 

Example:

Partial Dependency को हटाएं 

Rule: 
Table को 1NF में होना चाहिए और प्रत्येक non-key column को अवश्य ही पूरी तरह Primary key पर निर्भर होना चाहिए 

Before 2NF (Partial Dependency उपस्थित है)  

StudentID CourseID StudentName CourseName
101 C01 Ajay DCA 
102 C02 Suraj PGDCA 

Problem
ऊपर table में StudentName केवल StudentID, पर और CourseName केवल CourseID पर निर्भर करता है। इसलिए यह टेबल 2NF में नहीं हैऔर इसमें Partial Dependency  है।

After 2NF (दो Tables में तोड़ा गया है)

Student Table  
StudentID     StudentName  
101 Ajay
102 Suraj 

Course Table  
CourseID CourseName
C01 DCA
C02 PGDCA 

अब StudentName केवल StudentID पर तथा CourseName केवल CourseID पर ही पूरी तरह निर्भर है। इसमें Partial Dependency नही है।

Third Normal Form (3NF)  

Third Normal Form (3NF) का मतलब है कि टेबल पहले Second Normal Form (2NF) में हो और उसमें कोई transitive dependency न हो।

transitive dependency उस समय होता है जब एक non-key attribute (column) सीधे Primary key पर निर्भर होने के बजाय अन्य non-key attribute (column) पर निर्भर करता है।


प्रत्येक column को केवल primary key पर निर्भर करना चाहिए यदि कोई column अन्य key पर निर्भर करें तो उसे नए टेबल में ले जाए 

संक्षिप्त में कहे तो एक टेबल के पास केवल Primary key के साथ ही सीधे relationship होना चाहिए।

Example:

Transitive Dependency को हटाएं 

Rule: 
Table को 2NF मे होना चाहिए और non-key attributes (column) को Transitively primary key पर निर्भर होना चाहिए।

Before 3NF (Transitive Dependency उपस्थित)  

EmployeeID DepartmentID DepartmentName
E01 D01 HR
E02 D02 Finance
E03 D03 IT

Problem
DepartmentName
DepartmentID, पर निर्भर करता है तथा DepartmentID, EmployeeID पर निर्भर करता है। यह Transitive Dependency है।

After 3NF (दो Tables में तोड़ना)
Employees Table:
EmployeeID    DepartmentID    
E01 D01
E02 D02
E03 D03

Departments Table:
DepartmentID DepartmentName
D01 HR
D02 FINANCE 
D03 IT
 ऊपर table में Transitive Dependency हट गई है क्योंकि DepartmentID केवल 
EmployeeID पर और DepartmentName केवल DepartmentID पर निर्भर है।

Boyce-Codd Normal Form (BCNF)  

Boyce-Codd Normal Form (BCNF), Third Normal Form (3NF) का मजबूत संस्करण है। एक table BCNF में है अगर यह 3NF में हो और हर determinant एक candidate key हो।

इसका मतलब है कि कोई भी column को एक non-key column पर निर्भर नहीं होना चाहिए।
 

Example:

Multi-Candidate Keys, anomalies को हटाएं।

Rule: 
Table को 3NF में होना चाहिए और प्रत्येक functional dependency (X → Y), X एक super key होना चाहिए  

Before BCNF (Anomaly उपस्थित है)

TeacherName   Subject      Class  
Rajesh  Math 10th
Rajesh Science 9th
Anish English 8th
Anish History 7th

Problem: एक Teacher कई Subjects को विभिन्न classes में पढ़ा सकता है, जिससे Anomalies उत्पन्न होता है।

After BCNF (दो 
Tables में तोड़ना)  

Table 1: Teacher_Subject(प्रत्येक teacher एक subject को पढ़ाता है)
TeacherName Subject
Rajesh Math
Rajesh Science
Anish English
Anish History

Table 2: Subject_Class (प्रत्येक Subject को एक Class में पढ़ाया जाता है)
Subject      Class 
Math 10th
Science 9th
English 8th
History 7th
अब TeacherName → Subject और Subject → Class dependencies अलग किए गए हैं जो BCNF compliance को सुनिश्चित करता है

Fourth Normal Form (4NF) 

Multi-valued dependencies के कारण होने वाली समस्याओं को Fourth Normal Form (4NF) हटाता है।

एक table, 4NF में है यदि एक column (X) अन्य column (Y) को पूरी तरह से नियंत्रित करता है। यहां X column एक superkey है ।

इसका मतलब एक column में कई असंबंधित मान (values) नहीं होने चाहिए। Fourth Normal Form (4NF), असंबंधित multi-valued data को अलग टेबल में रखकर duplicate data को हटाता है। 

यदि एक टेबल में असंबंधित multi-valued columns है तो इस टेबल को छोटे टेबलो में बांटा जाना चाहिए।
4NF, BCNF पर आधारित है और data को clean बनाए रखने में और आसानी से update होने में मदद करता है।

Example:

Multi-Valued Dependency को हटाएं 
Rule: 
Table को BCNF मे होना चाहिए और उनमें multivalued dependencies नहीं होना चाहिए।

Before 4NF (Multi-Valued Dependency उपस्थित है)  
EmployeeID     Skill       Project    
101 Java Project A
101 Python Project A
101 Java Project B
101 Python Project B

Problem:
EmployeeID के लिए कई Skill हो सकते हैं और कई Project हो सकते हैं, लेकिन Skill और Project का आपस में कोई संबंध नहीं है। यही Multivalued Dependency है जो ऊपर के Table में है।

After 4NF (दो Tables में तोड़ने के बाद) 

Employee Skills Table  
Employee_ID Skill
101 Java
101 Python


Employee Projects Table  
Employee_ID Project 
101 Project A
101 Project B

ऊपर दिए गए टेबल में Employee 101 के अलग-अलग Skills और Projects को अलग-अलग टेबल में रखा गया है। इससे Multi-Valued Dependency हट जाती है, जो 4NF के अनुसार सही है।

Fifth Normal Form (5NF)  

Fifth Normal Form (5NF), को  Projection-Join Normal Form (PJ/NF) के नाम से भी जाना जाता है। यह join dependencies का उपयोग करके अतिरिक्त data को हटाता है।
 
एक table जो 5NF मे है यह तभी तोड़ा जा सकता है जब जरुरत हो और बिना data को खोए इसे पुन: जोड़ा जा सकता है।

5NF उस समय मदद करता है जब एक  table में columns के बीच जटिल संबंध होते हैं। हालांकि कई मामलों में 5NF की जरूरत नहीं होती क्योंकि 4NF पहले से सामान्य डेटाबेस समस्याओं का समाधान कर देता है। 

Example:

Join Dependency को हटाएं 

Rule: 
Table को 4NF में होना चाहिए, प्रत्येक join dependency को candidate key से आना चाहिए अर्थात candidate key यह तय करेगा की टेबल को कैसे तोड़ा और सही तरीके से जोड़ा जाना है।

Before 5NF (Join Dependency उपस्थित)  
StudentID CourseID Instructor
101 C01 Mr. Sudhir 
101 C02 Mr. Ravi
102 C01 Mr. Sudhir 

Problem: 
StudentID अलग से CourseID और Instructor को निर्धारित करता है। CourseID और Instructor एक-दूसरे से स्वतंत्र हैं। यही join dependency है।

After 5NF (तीन Tables में तोड़ना)
Student-Course Table  
StudentID CourseID
101 C01
101 C02
102 C01

Course-Instructor Table  
CourseID Instructor
C01 Mr. Sudhir 
C02 Ms. Ravi

Student-Instructor Table  
StudentID Instructor
101 Mr. Sudhir 
101 Mr. Ravi 
102 Mr. Sudhir

तीन टेबल्स में तोड़ने के बाद join dependency हट जाती है।

Sixth Normal Form (6NF)

Sixth Normal Form (6NF), database normalization का उच्चतम स्तर है। यह सभी अतिरिक्त data को हटा देता है और table को छोटे भागों में तोड़ देता है।

6NF का उपयोग मुख्यतः time-based (temporal) databases, में होता है जहां समय के साथ data बदलता है। यह data को साफ और सही बनाए रखने में मदद करता है।

हालांकि यहां बहुत सारे छोटे टेबल का निर्माण करता है जिसके कारण queries कठिन हो जाता है।

6NF, historical records या data warehouses के लिए उपयोगी है। अधिकांश databases को 6NF की जरूरत नहीं है। इसका प्रयोग केवल विशेष मामलों में ही किया जाता है।

Example:

Temporal Data को संभालता है।
Rule: 
Table 5NF में होनी चाहिए और इसे समय के आधार पर डेटा ट्रैक करने में सक्षम होना चाहिए।

Before 6NF (Time Tracking नही है)
Employee    Salary   
Yash 50,000


Problem: 
ऊपर Salary में जो बदलाव हुआ है उसका कोई भी time tracking नहीं है।

After 6NF (Time Tracking को जोड़ा गया है)
Employee Salary Since
Yash 50,000 2024-01-01
Yash 55,000 2025-01-01

Salary में समय के साथ क्या बदलाव हुआ है उसे ऊपर का टेबल स्पष्ट रूप से  दिखाता है क्योंकि उसमें Time Tracking को जोड़ा गया है
 

निष्कर्ष  

 Normalization के प्रत्येक level में विभिन्न प्रकार की समस्याओं को हटाया जाता है।
1NF: इसमें duplicate columns को हटाया जाता है।

2NF: इसमें partial dependency को हटाया जाता है।
 
3NF: इसमें transitive dependency को हटाया जाता है।

BCNF: candidate keys में anomalies को ठीक किया जाता है।

4NF: इसमें multi-valued dependency को हटाया जाता है।  

5NF: इसमें join dependency को हटाया जाता है।   

6NF: इसमें Time-based data को track किया जाता है।