ডাটাবেস পদগুলি রিলেশনাল এবং রিলেশনশিপ বর্ণনা করে যেভাবে টেবিলের ডেটা সংযুক্ত করা হয়। একটি রিলেশনাল ডাটাবেস একটি নির্দিষ্ট কী দ্বারা সংযুক্ত দুই বা ততোধিক টেবিলের একটি সিরিজ নিয়ে গঠিত। একটি রিলেশনাল ডাটাবেস অসংগঠিত ডাটাবেস থেকে আলাদা, যা বড় ডেটা উদ্যোগে সাধারণ। রিলেশনাল ডাটাবেসগুলির জন্য টেবিলগুলিকে কীভাবে সংজ্ঞায়িত করা হয় এবং কী টেবিলের মধ্যে একটি বৈধ সম্পর্ক গঠন করে সে সম্পর্কে কঠোর নিয়মের প্রয়োজন হয়৷
ডেটাবেস সম্পর্কের প্রকার
সম্পর্ক আপনাকে শক্তিশালী উপায়ে ডাটাবেস টেবিলের মধ্যে সংযোগগুলি বর্ণনা করতে দেয়। এই সম্পর্কগুলি তখন শক্তিশালী ক্রস-টেবিল প্রশ্নগুলি সম্পাদন করার জন্য ব্যবহার করা যেতে পারে, যা JOIN নামে পরিচিত৷
তিন ধরনের ডাটাবেস সম্পর্ক রয়েছে, প্রতিটি সম্পর্কের সাথে জড়িত টেবিল সারির সংখ্যা অনুসারে নামকরণ করা হয়েছে। এই তিনটি সম্পর্ক প্রকারের প্রতিটি দুটি টেবিলের মধ্যে বিদ্যমান৷
- এক-থেকে-এক সম্পর্ক ঘটে যখন প্রথম টেবিলের প্রতিটি এন্ট্রি দ্বিতীয় টেবিলে শুধুমাত্র একটি প্রতিরূপ থাকে। এক থেকে এক সম্পর্ক খুব কমই ব্যবহৃত হয় কারণ এটি প্রায়শই একটি একক টেবিলে সমস্ত তথ্য রাখা আরও দক্ষ। কিছু ডাটাবেস ডিজাইনার অন্য টেবিল থেকে ডেটার একটি উপসেট ধারণ করে এমন টেবিল তৈরি করে এই সম্পর্কের সুবিধা নেয়।
- এক থেকে বহু সম্পর্ক হল ডাটাবেস সম্পর্কের সবচেয়ে সাধারণ প্রকার। এগুলি ঘটে যখন সারণি A-এর প্রতিটি রেকর্ড সারণি B-এর এক বা একাধিক রেকর্ডের সাথে মিলে যায়, কিন্তু টেবিল B-এর প্রতিটি রেকর্ড সারণি A-তে শুধুমাত্র একটি রেকর্ডের সাথে মিলে যায়। উদাহরণস্বরূপ, একটি প্রাথমিক বিদ্যালয়ে শিক্ষকের টেবিল এবং ছাত্রদের টেবিলের মধ্যে সম্পর্ক। ডাটাবেস সম্ভবত এক-থেকে-অনেক সম্পর্ক হতে পারে কারণ প্রতিটি শিক্ষার্থীর শুধুমাত্র একজন শিক্ষক আছে, কিন্তু প্রতিটি শিক্ষকের একাধিক শিক্ষার্থী রয়েছে।এই এক-থেকে-অনেক ডিজাইন ডুপ্লিকেট ডেটা দূর করতে সাহায্য করে৷
- অনেক-থেকে-অনেক সম্পর্ক ঘটে যখন টেবিল A-এর প্রতিটি রেকর্ড সারণি B-এর এক বা একাধিক রেকর্ডের সাথে মিলে যায় এবং টেবিল B-এর প্রতিটি রেকর্ড এক বা একাধিক রেকর্ডের সাথে মিলে যায় সারণি A-তে। উদাহরণ স্বরূপ, একটি শিক্ষকের টেবিল এবং একটি কোর্স টেবিলের মধ্যে সম্পর্ক হতে পারে বহু-থেকে-অনেক কারণ প্রতিটি শিক্ষক একাধিক কোর্স নির্দেশ দিতে পারেন, এবং প্রতিটি কোর্সে একাধিক প্রশিক্ষক থাকতে পারে।
নিচের লাইন
স্ব-রেফারেন্সিং সম্পর্কগুলি ঘটে যখন শুধুমাত্র একটি টেবিল জড়িত থাকে। একটি সাধারণ উদাহরণ হল একটি কর্মচারী টেবিল যাতে প্রতিটি কর্মচারীর সুপারভাইজার সম্পর্কে তথ্য থাকে। প্রতিটি সুপারভাইজারও একজন কর্মচারী এবং একজন সুপারভাইজার রয়েছে। এই ক্ষেত্রে, একটি থেকে একাধিক স্ব-রেফারেন্সিং সম্পর্ক রয়েছে, কারণ প্রতিটি কর্মচারীর একজন সুপারভাইজার থাকে, কিন্তু প্রতিটি সুপারভাইজারে একাধিক কর্মচারী থাকতে পারে।
বিদেশী কীগুলির সাথে সম্পর্ক তৈরি করা
আপনি একটি বিদেশী কী নির্দিষ্ট করে টেবিলের মধ্যে সম্পর্ক তৈরি করেন। এই কীটি রিলেশনাল ডাটাবেসকে বলে যে টেবিলগুলি কীভাবে সম্পর্কিত। অনেক ক্ষেত্রে, সারণি A-এর একটি কলামে প্রাথমিক কী থাকে যা সারণি B থেকে উল্লেখ করা হয়।
শিক্ষক এবং ছাত্র টেবিলের উদাহরণ বিবেচনা করুন। শিক্ষক টেবিলে একটি আইডি, একটি নাম এবং একটি কোর্স কলাম রয়েছে:
ইন্সট্রাক্টরআইডি | শিক্ষকের_নাম | কোর্স |
001 | জন ডো | ইংরেজি |
002 | জেন স্মো | গণিত |
শিক্ষার্থীদের টেবিলে একটি আইডি, নাম এবং একটি বিদেশী কী কলাম রয়েছে:
স্টুডেন্টআইডি | ছাত্রের_নাম | শিক্ষক_এফকে |
0200 | লোয়েল স্মিথ | 001 |
0201 | ব্রায়ান শর্ট | 001 |
0202 | কর্কি মেন্ডেজ | 002 |
0203 | মনিকা জোন্স | 001 |
স্টুডেন্ট টেবিলের কলাম Teacher_FK শিক্ষকদের টেবিলে একজন প্রশিক্ষকের প্রাথমিক কী মান উল্লেখ করে। প্রায়শই, ডাটাবেস ডিজাইনাররা একটি প্রাথমিক কী বা বিদেশী কী কলাম সনাক্ত করতে কলামের নামে PK বা FK ব্যবহার করে।
এই দুটি টেবিল শিক্ষক এবং ছাত্রদের মধ্যে এক থেকে একাধিক সম্পর্ককে চিত্রিত করে।
সম্পর্ক এবং রেফারেন্সিয়াল সততা
একটি টেবিলে একটি বিদেশী কী যোগ করার পরে, একটি ডাটাবেস সীমাবদ্ধতা তৈরি করুন যা দুটি টেবিলের মধ্যে রেফারেন্সিয়াল অখণ্ডতা প্রয়োগ করে। এই পদক্ষেপটি নিশ্চিত করে যে টেবিলের মধ্যে সম্পর্কগুলি সামঞ্জস্যপূর্ণ থাকে। যখন একটি টেবিলের অন্য টেবিলে একটি বিদেশী কী থাকে, রেফারেন্সিয়াল ইন্টিগ্রিটির প্রয়োজন হয় যে টেবিল B-এর যেকোনো বিদেশী কী মান অবশ্যই সারণি A-তে বিদ্যমান রেকর্ড উল্লেখ করতে হবে।
সম্পর্কের বাস্তবায়ন
আপনার ডাটাবেসের উপর নির্ভর করে, আপনি বিভিন্ন উপায়ে টেবিলের মধ্যে সম্পর্ক বাস্তবায়ন করবেন। মাইক্রোসফ্ট অ্যাক্সেস একটি উইজার্ড সরবরাহ করে যা আপনাকে টেবিলগুলি লিঙ্ক করতে এবং রেফারেন্সিয়াল অখণ্ডতা প্রয়োগ করতে দেয়৷
আপনি যদি সরাসরি এসকিউএল লিখছেন, তাহলে প্রথমে একটি আইডি কলামকে প্রাথমিক কী হিসেবে ঘোষণা করে টেবিল শিক্ষক তৈরি করুন:
টেবিল শিক্ষক তৈরি করুন (প্রশিক্ষক আইডি স্বয়ংক্রিয়-ইনক্রিমেন্ট প্রাথমিক কী, শিক্ষক_নাম VARCHAR(100), কোর্স VARCHAR(100));
আপনি যখন স্টুডেন্টস টেবিল তৈরি করেন, তখন আপনি Teacher_FK কলামটিকে একটি বিদেশী কী হিসেবে ঘোষণা করেন যা শিক্ষকদের টেবিলে InstructorID কলাম উল্লেখ করে:
ছাত্রদের টেবিল তৈরি করুন (StudentID INT AUTO_INCREMENT PRIMARY KY, Student_Name VARCHAR(100), Teacher_FK INT, ফরেন কী (শিক্ষক_FK) রেফারেন্স (শিক্ষকদের নির্দেশনা));
সারণীতে যোগদানের জন্য সম্পর্ক ব্যবহার করা
আপনার ডাটাবেসে এক বা একাধিক সম্পর্ক তৈরি করার পরে, একাধিক টেবিল থেকে তথ্য একত্রিত করতে SQL JOIN ক্যোয়ারী ব্যবহার করে তাদের ক্ষমতার সুবিধা নিন। যোগদানের সবচেয়ে সাধারণ প্রকার হল একটি SQL অভ্যন্তরীণ যোগদান, যা একটি সাধারণ যোগদান। এই ধরনের যোগদান এক বা একাধিক টেবিল থেকে যোগদানের শর্ত পূরণকারী সমস্ত রেকর্ড ফেরত দেয়।
উদাহরণস্বরূপ, এই JOIN শর্তটি Student_Name, Teacher_Name, এবং Course প্রদান করে, যেখানে ছাত্র টেবিলের বিদেশী কী শিক্ষকদের টেবিলের প্রাথমিক কী-এর সাথে মেলে:
ছাত্র নির্বাচন করুন।ছাত্রের_নাম, শিক্ষক।শিক্ষকের_নাম, শিক্ষক।কোর্স
ছাত্রদের কাছ থেকে
আভ্যন্তরীণ শিক্ষকদের সাথে যোগ দিনশিক্ষার্থীদের উপর।Teacher_FK=Teachers. InstructorID;
এই বিবৃতিটি এরকম একটি টেবিল তৈরি করে:
ছাত্রের_নাম | শিক্ষকের_নাম | কোর্স |
লোয়েল স্মিথ | জন ডো | ইংরেজি |
ব্রায়ান শর্ট | জন ডো | ইংরেজি |
কর্কি মেন্ডেজ | জেন স্মো | গণিত |
মনিকা জোন্স | জন ডো | ইংরেজি |