पायथन में डेटाबेस टेबल लिंकिंग
मान लीजिए कि हमारे पास उपयोगकर्ताओं के नाम और उन शहरों की एक तालिका है जिनमें वे रहते हैं:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
इस तालिका का नुकसान यह है कि एक ही शहर विभिन्न उपयोगकर्ताओं के लिए कई बार दोहराया जाता है। इससे कुछ समस्याएं उत्पन्न होती हैं।
सबसे पहले, लगातार दोहराव के कारण डेटाबेस बहुत अधिक जगह लेने लगता है।
दूसरे, शहरों के साथ ऑपरेशन करना काफी असुविधाजनक है। उदाहरण के लिए, हम चाहते हैं कि सभी शहरों की सूची स्क्रीन पर दिखाई जाए। इतनी आसानी से ऐसा करना संभव नहीं होगा। हमें उनके शहरों के साथ सभी उपयोगकर्ताओं को प्राप्त करना होगा, फिर प्राप्त शहरों से डुप्लिकेट हटाने होंगे और तभी हमें यह सूची मिल पाएगी।
और अब कल्पना करें कि डेटाबेस में 10000
उपयोगकर्ता 10 शहरों से हैं - इन
10 शहरों के लिए हमें पंक्तियों की एक विशाल
संख्या वाली पूरी तालिका निकालनी होगी -
यह बहुत धीमा ऑपरेशन होगा जिसमें
संसाधनों की व्यर्थ बर्बादी होगी।
समस्या का समाधान
हमें अपनी तालिका को दो में विभाजित करने की आवश्यकता है: एक में
शहर संग्रहीत होंगे, और दूसरे में - उपयोगकर्ता।
इसके अलावा, उपयोगकर्ताओं वाली तालिका में एक कॉलम
city_id होगा, जो उपयोगकर्ता के शहर को संदर्भित
करेगा।
तो, आइए दो तालिकाएँ बनाएं। शहरों वाली तालिका:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
उपयोगकर्ताओं वाली तालिका:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
व्यावहारिक कार्य
मान लीजिए आपको उत्पाद (नाम, मूल्य, मात्रा) और इन उत्पादों की श्रेणियाँ संग्रहीत करनी हैं। भंडारण संरचना लिखें।
मान लीजिए आपको नदियाँ और समुद्र संग्रहीत करने हैं, जिनमें ये नदियाँ गिरती हैं। भंडारण संरचना लिखें।
मान लीजिए आपको शहर और देश संग्रहीत करने हैं, जिनमें वे स्थित हैं। भंडारण संरचना लिखें।