Database Schema Rails অ্যাপ্লিকেশনের ডেটাবেস কাঠামোকে নির্দেশ করে, যা ডেটাবেসের টেবিল, কলাম এবং তাদের সম্পর্কের ধারণা দেয়। Rails অ্যাপ্লিকেশন তৈরি করার সময় ডেটাবেসের কাঠামো (Schema) সংরক্ষিত হয় এবং মাইগ্রেশন (Migration) এর মাধ্যমে এটি পরিবর্তন করা হয়। মাইগ্রেশন একটি ডেটাবেস কাঠামো পরিবর্তন করার প্রক্রিয়া, যা অ্যাপ্লিকেশন কোডের অংশ হিসেবে ডেটাবেসের টেবিল তৈরি, পরিবর্তন বা মুছে ফেলতে ব্যবহৃত হয়।
Database Schema কী?
Database Schema হল একটি ডেটাবেসের সংগঠন, যেখানে টেবিল, কলাম, রিলেশন এবং অন্যান্য স্ট্রাকচারাল উপাদান গুলি সংজ্ঞায়িত হয়। Rails এ, Schema সাধারণত db/schema.rb ফাইলে সংরক্ষিত থাকে, যেখানে ডেটাবেসের সম্পূর্ণ কাঠামো সম্পর্কিত তথ্য পাওয়া যায়।
Database Schema তৈরি এবং পরিবর্তন করার জন্য মাইগ্রেশন ব্যবহার
Rails-এ ডেটাবেস স্কিমা তৈরি এবং পরিবর্তন করতে Migration ব্যবহৃত হয়। মাইগ্রেশন হলো একটি ফাইল, যা ডেটাবেসের কাঠামো পরিবর্তন করার জন্য রান করা হয়।
ধাপ ১: মাইগ্রেশন ফাইল তৈরি করা
আপনি মাইগ্রেশন ফাইল তৈরি করার জন্য rails generate migration কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনাকে users টেবিলে age নামক একটি নতুন কলাম যোগ করতে হয়, তাহলে:
rails generate migration AddAgeToUsers age:integer
এই কমান্ডটি একটি মাইগ্রেশন ফাইল তৈরি করবে, যার মাধ্যমে users টেবিলের মধ্যে age নামক একটি integer ধরনের কলাম যোগ করা হবে।
ধাপ ২: মাইগ্রেশন রান করা
একবার মাইগ্রেশন ফাইল তৈরি হয়ে গেলে, তা চালানোর জন্য rails db:migrate কমান্ড ব্যবহার করা হয়। এটি মাইগ্রেশন ফাইলটি ডেটাবেসে প্রয়োগ করবে।
rails db:migrate
এই কমান্ডটি ডেটাবেসের স্কিমা আপডেট করবে এবং প্রয়োজনীয় টেবিল বা কলাম তৈরি করবে।
ধাপ ৩: মাইগ্রেশন ফাইলের উদাহরণ
মাইগ্রেশন ফাইলটি সাধারণত db/migrate/ ফোল্ডারে থাকে এবং তার নাম সাধারণত একটি টাইমস্ট্যাম্প দ্বারা শুরু হয়, যেমন:
class AddAgeToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :age, :integer
end
end
এখানে:
- add_column মেথডটি
usersটেবিলে একটি নতুনageনামক কলাম যোগ করে, যার ধরনinteger। changeমেথডটি মাইগ্রেশন ফাইলে ডিফল্ট হিসেবে ব্যবহৃত হয়, যেটি স্বয়ংক্রিয়ভাবে ইনভার্সযোগ্য (reversible) কাজ করে। অর্থাৎ, এই মেথডটির মাধ্যমে আপনি রোলব্যাক (rollback) করতে পারবেন।
ধাপ ৪: মাইগ্রেশন রোলব্যাক করা
যদি কোনো মাইগ্রেশন ভুলভাবে প্রয়োগ হয়ে থাকে এবং আপনি তা বাতিল করতে চান, তবে rails db:rollback কমান্ড ব্যবহার করতে পারেন। এটি পূর্বের মাইগ্রেশনটি রিভার্স (rollback) করবে।
rails db:rollback
এটি শেষ করা হলে, ডেটাবেস থেকে সংশ্লিষ্ট কলাম বা টেবিল মুছে দেওয়া হবে।
বিভিন্ন ধরনের মাইগ্রেশন অপারেশন
Rails মাইগ্রেশন ফাইলের মাধ্যমে বিভিন্ন ধরনের ডেটাবেস অপারেশন করা যায়, যেমন টেবিল তৈরি, কলাম যোগ বা মুছে ফেলা, ইনডেক্স তৈরি, ইত্যাদি।
১. টেবিল তৈরি করা (Create Table)
নতুন টেবিল তৈরি করার জন্য create_table মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি posts টেবিল তৈরি করতে:
class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts do |t|
t.string :title
t.text :content
t.integer :user_id
t.timestamps
end
end
end
এটি একটি posts টেবিল তৈরি করবে, যেখানে title, content, user_id এবং timestamps কলাম থাকবে।
২. কলাম পরিবর্তন (Add Column)
যদি একটি টেবিলে নতুন কলাম যোগ করতে চান, তাহলে add_column মেথড ব্যবহার করা হয়। যেমন:
class AddStatusToPosts < ActiveRecord::Migration[6.0]
def change
add_column :posts, :status, :string
end
end
এটি posts টেবিলে একটি status নামক নতুন স্ট্রিং কলাম যোগ করবে।
৩. কলাম মুছে ফেলা (Remove Column)
যদি কোনো কলাম মুছে ফেলতে চান, তাহলে remove_column মেথড ব্যবহার করা হয়:
class RemoveStatusFromPosts < ActiveRecord::Migration[6.0]
def change
remove_column :posts, :status
end
end
এটি posts টেবিল থেকে status কলামটি মুছে ফেলবে।
৪. ইনডেক্স তৈরি করা (Add Index)
ডেটাবেসের পারফরম্যান্স বৃদ্ধি করতে কলামের উপর ইনডেক্স তৈরি করা হয়। উদাহরণ:
class AddIndexToPosts < ActiveRecord::Migration[6.0]
def change
add_index :posts, :user_id
end
end
এটি posts টেবিলের user_id কলামের উপর একটি ইনডেক্স তৈরি করবে, যা অনুসন্ধানের গতি বৃদ্ধি করবে।
Schema.rb ফাইল
মাইগ্রেশন সম্পাদন করার পর, schema.rb ফাইলটি db/ ডিরেক্টরির মধ্যে স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়। এটি ডেটাবেসের সম্পূর্ণ কাঠামো বা স্কিমা ধারণ করে এবং ডেটাবেসের কাঠামোর সম্পর্কে সংক্ষিপ্ত বিবরণ প্রদান করে।
উদাহরণ:
ActiveRecord::Schema.define(version: 20231208030512) do
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.integer "age"
t.timestamps
end
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "content"
t.integer "user_id"
t.timestamps
end
end
এটি ডেটাবেসের টেবিলগুলির কাঠামো, কলাম, ইনডেক্স এবং টাইমস্ট্যাম্প সম্পর্কে তথ্য প্রদান করে।
সারমর্ম
Ruby on Rails-এ Database Schema তৈরি এবং পরিবর্তন করার জন্য Migration ব্যবহৃত হয়। মাইগ্রেশন ফাইলের মাধ্যমে আপনি ডেটাবেসের টেবিল তৈরি, কলাম যোগ, ইনডেক্স তৈরি এবং কলাম মুছে ফেলার মতো অপারেশন করতে পারেন। মাইগ্রেশন একটি সহজ এবং কার্যকরী উপায়, যা ডেটাবেসের কাঠামো পরিবর্তন করতে সহায়তা করে এবং কোডের সাথে ডেটাবেস কাঠামো একত্রিত রাখে।
Read more