আপনার যদি A_or_B_ID
টেবিলজেডে সত্যই প্রয়োজন হয়, আপনার দুটি অনুরূপ বিকল্প রয়েছে:
1) nullable যোগ করুন A_ID
এবং B_ID
টেবিল z এর কলাম, করতে A_or_B_ID
এই দুটি স্তম্ভের উপর ISNULL ব্যবহার করে একটি নির্ণিত কলাম, এবং একটি চেক বাধ্যতা যোগ যেমন যে মাত্র এক A_ID
বা B_ID
নাল নয়
২) টেবিল জেডে একটি টেবিলনাম কলাম যুক্ত করুন, এখন এ বা বি হয় তা অন্তর্ভুক্ত করুন A_ID
এবং B_ID
গণনাকৃত কলামগুলি তৈরি করুন , যখন কেবলমাত্র তাদের উপযুক্ত সারণির নাম দেওয়া হবে (CASE এক্সপ্রেশন ব্যবহার করে) non তাদেরও অবিচল করুন
উভয় ক্ষেত্রেই এখন আপনার কাছে A_ID
এবং B_ID
কলামগুলিতে বেস টেবিলগুলির জন্য উপযুক্ত বিদেশী কী থাকতে পারে। পার্থক্যটি এটিতে কলামগুলি গণনা করা হয়। এছাড়াও 2 আইডি কলামের ডোমেনগুলি যদি ওভারল্যাপ না করে তবে উপরের বিকল্প 2 তে আপনার টেবিলনামের প্রয়োজন নেই - যতক্ষণ আপনার কেস এক্সপ্রেশনটি নির্ধারণ করতে পারে যে কোন ডোমেনে A_or_B_ID
পড়েছে
(আমার ফর্ম্যাটিং ঠিক করার জন্য মন্তব্য করার জন্য ধন্যবাদ)