Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL में सामान्यीकरण

मैं यहाँ सामान्य शब्दों में सामान्यीकरण की व्याख्या करने का प्रयास करता हूँ। सबसे पहले, यह कुछ ऐसा है जो रिलेशनल डेटाबेस (Oracle, Access, MySQL) पर लागू होता है, इसलिए यह केवल MySQL के लिए नहीं है।

सामान्यीकरण यह सुनिश्चित करने के बारे में है कि प्रत्येक तालिका में केवल न्यूनतम फ़ील्ड हों और निर्भरता से छुटकारा पाएं। कल्पना कीजिए कि आपके पास एक कर्मचारी रिकॉर्ड है, और प्रत्येक कर्मचारी एक विभाग से संबंधित है। यदि आप कर्मचारी के अन्य डेटा के साथ विभाग को एक फ़ील्ड के रूप में संग्रहीत करते हैं, तो आपको एक समस्या है - यदि कोई विभाग हटा दिया जाए तो क्या होगा? आपको सभी विभाग फ़ील्ड को अपडेट करना होगा, और त्रुटि की संभावना है। और क्या होगा यदि कुछ कर्मचारियों के पास कोई विभाग नहीं है (नव नियुक्त, शायद?) अब शून्य मान होंगे।

तो सामान्यीकरण, संक्षेप में, उन क्षेत्रों से बचने के लिए है जो शून्य होंगे, और यह सुनिश्चित करना कि तालिका में सभी फ़ील्ड केवल वर्णित डेटा के एक डोमेन से संबंधित हैं। उदाहरण के लिए, कर्मचारी तालिका में, फ़ील्ड आईडी, नाम, सामाजिक सुरक्षा संख्या हो सकती है, लेकिन उन तीन क्षेत्रों का विभाग से कोई लेना-देना नहीं है। केवल कर्मचारी आईडी बताता है कि कर्मचारी किस विभाग से संबंधित है। तो इसका तात्पर्य यह है कि एक कर्मचारी किस विभाग में है वह दूसरी तालिका में होना चाहिए।

यहाँ एक साधारण सामान्यीकरण प्रक्रिया है।

EMPLOYEE ( < employee_id >, name, social_security, department_name)

यह सामान्यीकृत नहीं है, जैसा कि समझाया गया है। एक सामान्यीकृत रूप कुछ इस तरह दिख सकता है

EMPLOYEE ( < employee_id >, name, social_security)

यहां, कर्मचारी तालिका केवल डेटा के एक सेट के लिए ज़िम्मेदार है। तो हम कहां स्टोर करें कि कर्मचारी किस विभाग से संबंधित है? किसी अन्य तालिका में

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

यह इष्टतम नहीं है। क्या होगा अगर विभाग का नाम बदल जाता है? (यह अमेरिकी सरकार में हर समय होता है)। इसलिए ऐसा करना बेहतर है

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

पहला सामान्य रूप है, दूसरा सामान्य रूप है और तीसरा सामान्य रूप है। लेकिन जब तक आप एक DB पाठ्यक्रम का अध्ययन नहीं कर रहे हैं, मैं आमतौर पर सबसे सामान्य रूप के लिए जाता हूं जिसे मैं समझ सकता हूं।

आशा है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CURRENT_DATE उदाहरण – MySQL

  2. वेबसाइट डेटाबेस को कैसे अनुकूलित करें

  3. MySQL तालिका स्तर अनुमतियों के बारे में जानें

  4. MySQL में कॉलम मान में स्ट्रिंग को कैसे प्रीपेड करें?

  5. MySQL के साथ Oracle JDeveloper Snippets का उपयोग करना