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

बहुत अधिक कॉलम वाली तालिका के नुकसान

यहाँ कुछ बातों पर ध्यान देना चाहिए:

  • क्या विशेषताओं की सूची समय के साथ महत्वपूर्ण रूप से बदलती है
  • क्या विशेषताओं की सूची के लिए कस्टम उपयोगकर्ता-परिभाषित विशेषताओं की आवश्यकता होती है
  • क्या विभिन्न स्कूलों के लिए अलग-अलग विशेषताएं हैं (यानी कई विशेषताएँ केवल एक या कुछ स्कूलों पर लागू होती हैं)?

यदि इनमें से कोई भी सत्य है, तो आप प्रॉपर्टी स्टोर दृष्टिकोण के बारे में सोच सकते हैं जैसे EAV, hstore, json फ़ील्ड, xml फ़ील्ड, आदि

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

यह भी देखें:डेटाबेस डिज़ाइन - क्या मुझे JSON/XML के रूप में सभी डेटा के साथ 30 कॉलम या 1 कॉलम का उपयोग करना चाहिए ?

आपके लिए एक समझौता विकल्प भी उपलब्ध है:सबसे महत्वपूर्ण विवरणों के लिए एक मुख्य तालिका जिसे आप बहुत अधिक देखते हैं, साथ ही विशेषताओं के तार्किक समूहों के लिए साइड-टेबल। कहो:

yearly_summary (
    yearly_summary_id serial primary key,
    school_id integer,
    total_students integer,
    ...
) 

प्लस

yearly_student_stats(
    yearly_summary_id integer primary key references yearly_summary(yearly_summy_id) on delete cascade,
    ...
)

आदि integer primary key वह भी एक foreign key है इसका मतलब है कि आपके पास दूसरी तालिका के लिए एक लागू 1:1 (वैकल्पिक) संबंध है। यह दृष्टिकोण उपयोगी हो सकता है यदि आपके पास विशेषताओं के कुछ तार्किक समूह हैं जिन्हें आप साइड-टेबल में क्लस्टर कर सकते हैं।

मुझे भी आश्चर्य होगा अगर थोड़ा और विचार उन चीजों को प्रकट नहीं करता जो करते हैं सामान्य करने के लिए समझ में आता है। क्या आपके पास year7_blah है , year8_blah , year9_blah आदि कॉलम? अगर ऐसा है:सामान्यीकरण के लिए बढ़िया उम्मीदवार।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pgAdmin - डीबी कनेक्शन परिभाषा साझा करना

  2. अतिव्यापी दिनांक सीमाओं से जुड़े मानों के योग की गणना करें

  3. मैं पोस्टग्रेज के साथ अंतराल को कई घंटों में कैसे बदलूं?

  4. पायथन फॉर्म ड्रॉप डाउन विकल्प sql द्वारा पॉप्युलेट किया गया है

  5. PostgreSQL में क्रॉस डेटाबेस क्वेरी