पायथन में डेटाबेस टेबल लिंकिंग

मान लीजिए कि हमारे पास उपयोगकर्ताओं के नाम और उन शहरों की एक तालिका है जिनमें वे रहते हैं:

users
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 होगा, जो उपयोगकर्ता के शहर को संदर्भित करेगा।

तो, आइए दो तालिकाएँ बनाएं। शहरों वाली तालिका:

cities
id name
1 city1
2 city2
3 city3

उपयोगकर्ताओं वाली तालिका:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

व्यावहारिक कार्य

Задание 1

मान लीजिए आपको उत्पाद (नाम, मूल्य, मात्रा) और इन उत्पादों की श्रेणियाँ संग्रहीत करनी हैं। भंडारण संरचना लिखें।

Задание 2

मान लीजिए आपको नदियाँ और समुद्र संग्रहीत करने हैं, जिनमें ये नदियाँ गिरती हैं। भंडारण संरचना लिखें।

Задание 3

मान लीजिए आपको शहर और देश संग्रहीत करने हैं, जिनमें वे स्थित हैं। भंडारण संरचना लिखें।