TypeORM: ডেটাটাইপস (Data Types) এবং কলাম অপশনস (Column Options)
TypeORM একটি শক্তিশালী ORM (Object-Relational Mapping) লাইব্রেরি যা TypeScript এবং JavaScript ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে। এটি ডেটাবেস মডেল তৈরি করার সময় বিভিন্ন ডেটাটাইপ এবং কলাম অপশন সরবরাহ করে, যা ডেটাবেসে তথ্য সঠিকভাবে সঞ্চয় এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
ডেটাবেস টেবিলের প্রতিটি কলামকে সঠিকভাবে সংজ্ঞায়িত করার জন্য আপনাকে Column Options ব্যবহার করতে হবে, যা সঠিক ডেটাটাইপ এবং অন্যান্য প্যারামিটার নির্ধারণে সহায়তা করবে। এখানে ডেটাটাইপস এবং কলাম অপশনস নিয়ে বিস্তারিত আলোচনা করা হবে।
১. ডেটাটাইপস (Data Types)
TypeORM বিভিন্ন ডেটাবেসে ব্যবহৃত বিভিন্ন ধরনের ডেটাটাইপ সমর্থন করে। নিচে কিছু প্রধান ডেটাটাইপ দেওয়া হলো:
১.১ String Types
varchar: স্ট্রিং ডেটা ধারণ করতে ব্যবহৃত হয়।@Column({ type: 'varchar', length: 255 }) name: string;text: দীর্ঘ স্ট্রিং ধারণ করার জন্য ব্যবহৃত হয়।@Column('text') description: string;
১.২ Number Types
int: পূর্ণসংখ্যা ধারণ করতে ব্যবহৃত হয়।@Column('int') age: number;float: দশমিক সংখ্যা ধারণ করতে ব্যবহৃত হয়।@Column('float') price: number;decimal: সঠিক দশমিক সংখ্যা ধারণ করতে ব্যবহৃত হয় (বিস্তারিত ফাইনান্সিয়াল হিসাবের জন্য)।@Column('decimal', { precision: 5, scale: 2 }) amount: number;
১.৩ Boolean Types
boolean: সত্য বা মিথ্যা (true/false) মান ধারণ করতে ব্যবহৃত হয়।@Column('boolean') isActive: boolean;
১.৪ Date/Time Types
date: শুধুমাত্র তারিখ ধারণ করে (দিন, মাস, বছর)।@Column('date') birthDate: Date;timestamp: তারিখ এবং সময় ধারণ করে।@Column('timestamp') createdAt: Date;time: শুধুমাত্র সময় ধারণ করে।@Column('time') eventTime: string;
১.৫ UUID
uuid: ইউনিভার্সালি ইউনিক আইডেন্টিফায়ার (UUID) ধারণ করতে ব্যবহৃত হয়।@PrimaryGeneratedColumn('uuid') id: string;
১.৬ Other Types
json: JSON ডেটা ধারণ করতে ব্যবহৃত হয়।@Column('json') preferences: object;jsonb: JSONB ডেটাবেস ফরম্যাটে ডেটা ধারণ করতে ব্যবহৃত হয় (PostgreSQL এ ব্যবহৃত হয়)।@Column('jsonb') settings: object;
২. Column Options
Column Options ব্যবহার করে আপনি প্রতিটি কলামের বৈশিষ্ট্য এবং কনফিগারেশন নির্ধারণ করতে পারেন। TypeORM আপনাকে অনেক ধরনের অপশন দেয়, যেমন nullable, default, unique, length ইত্যাদি।
২.১ nullable
এই অপশনটি নির্ধারণ করে যে কলামটির মান অবশ্যই থাকতে হবে কিনা।
@Column({ nullable: true }) address: string;এখানে,
addressকলামটি nullable (অর্থাৎ এটি শূন্যও থাকতে পারে)।
২.২ default
এই অপশনটি একটি কলামের জন্য ডিফল্ট মান নির্ধারণ করে।
@Column({ default: 0 }) views: number;এখানে,
viewsকলামটির ডিফল্ট মান 0 হবে।
২.৩ unique
এই অপশনটি কলামটিকে ইউনিক (অনন্য) করে তোলে, যাতে একই মান দুটি রেকর্ডে থাকতে না পারে।
@Column({ unique: true }) email: string;এখানে,
emailকলামটি ইউনিক হবে এবং একই ইমেইল দুটি রেকর্ডে থাকতে পারবে না।
২.৪ length
এই অপশনটি একটি স্ট্রিং কলামের সর্বোচ্চ দৈর্ঘ্য নির্ধারণ করে।
@Column({ type: 'varchar', length: 100 }) username: string;এখানে,
usernameকলামের সর্বোচ্চ দৈর্ঘ্য 100 চরিত্র।
২.৫ primary
এই অপশনটি কলামটিকে প্রাথমিক (primary) কিপ হিসাবে চিহ্নিত করে। এটি টেবিলের প্রতিটি রেকর্ডের জন্য একটি অনন্য শনাক্তকরণ (ID) প্রদান করে।
@PrimaryGeneratedColumn() id: number;
২.৬ index
এই অপশনটি কলামটির জন্য একটি ইনডেক্স তৈরি করে, যাতে দ্রুত অনুসন্ধান করা যায়।
@Column({ index: true }) username: string;এখানে,
usernameকলামে ইনডেক্স তৈরি হবে, যা অনুসন্ধান গতিকে বৃদ্ধি করবে।
২.৭ enum
এই অপশনটি কলামের জন্য একটি নির্দিষ্ট তালিকা প্রদান করে, যাতে শুধুমাত্র কিছু নির্দিষ্ট মান গ্রহণ করা যায়।
@Column({ type: 'enum', enum: ['active', 'inactive'] }) status: string;এখানে,
statusকলামটি শুধুমাত্র "active" বা "inactive" মান গ্রহণ করবে।
৩. Composite Keys (Multiple Columns as Primary Key)
TypeORM এ Composite Key সেট করার জন্য আপনি multiple columns কে প্রাথমিক কী হিসেবে চিহ্নিত করতে পারেন। এটি বেশিরভাগ সময় ব্যবহার করা হয় যখন একটি কলাম এককভাবে আইডেন্টিফিকেশন দেয় না এবং দুই বা ততোধিক কলামের সমন্বয়ে একটি ইউনিক আইডেন্টিফিকেশন তৈরি করা হয়।
@Entity()
@PrimaryKeyColumn('composite')
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
username: string;
@Column()
email: string;
@PrimaryColumn()
username_email: string;
}
এখানে, username এবং email কলামগুলোকে প্রাথমিক কী হিসেবে ব্যবহার করা হচ্ছে, যা উভয়ের সংমিশ্রণ দিয়ে একটি ইউনিক কী তৈরি করা হচ্ছে।
সারাংশ
TypeORM এর ডেটাটাইপস এবং কলাম অপশনস ডেটাবেস মডেলিং এবং ডেটাবেস অপারেশনকে সহজ এবং কার্যকরী করে। বিভিন্ন ডেটাটাইপ যেমন varchar, int, boolean, timestamp, json, uuid ইত্যাদি TypeORM এ সমর্থিত রয়েছে এবং কলাম অপশনগুলো যেমন nullable, default, unique, length, primary ইত্যাদি আপনাকে ডেটাবেসের কাঠামো নির্ধারণে সহায়তা করে। TypeORM এর মাধ্যমে ডেভেলপাররা ডেটাবেসে তথ্য সঞ্চয় এবং ম্যানিপুলেট করা সহজভাবে করতে পারে।
Read more