One-to-One, One-to-Many, এবং Many-to-Many সম্পর্কের ধারণা

Relationships (সম্পর্ক) - টাইপওআরএম (TypeORM) - Web Development

442

TypeORM এ সম্পর্ক (Relationships)

TypeORM হল একটি Object-Relational Mapping (ORM) লাইব্রেরি যা জাভাস্ক্রিপ্ট বা টাইপস্ক্রিপ্টে ডেটাবেস পরিচালনা করতে ব্যবহৃত হয়। এটি ডেটাবেসের মধ্যে সম্পর্কগুলোকে Entity ক্লাসের মাধ্যমে মডেলিং করতে সাহায্য করে। TypeORM তে ডেটাবেসের বিভিন্ন সম্পর্ক (Relationship) তৈরি করা সম্ভব, যেমন One-to-One, One-to-Many, এবং Many-to-Many। এগুলো বিভিন্ন Entity ক্লাসের মধ্যে সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়, যাতে ডেটাবেসে সংশ্লিষ্ট টেবিলগুলোর মধ্যে উপযুক্ত সংযোগ তৈরি হয়।

এখানে আমরা One-to-One, One-to-Many, এবং Many-to-Many সম্পর্কের ধারণা এবং TypeORM তে এগুলি কীভাবে ইমপ্লিমেন্ট করা যায় তা দেখব।


১. One-to-One সম্পর্ক

One-to-One সম্পর্ক একটি সম্পর্ক যেখানে একটি রেকর্ড একটি রেকর্ডের সাথে সম্পর্কিত থাকে। অর্থাৎ, একটি টেবিলের একটি রেকর্ড অন্য টেবিলের শুধুমাত্র একটি রেকর্ডের সাথে সম্পর্কিত।

উদাহরণ:

ধরা যাক, আমাদের একটি User টেবিল এবং একটি Profile টেবিল রয়েছে। এখানে, একজন ইউজারের একটি প্রোফাইল থাকবে। এটি একটি One-to-One সম্পর্ক

TypeORM কোড উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn } from "typeorm";
import { Profile } from "./Profile";  // Assuming Profile is another Entity

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

  @Column()
  name: string;

  @OneToOne(() => Profile)
  @JoinColumn()  // This defines that the Profile is associated with the User entity
  profile: Profile;
}

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

  @Column()
  bio: string;
}

এখানে, User ক্লাসের profile প্রপার্টি @OneToOne() ডেকোরেটর দিয়ে Profile টেবিলের সাথে সম্পর্কিত করা হয়েছে এবং @JoinColumn() ডেকোরেটর দিয়ে এই সম্পর্কের জন্য কলাম সংজ্ঞায়িত করা হয়েছে।


২. One-to-Many সম্পর্ক

One-to-Many সম্পর্ক এমন একটি সম্পর্ক যেখানে একটি রেকর্ড অনেক রেকর্ডের সাথে সম্পর্কিত থাকে। সাধারণত, এটি যখন একটি রেকর্ড একাধিক সম্পর্কিত রেকর্ডের সাথে সংযুক্ত থাকে, তখন ব্যবহৃত হয়। উদাহরণস্বরূপ, একজন User একাধিক Post করতে পারে, এখানে One-to-Many সম্পর্ক রয়েছে।

TypeORM কোড উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
import { Post } from "./Post";  // Assuming Post is another Entity

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

  @Column()
  name: string;

  @OneToMany(() => Post, post => post.user)  // One-to-many relation
  posts: Post[];
}

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

  @Column()
  title: string;

  @ManyToOne(() => User, user => user.posts)  // Many-to-one relation (inverse side)
  user: User;
}

এখানে, User Entity ক্লাসে @OneToMany() ডেকোরেটর ব্যবহার করে Post টেবিলের সাথে সম্পর্ক তৈরি করা হয়েছে। আবার Post Entity ক্লাসে @ManyToOne() ডেকোরেটর ব্যবহার করে সম্পর্কের বিপরীত দিক (inverse side) তৈরি করা হয়েছে। এর মাধ্যমে, একজন User একাধিক Post করতে পারে।


৩. Many-to-Many সম্পর্ক

Many-to-Many সম্পর্ক এমন একটি সম্পর্ক যেখানে একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত হতে পারে এবং অন্য রেকর্ডও একইভাবে একাধিক রেকর্ডের সাথে সম্পর্কিত হতে পারে। উদাহরণস্বরূপ, একজন Student একাধিক Course এ অংশগ্রহণ করতে পারে এবং একটি Course একাধিক Student কে যুক্ত করতে পারে।

TypeORM কোড উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from "typeorm";
import { Course } from "./Course";  // Assuming Course is another Entity

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

  @Column()
  name: string;

  @ManyToMany(() => Course)
  @JoinTable()  // This creates a join table for the many-to-many relationship
  courses: Course[];
}

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

  @Column()
  title: string;

  @ManyToMany(() => Student)
  students: Student[];
}

এখানে, Student এবং Course Entity ক্লাসে @ManyToMany() ডেকোরেটর ব্যবহার করা হয়েছে। @JoinTable() ডেকোরেটরটি জোয়েন টেবিল তৈরি করতে ব্যবহৃত হয় যা এই সম্পর্কের জন্য মধ্যস্থতাকারী (intermediary) টেবিল হিসেবে কাজ করে।


সারাংশ

TypeORM এ One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক তৈরি করতে @OneToOne(), @OneToMany(), @ManyToOne(), এবং @ManyToMany() ডেকোরেটর ব্যবহার করা হয়। এই সম্পর্কগুলি Entity ক্লাসের মাধ্যমে ডেটাবেস টেবিলের মধ্যে সম্পর্ক তৈরি করতে সাহায্য করে। TypeORM এর মাধ্যমে ডেটাবেসের মধ্যে সম্পর্কিত টেবিলের কার্যকরী এবং দক্ষ ম্যানিপুলেশন সম্ভব, যা ডেভেলপারদের জন্য কোড লিখতে আরও সুবিধাজনক এবং সংহত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...