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

क्लोनिंग पदानुक्रमित डेटा

इस परिणाम को पुनरावर्ती रूप से खींचना मुश्किल है (हालांकि संभव है)। हालांकि, यह आमतौर पर बहुत कुशल नहीं होता है और इसमें बहुत होता है इस समस्या को हल करने का बेहतर तरीका।

मूल रूप से, आप तालिका को एक अतिरिक्त कॉलम के साथ बढ़ाते हैं जो पेड़ को शीर्ष पर रखता है - मैं इसे "अपचैन" कहूंगा। यह सिर्फ एक लंबी स्ट्रिंग है जो कुछ इस तरह दिखती है:

name | id | parent_id | upchain
root1 | 1 | NULL | 1:
root2 | 2 | NULL | 2:
root1sub1 | 3 | 1 | 1:3:
root1sub2 | 4 | 1 | 1:4:
root2sub1 | 5 | 2 | 2:5:
root2sub2 | 6 | 2 | 2:6:
root1sub1sub1 | 7 | 3 | 1:3:7:

टेबल पर ट्रिगर का उपयोग करके इस फ़ील्ड को अपडेट रखना बहुत आसान है। (शब्दावली के लिए क्षमा याचना लेकिन मैंने हमेशा SQL सर्वर के साथ ऐसा किया है)। हर बार जब आप कोई रिकॉर्ड जोड़ते हैं या हटाते हैं, या parent_id फ़ील्ड को अपडेट करते हैं, तो आपको पेड़ के उस हिस्से पर अपचेन फ़ील्ड को अपडेट करना होगा। यह एक मामूली काम है क्योंकि आप केवल मूल रिकॉर्ड की श्रृंखला लेते हैं और वर्तमान रिकॉर्ड की आईडी जोड़ते हैं। सभी चाइल्ड रिकॉर्ड आसानी से LIKE का उपयोग करके उनके अपचेन में शुरुआती स्ट्रिंग के साथ रिकॉर्ड की जांच करने के लिए पहचाने जाते हैं।

आप जो प्रभावी ढंग से कर रहे हैं वह बड़ी . के लिए कुछ अतिरिक्त लेखन गतिविधि का व्यापार कर रहा है जब आप डेटा पढ़ने के लिए आते हैं तो बचत होती है।

जब आप पेड़ में एक पूरी शाखा का चयन करना चाहते हैं तो यह छोटा होता है। मान लीजिए कि आप नोड 1 के तहत शाखा चाहते हैं। नोड 1 में एक अपचैन '1:' है, इसलिए आप जानते हैं कि उस नोड के नीचे पेड़ की शाखा में किसी भी नोड में '1:...' से शुरू होने वाला एक अपचैन होना चाहिए। तो आप बस यह करें:

SELECT *
FROM table
WHERE upchain LIKE '1:%'

यह बेहद है तेज (पाठ्यक्रम के अपचैन क्षेत्र को अनुक्रमित करें)। एक बोनस के रूप में यह बहुत सी गतिविधियों को भी बेहद सरल बनाता है, जैसे कि आंशिक पेड़ ढूंढना, पेड़ के भीतर का स्तर, आदि।

मैंने इसका उपयोग उन अनुप्रयोगों में किया है जो बड़े कर्मचारी रिपोर्टिंग पदानुक्रमों को ट्रैक करते हैं लेकिन आप इसे किसी भी पेड़ की संरचना (भागों के टूटने, आदि) के लिए उपयोग कर सकते हैं।

नोट्स (किसी भी व्यक्ति के लिए जो रुचि रखता है):

  • मैंने SQL कोड का चरण-दर-चरण विवरण नहीं दिया है, लेकिन एक बार जब आप सिद्धांत प्राप्त कर लेते हैं, तो इसे लागू करना बहुत आसान हो जाता है। मैं एक महान प्रोग्रामर नहीं हूं इसलिए मैं अनुभव से बोल रहा हूं।
  • यदि आपके पास पहले से ही तालिका में डेटा है, तो आपको शुरुआत में upchains को सिंक्रनाइज़ करने के लिए एक बार अपडेट करने की आवश्यकता है। फिर, यह मुश्किल नहीं है क्योंकि कोड ट्रिगर्स में अद्यतन कोड के समान है।
  • यह तकनीक वृत्ताकार संदर्भों की पहचान करने का भी एक अच्छा तरीका है जो अन्यथा पहचानना मुश्किल हो सकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubuntu पर pgAdmin का उपयोग करके Postgres को लोकलहोस्ट सर्वर से कैसे कनेक्ट करें?

  2. पोस्टग्रेएसक्यूएल सबक्वेरी लाइक . का उपयोग कर रहा है

  3. पांडा अद्यतन sql

  4. PostgreSQL में स्थानिक डेटा

  5. IDatabaseConnection (HSQLDB) के लिए डेटाबेस कॉन्फ़िगरेशन गुण सेट करने में त्रुटि