TinyDB তে Multiple Tables ব্যবহার

টাইনিডিবি (TinyDB) - Database Tutorials

379

TinyDB-তে Multiple Tables ব্যবহারের মাধ্যমে আপনি একাধিক ধরনের ডেটা আলাদাভাবে সংরক্ষণ করতে পারেন। প্রতিটি টেবিল আলাদা নামের অধীনে তৈরি হয় এবং সেগুলো আলাদাভাবে পরিচালনা করা যায়।


Multiple Tables তৈরি ও ব্যবহারের ধাপ

ধাপ ১: টেবিল তৈরি করা

TinyDB-তে টেবিল তৈরি করতে table() মেথড ব্যবহার করা হয়। আপনি যেকোনো নাম দিয়ে একটি টেবিল তৈরি করতে পারেন।

from tinydb import TinyDB

# ডেটাবেস তৈরি
db = TinyDB('db.json')

# 'students' টেবিল তৈরি
students_table = db.table('students')

# 'teachers' টেবিল তৈরি
teachers_table = db.table('teachers')

ধাপ ২: ডেটা যোগ করা

প্রতিটি টেবিলে আলাদাভাবে ডেটা যোগ করা যায়:

# Students টেবিলে ডেটা যোগ করা
students_table.insert({'name': 'Amina', 'age': 20, 'subject': 'Math'})
students_table.insert({'name': 'Hasan', 'age': 22, 'subject': 'Physics'})

# Teachers টেবিলে ডেটা যোগ করা
teachers_table.insert({'name': 'Dr. Alam', 'age': 45, 'subject': 'Biology'})
teachers_table.insert({'name': 'Ms. Rahima', 'age': 35, 'subject': 'Chemistry'})

ধাপ ৩: ডেটা পড়া

প্রতিটি টেবিলের ডেটা আলাদাভাবে দেখা যায়:

# Students টেবিলের ডেটা দেখা
print('Students:', students_table.all())

# Teachers টেবিলের ডেটা দেখা
print('Teachers:', teachers_table.all())

ধাপ ৪: নির্দিষ্ট টেবিল থেকে ডেটা আপডেট করা

একটি নির্দিষ্ট টেবিল থেকে ডেটা আপডেট করতে update() মেথড ব্যবহার করা হয়:

from tinydb import Query

# Students টেবিলের ডেটা আপডেট
Student = Query()
students_table.update({'age': 21}, Student.name == 'Amina')

ধাপ ৫: নির্দিষ্ট টেবিল থেকে ডেটা মুছে ফেলা

একটি নির্দিষ্ট টেবিল থেকে ডেটা মুছে ফেলার জন্য remove() মেথড ব্যবহার করা হয়:

# Teachers টেবিলের ডেটা মুছে ফেলা
Teacher = Query()
teachers_table.remove(Teacher.name == 'Dr. Alam')

ধাপ ৬: টেবিল খালি করা

কোনো টেবিলের সব ডেটা মুছে ফেলার জন্য clear() মেথড ব্যবহার করা হয়:

# Students টেবিল খালি করা
students_table.clear()

উদাহরণ: Multiple Tables

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# টেবিল তৈরি
students_table = db.table('students')
teachers_table = db.table('teachers')

# Students টেবিলে ডেটা যোগ
students_table.insert({'name': 'Amina', 'age': 20, 'subject': 'Math'})
students_table.insert({'name': 'Hasan', 'age': 22, 'subject': 'Physics'})

# Teachers টেবিলে ডেটা যোগ
teachers_table.insert({'name': 'Dr. Alam', 'age': 45, 'subject': 'Biology'})
teachers_table.insert({'name': 'Ms. Rahima', 'age': 35, 'subject': 'Chemistry'})

# Students টেবিলের ডেটা দেখা
print('Students Table:', students_table.all())

# Teachers টেবিলের ডেটা দেখা
print('Teachers Table:', teachers_table.all())

# Students টেবিল থেকে ডেটা আপডেট
Student = Query()
students_table.update({'age': 21}, Student.name == 'Amina')

# Teachers টেবিল থেকে ডেটা মুছে ফেলা
Teacher = Query()
teachers_table.remove(Teacher.name == 'Dr. Alam')

# আপডেট এবং মুছে ফেলার পর টেবিল দেখুন
print('Updated Students Table:', students_table.all())
print('Updated Teachers Table:', teachers_table.all())

সারাংশ

  • Multiple Tables ব্যবহারে সুবিধা:
    একাধিক ডেটা স্ট্রাকচার বা ক্যাটাগরি আলাদা আলাদা টেবিলে সংরক্ষণ করা যায়।
  • টেবিল তৈরি: db.table('table_name') ব্যবহার করে।
  • ডেটা যোগ: প্রতিটি টেবিলে আলাদাভাবে insert() ব্যবহার করে।
  • ডেটা পড়া, আপডেট ও মুছে ফেলা: প্রতিটি টেবিলের জন্য আলাদা মেথড প্রয়োগ করা হয়।
  • টেবিল খালি করা: clear() ব্যবহার করে।

TinyDB-তে Multiple Tables ব্যবহার সহজ এবং কার্যকর, যা ডেটা ম্যানেজমেন্টকে আরও সুসংগঠিত করে।

Content added By

TinyDB তে একাধিক টেবিল তৈরি করা এবং সেগুলোর ডেটা পরিচালনা করা খুবই সহজ। প্রতিটি টেবিলকে আলাদাভাবে হ্যান্ডেল করা যায়, এবং একই ডেটাবেস ফাইলে একাধিক টেবিল রাখা সম্ভব।


একাধিক টেবিল তৈরি করার ধাপ

১. TinyDB এবং প্রয়োজনীয় মডিউল আমদানি করা

from tinydb import TinyDB

# ডাটাবেস তৈরি করা
db = TinyDB('database.json')

২. টেবিল তৈরি করা

TinyDB-এর table() মেথড ব্যবহার করে একাধিক টেবিল তৈরি করা যায়।

# Users টেবিল তৈরি করা
users_table = db.table('users')

# Products টেবিল তৈরি করা
products_table = db.table('products')

এখানে users এবং products নামে দুটি টেবিল তৈরি করা হয়েছে।


একাধিক টেবিলে ডেটা যোগ করা

টেবিল তৈরি করার পরে, প্রতিটি টেবিলে ডেটা যোগ করা যায়।

# Users টেবিলে ডেটা যোগ করা
users_table.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
users_table.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})

# Products টেবিলে ডেটা যোগ করা
products_table.insert({'product': 'Laptop', 'price': 50000})
products_table.insert({'product': 'Phone', 'price': 20000})

টেবিলের ডেটা পড়া

all() মেথড ব্যবহার করে প্রতিটি টেবিলের ডেটা পড়া সম্ভব।

# Users টেবিলের ডেটা
print("Users টেবিল:", users_table.all())

# Products টেবিলের ডেটা
print("Products টেবিল:", products_table.all())

টেবিল থেকে নির্দিষ্ট ডেটা অনুসন্ধান

Query মডিউল ব্যবহার করে টেবিল থেকে নির্দিষ্ট ডেটা অনুসন্ধান করা যায়।

from tinydb import Query

User = Query()

# Users টেবিল থেকে নির্দিষ্ট ব্যবহারকারী অনুসন্ধান
user_data = users_table.search(User.name == 'Rahim')
print("Rahim এর তথ্য:", user_data)

Product = Query()

# Products টেবিল থেকে নির্দিষ্ট পণ্যের তথ্য অনুসন্ধান
product_data = products_table.search(Product.product == 'Phone')
print("Phone এর তথ্য:", product_data)

টেবিলের ডেটা আপডেট করা

update() মেথড ব্যবহার করে ডেটা আপডেট করা যায়।

# Users টেবিলে ডেটা আপডেট করা
users_table.update({'age': 31}, User.name == 'Rahim')

# Products টেবিলে ডেটা আপডেট করা
products_table.update({'price': 45000}, Product.product == 'Laptop')

টেবিল থেকে ডেটা মুছে ফেলা

remove() মেথড ব্যবহার করে টেবিল থেকে ডেটা মুছে ফেলা যায়।

# Users টেবিল থেকে ডেটা মুছে ফেলা
users_table.remove(User.name == 'Karim')

# Products টেবিল থেকে ডেটা মুছে ফেলা
products_table.remove(Product.product == 'Phone')

সমস্ত টেবিলের নাম দেখা

TinyDB-তে ডেটাবেসের সমস্ত টেবিলের নাম দেখতে tables() মেথড ব্যবহার করা হয়।

print("ডাটাবেসে থাকা টেবিলের নাম:", db.tables())

ডাটাবেস বন্ধ করা

TinyDB ব্যবহারের পরে ডেটাবেস ফাইলটি বন্ধ করা উচিত।

db.close()

সারাংশ

TinyDB তে একাধিক টেবিল তৈরি এবং ম্যানেজমেন্ট সহজ। প্রতিটি টেবিল আলাদাভাবে ডেটা সংরক্ষণ, আপডেট এবং মুছে ফেলার সুযোগ দেয়। এটি ছোট স্কেল অ্যাপ্লিকেশনের জন্য একটি কার্যকর ডাটাবেস সমাধান।

Content added By

TinyDB-তে টেবিল অ্যাক্সেস এবং কুয়েরি এক্সিকিউশন খুবই সহজ এবং সরল। এর জন্য table() মেথড এবং Query ক্লাস ব্যবহার করা হয়। প্রতিটি টেবিল JSON ফাইলের একটি অংশ হিসেবে কাজ করে এবং ডেটার উপর কার্যকর কুয়েরি চালানো যায়।


টেবিল অ্যাক্সেস (Table Access)

TinyDB-তে ডিফল্ট টেবিল ছাড়াও কাস্টম টেবিল তৈরি করা যায়। টেবিল অ্যাক্সেস করার জন্য .table() মেথড ব্যবহার করা হয়।

উদাহরণ: টেবিল তৈরি এবং অ্যাক্সেস

from tinydb import TinyDB

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# ডিফল্ট টেবিল ব্যবহার
default_table = db.default_table_name  # '_default'

# কাস্টম টেবিল তৈরি এবং অ্যাক্সেস
users_table = db.table('users')
products_table = db.table('products')

# ডেটা যোগ করা
users_table.insert({'name': 'Rahim', 'age': 30})
products_table.insert({'name': 'Laptop', 'price': 50000})

# টেবিলের ডেটা দেখতে
print(users_table.all())  # [{'name': 'Rahim', 'age': 30}]
print(products_table.all())  # [{'name': 'Laptop', 'price': 50000}]

কুয়েরি এক্সিকিউশন (Query Execution)

TinyDB-তে কুয়েরি চালানোর জন্য Query ক্লাস ব্যবহার করা হয়। এতে বিভিন্ন শর্ত যোগ করে ডেটা ফিল্টার করা যায়।

উদাহরণ: কুয়েরি তৈরি এবং এক্সিকিউট করা

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি এবং টেবিল অ্যাক্সেস
db = TinyDB('db.json')
users_table = db.table('users')

# Query ক্লাস ব্যবহার করে শর্ত তৈরি
User = Query()

# ডেটা অনুসন্ধান (Search)
result = users_table.search(User.name == 'Rahim')
print(result)  # [{'name': 'Rahim', 'age': 30}]

# ডেটা আপডেট (Update)
users_table.update({'age': 35}, User.name == 'Rahim')

# ডেটা মুছে ফেলা (Remove)
users_table.remove(User.age < 20)

# সব ডেটা দেখতে
print(users_table.all())

কুয়েরি এক্সিকিউশনের বিভিন্ন অপশন

১. Search (ডেটা অনুসন্ধান): কুয়েরি অনুযায়ী ডেটা অনুসন্ধান করতে .search() মেথড ব্যবহার করা হয়। এটি ডেটার তালিকা প্রদান করে।

users_table.search(User.age > 25)

২. Get (একটি নির্দিষ্ট রেকর্ড পেতে): ডেটার মধ্যে একটি মাত্র রেকর্ড পেতে .get() মেথড ব্যবহার করা হয়।

users_table.get(User.name == 'Rahim')

৩. Update (ডেটা আপডেট): এক বা একাধিক রেকর্ড আপডেট করতে .update() মেথড ব্যবহার করা হয়।

users_table.update({'city': 'Dhaka'}, User.name == 'Rahim')

৪. Remove (ডেটা মুছে ফেলা): শর্ত অনুযায়ী ডেটা মুছে ফেলার জন্য .remove() মেথড ব্যবহার করা হয়।

users_table.remove(User.age > 40)

৫. Count (ডেটা গণনা): ডেটার সংখ্যা গণনার জন্য .count() ব্যবহার করা হয়।

users_table.count(User.age > 25)

Table Management Tips

  • ডিফল্ট টেবিল: _default নামে একটি ডিফল্ট টেবিল সবসময় থাকে।
  • কাস্টম টেবিল ব্যবহার করুন: প্রজেক্টের ডেটা সেগ্রিগেশন সহজ করার জন্য কাস্টম টেবিল ব্যবহার করা উত্তম।
  • Query ক্লাস ব্যবহার: কুয়েরি সহজ এবং দ্রুত করার জন্য Query ক্লাস ব্যবহার করুন।

সারাংশ

TinyDB-তে টেবিল অ্যাক্সেস এবং কুয়েরি এক্সিকিউশন সহজ এবং ব্যবহারবান্ধব। .table() মেথড দিয়ে কাস্টম টেবিল তৈরি এবং Query ক্লাস দিয়ে শর্ত অনুযায়ী ডেটা পরিচালনা করা যায়। এটি ছোট ও মাঝারি স্কেলের ডাটাবেস ব্যবস্থাপনার জন্য অত্যন্ত কার্যকর।

Content added By

TinyDB মূলত একটি NoSQL ডাটাবেস, যেখানে ডেটাবেসের ডেটা JSON ফাইল আকারে সংরক্ষণ করা হয়। এটি সরাসরি রিলেশনাল ডাটাবেসের মতো Foreign Key বা Direct Relation সমর্থন করে না। তবে, কিছু নির্দিষ্ট কৌশল ব্যবহার করে TinyDB তে টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করা যায়।

নিচে টেবিলগুলোর মধ্যে ডেটা সম্পর্ক তৈরি করার জন্য একটি কার্যকর পদ্ধতি এবং তার উদাহরণ আলোচনা করা হলো।


TinyDB তে Relation তৈরির পদ্ধতি

১. Foreign Key অনুকরণ করা

একটি টেবিলের ডেটার মধ্যে অন্য একটি টেবিলের Unique Identifier (ID) সংরক্ষণ করে সম্পর্ক তৈরি করা যায়।

২. টেবিল আইডি ব্যবহার

প্রত্যেক টেবিলের জন্য একটি ইউনিক ID ফিল্ড ব্যবহার করা হয়, যা অন্য টেবিলের মধ্যে Reference হিসেবে ব্যবহৃত হয়।

৩. ডেটা ফিল্টারিং এবং Query

TinyDB এর Query API ব্যবহার করে সম্পর্কিত ডেটা ফিল্টার করা এবং প্রয়োজন অনুযায়ী ফলাফল পাওয়া যায়।


উদাহরণ: TinyDB তে টেবিল সম্পর্ক তৈরি

ধাপ ১: টেবিল তৈরি

from tinydb import TinyDB

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# টেবিল তৈরি
users_table = db.table('users')
orders_table = db.table('orders')

ধাপ ২: টেবিলে ডেটা যোগ

Users Table
# Users টেবিলে ডেটা যোগ
users_table.insert({'id': 1, 'name': 'Rahim', 'email': 'rahim@example.com'})
users_table.insert({'id': 2, 'name': 'Karim', 'email': 'karim@example.com'})
Orders Table
# Orders টেবিলে ডেটা যোগ (User ID ব্যবহার করে সম্পর্ক তৈরি)
orders_table.insert({'order_id': 101, 'user_id': 1, 'product': 'Laptop', 'amount': 55000})
orders_table.insert({'order_id': 102, 'user_id': 2, 'product': 'Phone', 'amount': 25000})
orders_table.insert({'order_id': 103, 'user_id': 1, 'product': 'Tablet', 'amount': 30000})

ধাপ ৩: সম্পর্কিত ডেটা অনুসন্ধান

User এর Order খুঁজে বের করা
from tinydb import Query

# Query তৈরি
Order = Query()

# নির্দিষ্ট User (Rahim) এর Order খুঁজে বের করা
user_orders = orders_table.search(Order.user_id == 1)

print(user_orders)
আউটপুট:
[
    {'order_id': 101, 'user_id': 1, 'product': 'Laptop', 'amount': 55000},
    {'order_id': 103, 'user_id': 1, 'product': 'Tablet', 'amount': 30000}
]

User Details সহ Orders দেখানো
# User এবং তার Orders একসঙ্গে দেখানো
for order in user_orders:
    user = users_table.get(Query().id == order['user_id'])
    print(f"User: {user['name']}, Product: {order['product']}, Amount: {order['amount']}")
আউটপুট:
User: Rahim, Product: Laptop, Amount: 55000
User: Rahim, Product: Tablet, Amount: 30000

সম্পর্ক ব্যবস্থাপনার সেরা চর্চা

  1. Unique ID ব্যবহার করুন: প্রতিটি টেবিলের জন্য একটি Unique Identifier রাখতে হবে।
  2. Query API ব্যবহার করুন: TinyDB এর ফিল্টারিং ক্ষমতা ব্যবহার করে সম্পর্কিত ডেটা অনুসন্ধান করুন।
  3. ডেটা ভ্যালিডেশন করুন: Insert করার সময় নিশ্চিত করুন যে সম্পর্কিত টেবিলের ID বিদ্যমান আছে।
  4. Indexing ব্যবহার করুন: দ্রুত অনুসন্ধানের জন্য প্রয়োজনীয় ক্ষেত্রে Index তৈরি করুন।

সীমাবদ্ধতা

  • TinyDB সরাসরি Foreign Key সমর্থন করে না।
  • জটিল Relationship ব্যবস্থাপনার জন্য TinyDB সীমাবদ্ধ।
  • বড় আকারের ডেটাবেস বা জটিল Query গুলোতে কার্যকারিতা কম।

সারাংশ

TinyDB তে সরাসরি রিলেশনাল ডেটাবেসের মতো সম্পর্ক তৈরি সম্ভব না হলেও Unique ID এবং Query API ব্যবহার করে কার্যকর সম্পর্ক স্থাপন করা যায়। ছোট আকারের ডেটাবেস এবং সহজ সম্পর্ক ব্যবস্থাপনার জন্য এটি একটি কার্যকর সমাধান।

Content added By

TinyDB আপনাকে একই ডাটাবেসে Multiple Table ব্যবহারের সুযোগ দেয়। প্রতিটি টেবিল আলাদাভাবে ডেটা সংরক্ষণ করে এবং সেগুলো থেকে ডেটা ফেচ করার জন্য আলাদা মেথড ব্যবহার করা হয়। নিচে Multiple Table থেকে ডেটা ফেচ করার প্রক্রিয়া ব্যাখ্যা করা হয়েছে:


টেবিল তৈরি এবং ডেটা যোগ করা

from tinydb import TinyDB

# ডাটাবেস তৈরি
db = TinyDB('database.json')

# Multiple Table তৈরি করা
users_table = db.table('users')
orders_table = db.table('orders')

# Users টেবিলে ডেটা যোগ করা
users_table.insert({'id': 1, 'name': 'Rahim', 'age': 30})
users_table.insert({'id': 2, 'name': 'Karim', 'age': 25})

# Orders টেবিলে ডেটা যোগ করা
orders_table.insert({'order_id': 101, 'user_id': 1, 'product': 'Laptop'})
orders_table.insert({'order_id': 102, 'user_id': 2, 'product': 'Mobile'})

print("ডেটা সফলভাবে টেবিলে যোগ করা হয়েছে।")

Multiple Table থেকে Data Fetch করা

১. নির্দিষ্ট টেবিল থেকে সব ডেটা পড়া

# Users টেবিল থেকে সব ডেটা ফেচ করা
print("Users টেবিলের ডেটা:", users_table.all())

# Orders টেবিল থেকে সব ডেটা ফেচ করা
print("Orders টেবিলের ডেটা:", orders_table.all())

২. শর্ত অনুযায়ী নির্দিষ্ট টেবিল থেকে ডেটা ফেচ করা

from tinydb import Query

# Query ক্লাস তৈরি
User = Query()
Order = Query()

# Users টেবিল থেকে নির্দিষ্ট ডেটা
user_data = users_table.search(User.name == 'Rahim')
print("Rahim এর ডেটা:", user_data)

# Orders টেবিল থেকে নির্দিষ্ট ডেটা
order_data = orders_table.search(Order.user_id == 1)
print("User ID 1 এর অর্ডার:", order_data)

৩. Multiple Table এর ডেটা একত্রিত করা

TinyDB-তে Multiple Table-এর ডেটা একত্রিত করতে Python-এর লজিক ব্যবহার করতে হয়।

# Users এবং Orders টেবিল থেকে ডেটা ম্যানুয়ালি যোগ করা
for user in users_table:
    user_orders = orders_table.search(Order.user_id == user['id'])
    print(f"User: {user['name']} এর অর্ডার:", user_orders)

আউটপুট:

User: Rahim এর অর্ডার: [{'order_id': 101, 'user_id': 1, 'product': 'Laptop'}]
User: Karim এর অর্ডার: [{'order_id': 102, 'user_id': 2, 'product': 'Mobile'}]

সারাংশ

TinyDB-তে Multiple Table ব্যবহারের মাধ্যমে ডেটা ম্যানেজমেন্ট খুব সহজ এবং কার্যকর। আপনি আলাদা টেবিল থেকে ডেটা ফেচ করতে পারেন এবং প্রয়োজনে Python লজিক ব্যবহার করে সেগুলো একত্রিত করতে পারবেন। এটি ছোট ও মাঝারি আকারের ডাটাবেসের জন্য আদর্শ সমাধান।

Content added By
Promotion

Are you sure to start over?

Loading...