পাইথনে ডাটাবেস টেবিল লিঙ্ক করা

ধরুন আমাদের কাছে ব্যবহারকারীর নাম এবং তারা যে শহরে বাস করে তার একটি টেবিল আছে:

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

ধরুন আপনাকে শহর এবং সেই দেশগুলি সংরক্ষণ করতে হবে যেখানে তারা অবস্থিত। স্টোরেজ স্ট্রাকচার লিখুন।