Normal Form के बारे में तो हमने detail से समझ लिया था लेकिन आज हम आपको नार्मल फॉर्म के पहले प्रकार First Normal Form के बारे में बताने वाले है आज हम Example के साथ समझेंगे की फर्स्ट नार्मल फॉर्म क्या है। चलिए DBMS में फर्स्ट नार्मल फॉर्म को जानते है।
First Normal Form को 1NF से भी दर्शाते हैं, एक relational table 1NF में होती है जब colunm की सभी values Atomic होती है। यानी कि उसमें repeating values नही होती है। Simply हम इसे इस तरह से भी समझ सकते है कि कोई table 1 NF में होती है यदि-
- Table में कोई Duplicate Row नही होनी चाहिए।
- हर एक Cell में single Values होनी चाहिए।
- Colunm में entries का प्रकार एक जैसा ही होना चाहिए।
अब ये थी 1NF की Defination अब हम इसका Example देखेंगे जिससे की हमे First Normal Form को बड़ी आसानी से समझ सकेंगे।
हमने नीचे एक table बनाया है जिसमे 3 Employee है जिनके नाम Vishal, Vinay और Arun है इस टेबल में हमने इन Employee के बच्चों के नाम और उनके birth year स्टोर किये है।
ID | First Name | Last Name | Kids Name | Kids Year |
---|---|---|---|---|
044 | Vishal | Bhati | Ajay | 2012 |
Vijay | 2014 | |||
043 | Vinay | Jain | Ravi | 2011 |
Veer | 2013 | |||
042 | Arun | Jha | Avi | 2010 |
Neha | 2016 | |||
Piu | 2010 |
इस टेबल में देखा जा सकता है कि Vishal के 2 बच्चे Ajay और Vijay है, Vinay के भी 2 बच्चे Ravi और Veer है, Arun के 3 बच्चे Avi, Neha, और piu है। अब यहा पर बच्चों के data को इनके पिता के रिलेशन में store करके नही रख सकते है क्योंकि, अगर हम इस कार भी लेते है तो एक ही Colunm में एक से ज्यादा नाम और birth year store हो जाएंगे जो Relational Database में posible नही होता है। इस बात को समझने के लिए हमने एक टेबल नीचे बनाया है कि अगर हम ऐसा करते है तो हमे क्या problem face करना पड़ सकती है।
ID | First Name | Last Name | Kids Name | Kids Year |
---|---|---|---|---|
044 | Vishal | Bhati | Ajay, Vijay | 2012, 2014 |
043 | Vinay | Jain | Ravi, Veer | 2011, 2013 |
042 | Arun | Jha | Avi, Neha, Piu | 2010, 2016, 2008 |
अब आपको इस टेबल में दिख ही रहा होगा कि Kids Name और Kids Year की फील्ड में हमने 1 से ज्यादा मानो को स्टोर करके रखा है अब अगर हम इस करते है तो हमे कुछ problem फेस करना पड़ेगी जो कि हमने नीचे बताई है।
1.) अगर हम इस तरीके से table create करते है तो हमे बच्चों के नाम और उनके birth year हमेशा एक ही sequence में लिखना होगा। यहाँ पर जो table है इसमें ऐसा कोई भी रास्ता नही है कि हम पता लगा सके कि कोनसे बच्चे का birth year कोन सा है।
2.) अगर हम एक से ज्यादा value वाली टेबल बना लेते है तो DBMS उस टेबल में डेटा को सर्च करने के लिए multi value वाले इस colunm पर sequential प्रोसेस को लागू करके आवश्यक डेटा को receive करता है। और ये जो पूरी process होती है ये बहुत ही धीमी गति से होती है।
अब ये जो problem हमारे सामने है इससे बचने के लिए और Table को First Normal Form में लाने के लिए हमारे पास 2 रास्ते होते जिसमे एक गलत तरीका है और दूसरा सही तरीका है - पहला कि अगर हम अगल-अलग फील्ड बना कर बच्चों के नाम और birth year को store करे जिससे कि Repeating values नही आएगी और टेबल 1NF में होगी पर, ये गलत तरीका है। क्योंकि सही तरीका ये है कि हम एक और अलग table बनाले जो हमारी table में multiple data है उसे संभाल सके।
अगर इस बात को अच्छे से समझना है तो हमे गलत तरीके को समझना होगा क्योंकि अगर हम गलत तरीके को अपना कर टेबल को first Normal Form में लाते है तो हमे कुछ प्रोब्लेम्स आती है। उससे पहले आप इस टेबल को देख सकते है जिसमे बच्चों के नाम और उनके जन्म के साल के लिए अलग फील्ड बनाया है।
ID | First Name | Last Name | Kid1 | Year1 | Kid2 | Year2 | Kid3 | Year3 |
---|---|---|---|---|---|---|---|---|
044 | Vishal | Bhati | Ajay | 2012 | Vijay | 2014 | ||
043 | Vinay | Jain | Ravi | 2011 | Veer | 2013 | ||
042 | Arun | Jha | Avi | 2010 | Neha | 2016 | Piu | 2008 |
ये table 1NF में है क्योकि इसमे columns की वैल्यू Atomic है पर अभी इसमे कुछ समस्या है जिन्हें दूर करने के लिए इसे और normalize करना होगा इसकी समस्या कुछ इस प्रकार है।
- यहाँ जो टेबल बनाई है इसमें हम बच्चों के केवल 3 बच्चों के डेटा को insert कर सकते है अगर किसी employee के 4 बच्चे हुए तो हम चौथे बच्चे के डेटा को इस टेबल में नही डाल सकते है क्योंकि इस टेबल में चौथे बच्चे के डेटा के लिए कोई फील्ड नही है।
- अगर किसी के 3 से कम बच्चे होते है तो उस एम्प्लोयी की तीसरे बच्चे के लिए reserved की गई फील्ड तो खाली राह जाती है जिससे कि उसका स्पेस waste हो जाता है।
- इसमे एक और प्रॉब्लम ये भी होती है कि अगर हमे किसी kids को सर्च करना है तो वो सर्चिंग की प्रोसेस बहुत मुश्किल होती है जिसमे समय भी बहुत ला जाता है और हमारा टाइम waste होता है।
अब इस प्रॉब्लम को सॉल्व करने का सही तरीका यही है की multi value को स्टोर करने के लिए हमे एक और टेबल बनानी होगी जो Repeating value के multiple डेटा को store कर सके। First Normal Form Normalization के लिए सबसे जरूरी हिस्सा होता है क्योंकि, tables की बिना 1NF में लाये हुए हम 2NF में नही ले सकते है।
First Normal Form के बारे में अब आपको जानकारी हो गयी होगी पर आपको अगर कुछ समझ नही आता है तो आप comment करके अपनी प्रॉब्लम बात सकते है हम आपकी help करने की पूरी कोशिश करेंगे पोस्ट अच्छा लगा तो शेयर करे।
No comments:
Post a Comment
Apna Comment Kare