SQL ডেটাবেসে এফাইনড রিলেশনশিপগুলি ডেটার মধ্যে সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়। এই সম্পর্কগুলি টেবিলের মধ্যে ডেটা মেলানোর কাজ করে, এবং ডেটাবেসের কার্যকারিতা এবং রিলেটেড ডেটা পরিচালনা করার জন্য অত্যন্ত গুরুত্বপূর্ণ। সবচেয়ে সাধারণ তিনটি সম্পর্ক হল One-to-One, One-to-Many, এবং Many-to-Many।
১. One-to-One Relationship
One-to-One Relationship হল এমন একটি সম্পর্ক যেখানে একটি রেকর্ড একটি টেবিলের মধ্যে এককভাবে অন্য একটি টেবিলের একটি রেকর্ডের সাথে সম্পর্কিত। এই ধরনের সম্পর্ক সাধারণত তখন ব্যবহৃত হয়, যখন দুটি টেবিলের মধ্যে সম্পর্ক সুনির্দিষ্ট এবং একে অপরের সাথে একাধিক সম্পর্ক থাকতে পারে না।
উদাহরণ:
ধরা যাক, একটি কোম্পানির employees টেবিল এবং employee_details টেবিল আছে, যেখানে প্রতিটি কর্মীর একটি নির্দিষ্ট ডিটেলস টেবিল রয়েছে।
employees টেবিল:
| employee_id | name | department |
|---|---|---|
| 1 | Alice | HR |
| 2 | Bob | IT |
employee_details টেবিল:
| employee_id | address | phone_number |
|---|---|---|
| 1 | New York | 1234567890 |
| 2 | Los Angeles | 9876543210 |
এই সম্পর্কের মধ্যে, প্রতিটি কর্মী employees টেবিলের একটি রেকর্ডের সাথে এককভাবে সম্পর্কিত employee_details টেবিলের একটি রেকর্ড থাকবে।
SQL Query:
SELECT employees.name, employee_details.address, employee_details.phone_number
FROM employees
INNER JOIN employee_details
ON employees.employee_id = employee_details.employee_id;
২. One-to-Many Relationship
One-to-Many Relationship হল এমন একটি সম্পর্ক যেখানে একটি রেকর্ড একটি টেবিলের মধ্যে একাধিক রেকর্ডের সাথে সম্পর্কিত। এই সম্পর্কটি সবচেয়ে সাধারণ ধরনের সম্পর্ক যেখানে একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্ক স্থাপন করতে পারে, কিন্তু প্রতিটি সম্পর্কিত রেকর্ড শুধুমাত্র একটি রেকর্ডের সাথে সম্পর্কিত থাকে।
উদাহরণ:
ধরা যাক, একটি কোম্পানির departments টেবিল এবং employees টেবিল আছে, যেখানে একটি বিভাগে একাধিক কর্মী থাকতে পারে।
departments টেবিল:
| department_id | department_name |
|---|---|
| 1 | HR |
| 2 | IT |
employees টেবিল:
| employee_id | name | department_id |
|---|---|---|
| 1 | Alice | 1 |
| 2 | Bob | 1 |
| 3 | Charlie | 2 |
এখানে, departments টেবিলের একটি বিভাগ একাধিক কর্মীকে (employees) সম্পর্কিত করতে পারে।
SQL Query:
SELECT departments.department_name, employees.name
FROM departments
INNER JOIN employees
ON departments.department_id = employees.department_id;
এই কুয়েরি দিয়ে আমরা দেখতে পাবো, কোন কর্মী কোন বিভাগে কাজ করছেন।
৩. Many-to-Many Relationship
Many-to-Many Relationship হল এমন একটি সম্পর্ক যেখানে একটি টেবিলের একাধিক রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত হতে পারে। এই ধরনের সম্পর্ক প্রতিষ্ঠা করতে সাধারণত একটি জাংশন টেবিল (junction table) ব্যবহার করা হয়, যা দুইটি টেবিলের মধ্যে সম্পর্ক তৈরি করে।
উদাহরণ:
ধরা যাক, একটি students টেবিল এবং একটি courses টেবিল আছে, যেখানে একজন শিক্ষার্থী একাধিক কোর্সে ভর্তি হতে পারে এবং একাধিক শিক্ষার্থী এক কোর্সে থাকতে পারে। এই সম্পর্কের জন্য আমরা একটি student_courses টেবিল ব্যবহার করবো।
students টেবিল:
| student_id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
courses টেবিল:
| course_id | course_name |
|---|---|
| 1 | Math |
| 2 | Science |
student_courses (Junction Table):
| student_id | course_id |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
এখানে, student_courses টেবিলটি দুইটি টেবিলের (students এবং courses) মধ্যে সম্পর্ক স্থাপন করেছে, যেখানে একটি শিক্ষার্থী একাধিক কোর্সে থাকতে পারে এবং এক কোর্সে একাধিক শিক্ষার্থী থাকতে পারে।
SQL Query:
SELECT students.name, courses.course_name
FROM students
INNER JOIN student_courses
ON students.student_id = student_courses.student_id
INNER JOIN courses
ON student_courses.course_id = courses.course_id;
এই কুয়েরি দিয়ে আমরা দেখতে পাবো, কোন শিক্ষার্থী কোন কোর্সে ভর্তি আছেন।
সারাংশ
- One-to-One Relationship: একটি টেবিলের একটি রেকর্ড একটি টেবিলের একক রেকর্ডের সাথে সম্পর্কিত থাকে।
- One-to-Many Relationship: একটি টেবিলের একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে।
- Many-to-Many Relationship: দুটি টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত থাকে, এবং একটি junction table এর মাধ্যমে এই সম্পর্ক পরিচালিত হয়।
এই ধরনের সম্পর্কগুলি ডেটাবেস ডিজাইন করার সময় অত্যন্ত গুরুত্বপূর্ণ, এবং সঠিকভাবে তৈরি করলে ডেটাবেসের কার্যকারিতা ও কার্যসম্পাদন অনেক উন্নত হয়।
Read more