পাইথনে ডাটাবেস টেবিল লিঙ্ক করা
ধরুন আমাদের কাছে ব্যবহারকারীর নাম এবং তারা যে শহরে বাস করে তার একটি টেবিল আছে:
| 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 |
ব্যবহারিক কাজ
ধরুন আপনাকে পণ্য (নাম, দাম, পরিমাণ) এবং এই পণ্যগুলির বিভাগ সংরক্ষণ করতে হবে। স্টোরেজ স্ট্রাকচার লিখুন।
ধরুন আপনাকে নদী এবং সেই সমুদ্রগুলি সংরক্ষণ করতে হবে যেখানে এই নদীগুলি প্রবাহিত হয়। স্টোরেজ স্ট্রাকচার লিখুন।
ধরুন আপনাকে শহর এবং সেই দেশগুলি সংরক্ষণ করতে হবে যেখানে তারা অবস্থিত। স্টোরেজ স্ট্রাকচার লিখুন।