One-to-One Unary Relationship হলো একই এন্টিটি টাইপের মধ্যে ঘটা রিলেশনশিপ যেখানে একই ইনস্ট্যান্সগুলো একই রোল গ্রুপে অংশগ্রহণ করে এবং পারস্পরিকভাবে একে অপরের সাথে জড়িত থাকে।
উদাহরণ: Married Couple (বিবাহিত জোড়া)

- এন্টিটি: Person
- রিলেশনশিপ: MARRIED_TO
- প্রতিটি Person শুধু একটি Person-এর সাথে বিবাহিত।
- সিমেট্রিক (Symmetric) রিলেশনশিপ: A married to B → B married to A।
তিনটি অপশন্যালিটি কেস
১. Mandatory-Mandatory (দ্বৈত বাধ্যতামূলক)
- প্রতিটি Person অবশ্যই বিবাহিত থাকতে হবে।
- একই টেবিলে প্রতিটি রোয়ের স্পাউজ আইডি থাকতে হবে (NOT NULL)।
- বাস্তবে কঠিন বাধ্যতা (অবিবাহিত লোক থাকতে পারে)।
২. Optional-Optional (দ্বৈত ঐচ্ছিক)

- Person বিবাহিত হতে পারে বা নাও হতে পারে।
- ট্যাক্স ফাইলিং উদাহরণ: বিবাহিত জোড়া যৌথ বা পৃথক ট্যাক্স ফাইল করতে পারে।
- কমপক্ষে একটি জোড়া অবশ্যই পৃথক ফাইল করবে (Business Rule)।
- সর্বाधিক বাস্তবসম্মত মডেল।
৩. Optional-Mandatory বা Mandatory-Optional (মিশ্র)
- এক পক্ষের সবাই অংশ নিবে (Mandatory), অন্য পক্ষের সবাই নাও নিতে পারে (Optional)।
- One-to-One-এ এটি অসম্ভব কারণ রিলেশনশিপ সিমেট্রিক — যদি A-র স্পাউজ B হয়, তবে B-র স্পাউজ A। তাই উভয় পক্ষেই একই অপশন্যালিটি থাকবে।
ER ডায়াগ্রাম নোটেশন
- এন্টিটি: Person
- রিলেশনশিপ: MARRIED_TO (Unary, 1:1)
- কার্ডিন্যালিটি: 1:1 (Double line বা "1" notation)
- অপশন্যালিটি: সলিড (Mandatory) / ড্যাশড (Optional)
SQL ইমপ্লিমেন্টেশন
CREATE TABLE Person (
Person_ID INT PRIMARY KEY,
Name VARCHAR(100),
Spouse_ID INT UNIQUE, -- One-to-One ensure করে
FOREIGN KEY (Spouse_ID) REFERENCES Person(Person_ID)
ON DELETE SET NULL
);
Spouse_ID UNIQUEনিশ্চিত করে One-to-One (দুজন একই স্পাউজ শেয়ার করতে পারবে না)।ON DELETE SET NULL— একজনের মৃত্যু হলে অন্যের স্পাউজ_আইডি NULL হয়।- ট্রিগার বা অ্যাপ লজিক দিয়ে সিমেট্রি এনফোর্স করতে হয় (A-র স্পাউজ B হলে B-র স্পাউজ A সেট করতে হয়)।
বাস্তব ব্যবহারের উদাহরণ
- Spouse/Partner রিলেশনশিপ
- Emergency Contact (পারস্পরিক হলে)
- Mentor-Mentee (যদি একজনে এক মেন্টর এবং এক মেন্টি থাকে)