Primary Keys এবং Auto-Increment সেট করা

Entities এবং ডেটাবেস মডেলিং - টাইপওআরএম (TypeORM) - Web Development

319

Primary Key কি?

Primary Key হলো একটি সারণীর (table) মধ্যে একটি নির্দিষ্ট কলাম বা কলামের কম্বিনেশন, যার মাধ্যমে প্রতিটি রেকর্ডকে একে অপর থেকে আলাদা করা হয়। এটি ডেটাবেসে প্রতিটি রেকর্ডের জন্য একটি ইউনিক (unique) পরিচয় তৈরি করে এবং ডুপ্লিকেট রেকর্ড এড়ানোর জন্য ব্যবহৃত হয়।

উদাহরণস্বরূপ, একটি ব্যক্তি সারণীতে id কলামটি একমাত্র Primary Key হতে পারে, যা প্রত্যেকটি ব্যক্তির জন্য একটি ইউনিক মান ধারণ করবে।


Auto-Increment কি?

Auto-Increment একটি বৈশিষ্ট্য যা Primary Key এর মানের জন্য ব্যবহৃত হয়, যাতে ডেটাবেসে নতুন রেকর্ড সংযোজনের সময় তা স্বয়ংক্রিয়ভাবে আগের মানের পরবর্তী মান দিয়ে পূর্ণ হয়। সাধারণত এটি সংখ্যাগত মান হয়, যেমন 1, 2, 3, 4 ইত্যাদি। এটি সাধারণত Primary Key বা Unique Key এর জন্য ব্যবহৃত হয়, যাতে প্রতিটি রেকর্ডে একটি ইউনিক আইডি তৈরি হয়।


TypeORM এ Primary Key এবং Auto-Increment সেট করা

TypeORM একটি Object-Relational Mapper (ORM) যা TypeScript এবং JavaScript ব্যবহার করে ডেটাবেসের সাথে কাজ করে। TypeORM এ Primary Key এবং Auto-Increment সেট করতে, আপনাকে Entity ক্লাসে @PrimaryGeneratedColumn() এবং @PrimaryColumn() ডেকোরেটর ব্যবহার করতে হবে।

১. Primary Key সেট করা

প্রথমত, @PrimaryGeneratedColumn() ডেকোরেটর ব্যবহার করে আপনি একটি Primary Key সেট করতে পারেন। এটি স্বয়ংক্রিয়ভাবে একটি ইউনিক ID তৈরি করবে। সাধারণত এটি Auto-Increment ফিচারের সাথে ব্যবহার হয়।

সিনট্যাক্স:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

এখানে id কলামটি Primary Key হিসেবে ব্যবহৃত হবে এবং এটি Auto-Increment হবে। TypeORM স্বয়ংক্রিয়ভাবে প্রতিটি নতুন রেকর্ডের জন্য একটি ইউনিক id তৈরি করবে।

২. Auto-Increment সেট করা

@PrimaryGeneratedColumn() ডেকোরেটর Auto-Increment ফিচারকে সমর্থন করে এবং Primary Key কলামের জন্য স্বয়ংক্রিয়ভাবে সংখ্যা ইনক্রিমেন্ট করে। এটি সাধারণত MySQL, PostgreSQL, এবং অন্যান্য রিলেশনাল ডেটাবেসের জন্য সঠিকভাবে কাজ করে।

উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class Product {
  @PrimaryGeneratedColumn()
  id: number;  // Auto-Increment Primary Key

  @Column()
  name: string;

  @Column()
  price: number;
}

এখানে, id কলামটি প্রতিবার নতুন রেকর্ড যুক্ত করার সময় স্বয়ংক্রিয়ভাবে বাড়বে, যেমন 1, 2, 3, ইত্যাদি।


@PrimaryGeneratedColumn() এর অতিরিক্ত অপশন

@PrimaryGeneratedColumn() ডেকোরেটরের মাধ্যমে আপনি Auto-Increment এর ক্ষেত্রে কিছু অতিরিক্ত অপশনও সেট করতে পারেন, যেমন:

  • strategy: এটি Auto-Increment-এর কৌশল নির্ধারণ করে।
    • increment: সাধারণ Auto-Increment কৌশল।
    • uuid: UUID ব্যবহার করে ইউনিক আইডি তৈরি করা।

উদাহরণ: Auto-Increment এবং UUID এর ব্যবহার:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class Customer {
  @PrimaryGeneratedColumn('uuid')
  id: string;  // UUID Primary Key

  @Column()
  name: string;
  
  @Column()
  email: string;
}

এখানে, id কলামটি UUID টাইপের হবে এবং প্রতি রেকর্ডের জন্য ইউনিক আইডি তৈরি করবে, যা সাধারণ সংখ্যার পরিবর্তে UUID ফরম্যাটে থাকবে।


@PrimaryColumn() এর ব্যবহার

যদি আপনি নিজে থেকে Primary Key সেট করতে চান এবং এটি Auto-Increment করতে না চান, তবে আপনি @PrimaryColumn() ডেকোরেটর ব্যবহার করতে পারেন। এই ক্ষেত্রে, আপনি প্রতিটি রেকর্ডের জন্য কাস্টম আইডি প্রদান করবেন।

উদাহরণ:

import { Entity, PrimaryColumn, Column } from 'typeorm';

@Entity()
export class Order {
  @PrimaryColumn()
  orderId: string;  // Custom Primary Key, No Auto-Increment

  @Column()
  customerName: string;

  @Column()
  totalAmount: number;
}

এখানে, orderId হল কাস্টম Primary Key এবং এটি Auto-Increment হবে না। আপনাকে এটি নিজে থেকে প্রদান করতে হবে।


সারাংশ

TypeORMPrimary Key এবং Auto-Increment সেট করা খুবই সহজ। @PrimaryGeneratedColumn() ডেকোরেটরের মাধ্যমে আপনি Primary Key এবং Auto-Increment ফিচারটি সেট করতে পারেন। TypeORM এ Primary Key সাধারণত id কলামে রাখা হয় এবং এটি প্রতিটি রেকর্ডের জন্য একটি ইউনিক মান তৈরি করে। @PrimaryGeneratedColumn() এর মাধ্যমে Auto-Increment, UUID এবং অন্যান্য স্ট্র্যাটেজি ব্যবহারের সুযোগও রয়েছে, যা ডেটাবেস ডিজাইন এবং ম্যানেজমেন্টে আরও নমনীয়তা দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...