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

सामान्यीकरण प्रक्रिया के दौरान गैर-सामान्यीकृत तालिकाओं के निर्माण के लिए अभ्यास/दिशानिर्देश मौजूद हैं?

TL;DR किसी दिए गए सामान्य रूप में विघटित होने के लिए आपको प्रकाशित एल्गोरिथम का पालन करना होगा।

PS आपको मूल सीडी से कलाकार सामान्यीकरण के माध्यम से नहीं मिला, क्योंकि आपने एक नया कॉलम पेश किया था। लेकिन मान लें कि टेबल आर्टिस्ट का स्पष्ट अर्थ है। आपको ऐसा क्यों लगता है कि "जहां तक ​​मैं इसे समझता हूं, यह फिर से तीसरे सामान्य रूप में नहीं है"? यदि कलाकार -> मूल सीडी में वर्ष है तो वह कलाकार में भी करता है। लेकिन तब {artist}, {artist_id} के साथ, कलाकार का CK (उम्मीदवार कुंजी) होता है, और कलाकार 3NF (और 5NF) में होता है।

आपके प्रश्न के मूल संस्करण और वर्तमान संस्करण से, आपके पास एक प्रस्तावित आधार तालिका सीडी है जिसमें कॉलम cd_id, शीर्षक, समूह और वर्ष है, जिसमें टुपल्स हैं जहां cd cd_id शीर्षक शीर्षक समूह समूह . द्वारा बनाया गया था वर्ष वर्ष . में गठित . कॉलम cd_id अद्वितीय है, इसलिए CK है। FD {group} -> वर्ष भी होता है।

सामान्यीकरण नए कॉलम नामों का परिचय नहीं देता है। यह प्रस्तावित आधार तालिका को दूसरों द्वारा प्रतिस्थापित करता है, प्रत्येक अपने स्तंभों के एक छोटे उपसमुच्चय के साथ, जो हमेशा इसके मूल्य से जुड़ता है। बीसीएनएफ तक सामान्यीकरण एफडी (कार्यात्मक निर्भरता) पर आधारित है, जो कि आधार तालिका के सीके को भी निर्धारित करते हैं। तो आपके प्रश्न में अपघटन नहीं है। एक संभावित अपघटन आपके प्रश्न की याद दिलाता है, जिसमें कोई विशेष गुण हो सकता है या नहीं भी हो सकता है, कॉलम सेट {cd_id, title, group} और {group, year} के साथ टेबल होगा।

अन्य FD मूल रूप में होती हैं। कॉलम क्या हैं, इसके कारण कुछ पकड़ते हैं; सीके की वजह से कुछ पकड़; कुछ होल्ड क्योंकि {group} -> साल होल्ड; सामान्य तौर पर, कुछ लोग धारण करते हैं क्योंकि वे तीनों करते हैं। और हो सकता है कि अन्य लोग इस बात को लेकर चिंतित हों कि संबंध में कौन से टुपल्स जाने वाले हैं और कौन सी स्थितियाँ उत्पन्न हो सकती हैं। आपको प्रत्येक . के लिए निर्णय लेने की आवश्यकता है संभव FD चाहे वह धारित हो।

बेशक, आपको बताया गया . हो सकता है कि केवल वही हैं जो धारण करते हैं जिन्हें उन परिस्थितियों में धारण करना होता है। लेकिन आप नहीं बताया गया है कि केवल FD जो धारण करती है वह {group} -> वर्ष है, क्योंकि वहाँ हैं तुच्छ FD और सीके का प्रत्येक सुपरसेट कार्यात्मक रूप से स्तंभों के प्रत्येक सेट को निर्धारित करता है

3NF की एक परिभाषा यह है कि एक संबंध 2NF में है और कोई भी गैर-अभाज्य स्तंभ किसी भी CK पर सकर्मक रूप से कार्यात्मक रूप से निर्भर नहीं है। (ध्यान दें कि प्रत्येक शर्त में अन्य परिभाषाएं शामिल हैं।) यदि आप इसका उपयोग यह पता लगाने के लिए करना चाहते हैं कि आपका संबंध 3NF में है या नहीं, तो आपको आगे यह पता लगाना होगा कि सभी क्या है सीके हैं। आप इसे उपयुक्त एल्गोरिदम के माध्यम से सबसे तेज़ कर सकते हैं, लेकिन आप केवल यह देख सकते हैं कि कॉलम के कौन से सेट कार्यात्मक रूप से प्रत्येक कॉलम को निर्धारित करते हैं लेकिन इसमें छोटा ऐसा सेट नहीं होता है, क्योंकि वे सीके हैं। फिर परिभाषा में दो स्थितियों की जाँच करें।

यदि आप 3NF को सामान्य करना चाहते हैं तो आपको 3NF को विघटित करने के लिए एक एल्गोरिथ्म का पालन करने की आवश्यकता है। आप यह नहीं समझाते हैं कि आपको किस प्रक्रिया का पालन करना चाहिए। लेकिन अगर आप एक सिद्ध एल्गोरिथम का पालन नहीं कर रहे हैं तो आप जो भी घटक चुनते हैं वह हमेशा मूल में शामिल हो सकता है या नहीं भी हो सकता है और प्रत्येक किसी विशेष उच्च सामान्य रूप में हो सकता है या नहीं भी हो सकता है। ध्यान दें कि अपघटन के उदाहरण आपने देखा है कि अपघटन एल्गोरिदम की प्रस्तुतियां . नहीं हैं ।

एनएफ (सामान्य रूप) परिभाषाएं ऐसी शर्तें देती हैं जो उस एनएफ में होने के लिए एक संबंध को पूरा करना चाहिए। वे आपको यह नहीं बताते हैं कि उच्च एनएफ में संबंधों के लिए गैर-नुकसान कैसे करें (जब संभव हो तो एफडी को संरक्षित करना)। लोगों ने विशेष एनएफ के लिए अपघटन के उत्पादन के लिए एल्गोरिदम तैयार किया है। (और किसी दिए गए एनएफ को विघटित करने में सामान्य रूप से पहले एनएफ को कम करने के लिए पहले अपघटन शामिल नहीं होता है। निचले एनएफ के माध्यम से जाने से वास्तव में मूल के अच्छे उच्च-एनएफ अपघटन को उत्पन्न होने से रोका जा सकता है जब आप उच्च एनएफ के अनुसार विघटित हो जाते हैं।)

आप यह भी नहीं जानते होंगे कि जब कुछ FD होल्ड करते हैं, तो कुछ अन्य को होल्ड करना चाहिए। उत्तरार्द्ध को आर्मस्ट्रांग के पूर्व के सिद्धांतों के माध्यम से निर्धारित किया जा सकता है। तो सिर्फ इसलिए कि आप एक विशेष FD से छुटकारा पाने के लिए विघटित हो गए हैं, जिसकी उपस्थिति एक विशेष NF का उल्लंघन करती है, इसका मतलब यह नहीं है कि अन्य लोगों का एक समूह नहीं था जिसने इसका उल्लंघन किया था, जिसे आपने डील नहीं किया था। वे नए घटकों में मौजूद हो सकते हैं। या वे समस्याग्रस्त तरीकों से उपस्थित नहीं हो सकते हैं, ताकि आपने उन्हें "संरक्षित" न किया हो, जब आप कर सकते थे, जिससे खराब डिजाइन हो सकते थे।

कॉलेज/विश्वविद्यालय पाठ्यपुस्तक/पाठ्यक्रम/प्रस्तुति में विशिष्ट एनएफ एल्गोरिदम के बारे में जानें, और उस मामले के लिए एनएफ और सामान्यीकरण के बारे में जानें। कई ऑनलाइन हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वाइड वर्चर फील्ड कारण अनुरोधित रूपांतरण समर्थित नहीं है MySQL लिंक्ड सर्वर के साथ ओपनक्वेरी का उपयोग करने में त्रुटि

  2. MySQL में विशिष्ट स्तंभों के अद्यतन के बाद ट्रिगर सक्रिय करें

  3. जब आपको mysql पर 20 अंकों से बड़े पूर्णांकों की आवश्यकता हो तो क्या करें?

  4. MySQL सर्वर की मेमोरी खत्म हो गई है या स्टार्ट नहीं हो रहा है

  5. रेक डीबी:यदि आप मैन्युअल रूप से चारसेट सेट करते हैं तो जेनरेट करें, सुनिश्चित करें कि आपके पास एक मिलान मिलान त्रुटि है