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

क्या किसी अन्य तालिका में पंक्तियों से SQL परिणाम कॉलम का नाम देना संभव है? (पोस्टग्रेज)

यह एक मुख्य गलतफहमी . पर आधारित है Postgres और EAV डिज़ाइन की आंतरिक कार्यप्रणाली के बारे में ।

यदि आपके पास सैकड़ों अलग-अलग फ़ील्ड या विशेषता प्रकारों का डायनामिक सेट नहीं है, तो सभी स्तंभों वाली एकल तालिका का उपयोग करें - डेटाबेस सामान्यीकरण को छोड़कर . बिना मान वाले कॉलम NULL . से भरे हुए हैं .
शून्य संग्रहण बहुत सस्ता है , 1 बिट . पर कब्जा कर रहा है नल बिटमैप के लिए तालिका में प्रति कॉलम, आमतौर पर 64 कॉलम को कवर करने के लिए 8 बाइट्स की इकाइयों में आवंटित किया जाता है। देखें:

एकल . के लिए एक अलग पंक्ति अतिरिक्त विशेषता कम से कम में रहती है एक अतिरिक्त 36 बाइट्स

4  bytes item identifier
23 bytes heap tuple header
1  byte  padding
8  bytes minimum row data size

आमतौर पर अधिक, पैडिंग और अतिरिक्त ओवरहेड के कारण।

इस तरह के एक बोझिल ईएवी डिज़ाइन का भुगतान करने से पहले सैकड़ों अलग-अलग, कम आबादी वाले कॉलम होने चाहिए - और hstore या jsonb Postgres 9.4 में कि . के लिए बेहतर समाधान होगा . आपके डिज़ाइन और अगर . के बीच में शायद ही कोई जगह हो वहाँ था, आप शायद एक enum प्रकार के लिए।

साथ ही, प्रश्न अधिक जटिल और महंगे हैं। हम यहां एक तंग जगह पर हैं।

इसके बजाय इस तरह के टेबल लेआउट का उपयोग करें:

CREATE TABLE users (
   users_id serial PRIMARY KEY
 , salutation text
 , given_name text
 , surname text
 , alias text
 ... (many) more columns
);

CREATE TABLE address (
   address_id serial PRIMARY KEY
 , users_id int REFERENCES users
 , city text  -- or separate TABLE city incl region_id etc. ...
 , region_id int REFERENCES region
 , address  text
 ... (many) more columns
);

अधिक सलाह के साथ निकट से संबंधित उत्तर:



  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. 2019 PostgreSQL रुझान रिपोर्ट:निजी बनाम सार्वजनिक क्लाउड, माइग्रेशन, डेटाबेस संयोजन और उपयोग किए जाने वाले शीर्ष कारण

  3. PostgreSQL प्रदर्शन ट्यूनिंग युक्तियाँ

  4. JPA 2.1 PostgreSQL और REF_CURSORs के साथ StoredProcedureQuery

  5. Docker . में Postgres कंटेनर को प्रारंभ और पॉप्युलेट करना