BCA / B.Tech 20 min read

Normalization in DBMS in Hindi

Normalization in DBMS in Hindi | DBMS में नॉर्मलाइजेशन

Normalization डेटाबेस को व्यवस्थित (organize) करने का एक तरीका है। इसका मुख्य काम डेटाबेस में से Duplicate Data (एक ही डेटा का बार-बार आना) को हटाना है।

आसान शब्दों में कहें तो, जब हम एक बहुत बड़ी टेबल में सारा डेटा भर देते हैं, तो उसे मैनेज करना मुश्किल हो जाता है। Normalization में हम उस बड़ी टेबल को छोटी-छोटी टेबल्स में तोड़ देते हैं और उन्हें आपस में लिंक कर देते हैं। इससे डेटा सही रहता है और कोई गड़बड़ (errors) नहीं होती।

"Normalization का सिंपल मतलब है - डेटा को ऐसे सेट करना कि न तो डेटा बार-बार रिपीट हो और न ही डेटा सेव करते समय कोई  Error आए।"

नॉर्मलाइजेशन क्यों करते हैं? (Benefits)

  • Memory बचती है: डुप्लीकेट डेटा नहीं होगा तो कंप्यूटर की मेमोरी कम भरेगी।
  • काम आसान हो जाता है: छोटी टेबल्स को संभालना बड़ी टेबल के मुकाबले आसान होता है।
  • डेटा सही रहता है: अगर एक जगह डेटा अपडेट किया, तो वह हर जगह सही दिखेगा।
  • Errors कम होते हैं: डेटा डिलीट या इंसर्ट करते समय गलतियां नहीं होतीं।

नॉर्मलाइजेशन के प्रकार (Types of Normal Forms)

Normalization को स्टेप-बाय-स्टेप किया जाता है। इन स्टेप्स को हम Normal Forms (NF) कहते हैं।

1. पहला नॉर्मल फॉर्म (1NF)

किसी टेबल को 1NF में तब माना जाता है जब:

  • टेबल के किसी भी बॉक्स (cell) में एक ही वैल्यू हो।
  • कॉमा (,) लगाकर एक साथ कई वैल्यू न लिखी हों (जैसे: Mobile: 9898, 7676 - यह गलत है)।
गलत टेबल (Not in 1NF):
Student ID Name Mobile
101 Rahul 9898989898, 8787878787
102 Amit 9999999999
सही टेबल (In 1NF):
Student ID Name Mobile
101 Rahul 9898989898
101 Rahul 8787878787
102 Amit 9999999999

2. दूसरा नॉर्मल फॉर्म (2NF)

एक टेबल 2NF में तब होती है जब:

  • वह पहले से 1NF में हो।
  • टेबल का हर डेटा उसकी Primary Key (मुख्य आईडी) पर पूरी तरह निर्भर हो।

उदाहरण: नीचे दी गई गलत टेबल में Primary Key है (Student ID + Course ID)। लेकिन 'Course Fee' सिर्फ 'Course ID' पर निर्भर है, स्टूडेंट पर नहीं। इसे Partial Dependency कहते हैं।

गलत टेबल (Not in 2NF):
Student ID Course ID Course Fee
1 Java 5000
2 Java 5000
1 Python 4000
सही टेबल्स (In 2NF):

इसे ठीक करने के लिए हम इसे दो अलग-अलग टेबल्स में बाँट देंगे।

Table 1: Student_Course
Student ID Course ID
1 Java
2 Java
1 Python
Table 2: Course_Details
Course ID Course Fee
Java 5000
Python 4000

3. तीसरा नॉर्मल फॉर्म (3NF)

एक टेबल 3NF में तब होती है जब:

  • वह पहले से 2NF में हो।
  • उसमें एक डेटा दूसरे डेटा पर इनडायरेक्टली निर्भर न हो (Transitive Dependency नहीं होनी चाहिए)।

उदाहरण: यहाँ हमें 'Student' का पता रखना है। लेकिन 'City', 'Zip Code' पर निर्भर करती है, और 'Zip Code', 'Student' पर। यह एक चेन बन रही है।

गलत टेबल (Not in 3NF):
Student ID Name Zip Code City
1 Rahul 110001 Delhi
2 Amit 400001 Mumbai

(समस्या: अगर हम Zip 110001 की सिटी बदलते हैं, तो उसे हर स्टूडेंट के लिए बदलना पड़ेगा।)

सही टेबल्स (In 3NF): Table 1: Student_Address
Student ID Name Zip Code
1 Rahul 110001
2 Amit 400001
Table 2: Location_Master
Zip Code City
110001 Delhi
400001 Mumbai

4. BCNF (Boyce-Codd Normal Form)

यह 3NF का ही एक स्ट्रिक्ट (सख्त) रूप है। इसे 3.5 NF भी कहते हैं।

  • टेबल 3NF में होनी चाहिए।
  • अगर A -> B पर निर्भर है, तो 'A' को टेबल का Super Key (बॉस) होना चाहिए।

यह तब काम आता है जब टेबल में एक से ज्यादा Primary Keys बनने की क्षमता हो।

अक्सर पूछे जाने वाले सवाल (FAQs)

Normalization kya hota hai? (सरल भाषा में)

उत्तर: जैसे हम अपनी अलमारी में कपड़े व्यवस्थित (organize) करके रखते हैं ताकि जगह बचे और ढूंढने में आसानी हो, वैसे ही डेटाबेस में डेटा को व्यवस्थित करने के तरीके को Normalization कहते हैं। यह फालतू (duplicate) डेटा को हटा देता है।

Normalization के कितने प्रकार होते हैं?

उत्तर: मुख्य रूप से 4-5 प्रकार होते हैं, लेकिन 3NF तक सबसे ज्यादा इस्तेमाल होते हैं:

  • 1NF (हर बॉक्स में एक वैल्यू)
  • 2NF (Primary Key का पूरा इस्तेमाल)
  • 3NF (इनडायरेक्ट निर्भरता हटाना)
  • BCNF (3NF से थोड़ा सख्त)
Normalization क्यों किया जाता है?

उत्तर: इसके 3 मुख्य कारण हैं:

  1. ताकि एक ही डेटा दो बार सेव न हो (Space बचाने के लिए)।
  2. डेटाबेस तेज़ चले।
  3. डेटा डिलीट या अपडेट करते समय कोई गड़बड़ न हो।
BCNF क्या है in Hindi?

उत्तर: BCNF का मतलब है Boyce-Codd Normal Form। यह 3NF का एडवांस वर्जन है। कभी-कभी टेबल 3NF में तो होती है लेकिन फिर भी उसमें कुछ कमियां रह जाती हैं। उन कमियों को दूर करने के लिए BCNF का इस्तेमाल होता है। आसान भाषा में: टेबल का हर "लेफ्ट साइड वाला कॉलम" (Determinant) एक "Super Key" होना चाहिए।

Normalization के लाभ क्या हैं?

उत्तर:

  • हार्ड डिस्क की जगह बचती है।
  • डेटा ढूँढना आसान हो जाता है।
  • डेटाबेस एकदम साफ-सुथरा (Clean) रहता है।
  • प्रोग्रामर को डेटा हैंडल करने में आसानी होती है।
Normalization और Denormalization में क्या अंतर है?

उत्तर:

  • Normalization: हम बड़ी टेबल को तोड़कर छोटी टेबल्स बनाते हैं (ताकि डुप्लीकेट डेटा न रहे)।
  • Denormalization: हम छोटी टेबल्स को जोड़कर वापस एक बड़ी टेबल बनाते हैं (ताकि डेटा तेजी से पढ़ा जा सके, यह अक्सर रिपोर्टिंग में यूज़ होता है)।