डेटाबेस में टेबल्स को लिंक करना
मान लीजिए कि हमारे पास उपयोगकर्ताओं के नाम और उन शहरों की एक तालिका है जिनमें वे रहते हैं:
| 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 |
मान लीजिए आपको उत्पाद (नाम, कीमत, मात्रा) और इन उत्पादों की श्रेणियाँ संग्रहीत करनी हैं। संग्रहण संरचना लिखिए।
मान लीजिए आपको नदियाँ और वे समुद्र संग्रहीत करने हैं जिनमें ये नदियाँ गिरती हैं। संग्रहण संरचना लिखिए।
मान लीजिए आपको शहर और देश संग्रहीत करने हैं, जिनमें वे स्थित हैं। संग्रहण संरचना लिखिए।