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

क्या कई-से-अनेक संघों के लिए तालिका में शामिल होने के लिए कोई विकल्प हैं?

  • यदि मॉडल रंग समूह साझा नहीं करते हैं तो डिज़ाइन एक तालिका होगी:

    model [model] comes in color [color]
    
  • अगर मॉडल रंग समूह साझा करते हैं तो दो टेबल हैं:

    model [model] comes in the colors of group [group]
    group [group] has color [color]
    

    ये टेबल प्रोजेक्शन के साथ पहली टेबल से जुड़ते हैं:

    SELECT model, color FROM model_group NATURAL JOIN group_color
    
  • यदि किसी मॉडल में समूह के अतिरिक्त या उसके बजाय असाधारण उपलब्ध और/या अनुपलब्ध रंग हो सकते हैं, तो अपवाद तालिकाएँ हैं। किसी तालिका का समूह अब उसका डिफ़ॉल्ट है रंग (यदि कोई हो):

    model [model] has default color group [group]
    group [group] has color [color]
    model [model] is exceptionally available in color [color]
    model [model] is exceptionally unavailable in color [color]
    

    अपवाद तालिकाएँ तब क्रमशः पहली तालिका देने के लिए जॉइन-प्लस-प्रोजेक्ट/चयन से माइनस/छोड़ दी जाती हैं:

    SELECT group, color FROM model_default NATURAL JOIN group_colour
    EXCEPT SELECT * FROM model_unavailable
    UNION SELECT * FROM model_available
    

"अनावश्यकता" एकाधिक स्थानों पर प्रदर्शित होने वाले मानों के बारे में नहीं है। यह कई पंक्तियों के बारे में है जो आवेदन के बारे में एक ही बात बताती है।

हर टेबल (और क्वेरी एक्सप्रेशन) में एक संबद्ध फिल-इन-द- (नाम-) ब्लैंक स्टेटमेंट टेम्प्लेट (उर्फ विधेय) होता है। सत्य कथन करने वाली पंक्तियाँ तालिका में जाती हैं। यदि आपके पास दो स्वतंत्र विधेय हैं तो आपको दो तालिकाओं की आवश्यकता है। प्रासंगिक मान प्रत्येक की पंक्तियों में जाते हैं।

आवेदन के बारे में बयान देने वाली पंक्तियाँ इसे देखें। (और मेरे अन्य उत्तरों को एक तालिका के "कथन" या "मानदंड" के रूप में खोजें।) सामान्यीकरण मदद करता है क्योंकि यह उन तालिकाओं को प्रतिस्थापित करता है जिनकी पंक्तियाँ "... और ..." रूप की चीजों को अन्य तालिकाओं द्वारा बताती हैं जो "... " अलग से। इसे और यह देखें।

यदि आप समूह साझा करते हैं और मॉडल और रंग के लिए केवल एक दो-स्तंभ तालिका का उपयोग करते हैं तो इसका विधेय है:

FOR SOME group
    model [model] comes in the colors of group [group]
AND group [group] has color [color]

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हम PostgreSQL में इसके नाम के बजाय एक पहचानकर्ता संख्या का उपयोग कब कर सकते हैं?

  2. PostgreSQL सर्वर से कनेक्ट करने में असमर्थ:सर्वर से कनेक्ट नहीं हो सका:अनुमति अस्वीकृत

  3. कठपुतली के साथ PostgreSQL परिनियोजन और कॉन्फ़िगरेशन

  4. मैं sql या phpPgAdmin का उपयोग करके PostgreSQL डेटाबेस के लिए डेटाबेस एन्कोडिंग कैसे बदल सकता हूँ?

  5. PostgreSQL में एक तिथि में सप्ताह जोड़ें