একটি স্ব-রেফারেন্সিং সম্পর্ক, যা একটি পুনরাবৃত্ত সম্পর্ক বা একটি স্ব-যোগদান হিসাবেও পরিচিত, রিলেশনাল ডাটাবেসের প্রসঙ্গে ঘটে যখন একটি টেবিলে একটি বিদেশী কী থাকে যা একই টেবিলের প্রাথমিক কীকে নির্দেশ করে। এই ধরনের সম্পর্ক বিভিন্ন বাস্তব-বিশ্বের পরিস্থিতিতে প্রচলিত, যেমন শ্রেণীবদ্ধ ডেটা স্ট্রাকচার, সাংগঠনিক চার্ট এবং পিতা-মাতা-সন্তান নির্ভরতা, যেখানে একটি সত্তা প্রত্যক্ষ বা পরোক্ষভাবে নিজের সাথে সম্পর্কিত। একটি স্ব-রেফারেন্সিং সম্পর্ক বাস্তবায়নের জন্য রিলেশনাল ডাটাবেস ডিজাইনের নীতিগুলি এবং সীমাবদ্ধতা এবং রেফারেন্সিয়াল অখণ্ডতা নিয়মগুলির কার্যকর ব্যবহার সম্পর্কে গভীর বোঝার প্রয়োজন।
উদাহরণস্বরূপ, একটি কোম্পানির ডাটাবেসের মধ্যে একটি কর্মচারী টেবিল বিবেচনা করুন যা প্রতিটি কর্মচারী, তাদের বিভাগ, চাকরির শিরোনাম এবং অন্যান্য প্রাসঙ্গিক ডেটা সম্পর্কে তথ্য সংরক্ষণ করে। একটি সাংগঠনিক শ্রেণিবিন্যাসের মূল দিকগুলির মধ্যে একটি হল ম্যানেজার-অধীনস্থ সম্পর্ক। পরিচালকদের জন্য একটি পৃথক টেবিল তৈরি করার পরিবর্তে, একটি Manager_ID বিদেশী কী কলাম যোগ করে কর্মচারী টেবিলের মধ্যে একটি স্ব-রেফারেন্সিং সম্পর্ক স্থাপন করা যেতে পারে যা Employee_ID প্রাথমিক কী কলামে ফিরে আসে। এই ক্ষেত্রে, যে কর্মচারীরা ব্যবস্থাপক তাদের ম্যানেজার_আইডি হিসাবে তাদের নিজস্ব Employee_ID থাকে এবং যে কর্মচারীরা একজন ম্যানেজারের কাছে রিপোর্ট করে তাদের ম্যানেজার_ID হিসাবে সংশ্লিষ্ট ম্যানেজারের Employee_ID থাকে।
একটি রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS) যেমন PostgreSQL-এ একটি স্ব-রেফারেন্সিং সম্পর্ক তৈরি করার জন্য টেবিল স্কিমার মধ্যে প্রাথমিক কী এবং বিদেশী কী কলামগুলি সংজ্ঞায়িত করা এবং রেফারেন্সিয়াল অখণ্ডতা বজায় রাখার জন্য উপযুক্ত সীমাবদ্ধতা এবং নিয়ম সেট করা জড়িত। কর্মচারী টেবিলের উদাহরণে, নিম্নলিখিত SQL স্টেটমেন্টগুলি টেবিল স্কিমা তৈরি করতে এবং স্ব-রেফারেন্সিং সম্পর্ক স্থাপন করতে ব্যবহার করা যেতে পারে:
টেবিল কর্মচারী তৈরি করুন ( কর্মচারী_আইডি প্রাথমিক কী, প্রথম_নাম VARCHAR(50), শেষ_নাম VARCHAR(50), বিভাগ ভার্চার (৫০), Manager_ID INT, কন্সট্রাইন fk_Manager বিদেশী কী (ম্যানেজার_আইডি) রেফারেন্স কর্মচারী (Employee_ID) );
স্ব-রেফারেন্সিং সম্পর্কের সাথে কাজ করার সময় রেফারেন্সিয়াল অখণ্ডতা বজায় রাখার গুরুত্ব বোঝা অত্যন্ত গুরুত্বপূর্ণ। এর মধ্যে ON DELETE এবং ON UPDATE ধারাগুলির জন্য উপযুক্ত CASCADE, SET NULL বা SET ডিফল্ট নিয়মগুলি সেট করা জড়িত৷ এই নিয়মগুলি একটি প্রাথমিক কী মান আপডেট বা মুছে ফেলার সময় নেওয়া পদক্ষেপগুলি নির্দিষ্ট করে৷
একটি উদাহরণ হিসাবে, একটি দৃশ্যকল্প বিবেচনা করুন যেখানে একজন ম্যানেজারের Employee_ID পরিবর্তন হয় বা একজন ম্যানেজারকে কর্মচারী টেবিল থেকে সরিয়ে দেওয়া হয়। রেফারেন্সিয়াল অখণ্ডতা বজায় রাখার জন্য, SET NULL বা SET DEFAULT নিয়মগুলি ON DELETE ক্লজের জন্য ব্যবহার করা যেতে পারে, এবং নিশ্চিত করে যে নতুন Manager_ID মানগুলি প্রভাবিত অধস্তনদের জন্য যথাযথভাবে সেট করা আছে। একইভাবে, ম্যানেজারের Employee_ID পরিবর্তিত হলে সমস্ত সম্পর্কিত অধীনস্থদের জন্য Manager_ID মান স্বয়ংক্রিয়ভাবে আপডেট করতে ON UPDATE ধারার জন্য CASCADE নিয়ম ব্যবহার করা যেতে পারে।
AppMaster, শক্তিশালী no-code প্ল্যাটফর্ম, ব্যাকএন্ড অ্যাপ্লিকেশন ডিজাইন করার সময় ব্যবহারকারীরা তাদের ডেটা মডেলগুলিতে দৃশ্যত স্ব-রেফারেন্সিং সম্পর্ক তৈরি করতে পারে। প্ল্যাটফর্মটি ব্যবহারকারীদের প্রাথমিক কী এবং বিদেশী কী কলামগুলি সংজ্ঞায়িত করতে, সীমাবদ্ধতা এবং রেফারেন্সিয়াল অখণ্ডতার নিয়মগুলি নির্দিষ্ট করতে এবং ডাটাবেস স্কিমাকে দৃশ্যমানভাবে পরিচালনা করতে দেয়। AppMaster স্বজ্ঞাত ইন্টারফেস ব্যবহারকারীদের জন্য তাদের অ্যাপ্লিকেশনগুলিতে জটিল পুনরাবৃত্ত সম্পর্ক তৈরি এবং পরিচালনা করা সহজ করে তোলে, এটি একটি সাংগঠনিক শ্রেণিবিন্যাস, একটি বহু-স্তরের পণ্য শ্রেণিবদ্ধকরণ সিস্টেম, বা স্ব-রেফারেন্সিং সম্পর্ক জড়িত অন্য কোনো দৃশ্যে।
জেনারেট করা Go-ভিত্তিক ব্যাকএন্ড অ্যাপ্লিকেশনের মধ্যে স্ব-রেফারেন্সিং সম্পর্কগুলিকে একীভূত করে, AppMaster এন্টারপ্রাইজ এবং উচ্চ-লোড ব্যবহারের ক্ষেত্রে অ্যাড্রেস করার ক্ষেত্রে মাপযোগ্যতা এবং কর্মক্ষমতা নিশ্চিত করে। অধিকন্তু, প্ল্যাটফর্মটি নিরবিচ্ছিন্নভাবে স্ক্র্যাচ থেকে অ্যাপ্লিকেশনগুলি পুনরুত্পাদন করে যখন প্রয়োজনীয়তা পরিবর্তন হয়, প্রযুক্তিগত ঋণ দূর করে এবং উন্নয়ন প্রক্রিয়াকে সুগম করে।
একটি ব্যাপক ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE), AppMaster ব্যবহারকারীদেরকে শক্তিশালী এবং স্কেলেবল ওয়েব, মোবাইল, এবং ব্যাকএন্ড অ্যাপ্লিকেশন ডিজাইন, তৈরি এবং স্থাপন করতে সক্ষম করে যা জটিল ডেটা স্ট্রাকচার এবং আত্ম-রেফারেন্সিং সম্পর্কের মতো সম্পর্কগুলিকে অন্তর্ভুক্ত করে। AppMaster এর ব্যাপক ক্ষমতা ব্যবহার করে, ব্যবহারকারীরা দ্রুত এমন অ্যাপ্লিকেশন বিকাশ এবং স্থাপন করতে পারে যা বিভিন্ন ব্যবসায়িক চাহিদা পূরণ করে, প্রক্রিয়াটিকে 10 গুণ দ্রুত এবং 3 গুণ বেশি সাশ্রয়ী করে তোলে।