दोनों विदेशी कुंजियों के लिए एक ही कॉलम का उपयोग न करें। इसे कभी-कभी बहुरूपी संघों . कहा जाता है , और यह अच्छे डेटाबेस डिज़ाइन के नियमों को तोड़ता है।
यह एक सुराग होना चाहिए कि यह एक खराब डिज़ाइन है, कि एक विदेशी कुंजी बाधा केवल एक संदर्भित तालिका का समर्थन करती है। मानक SQL में बहुरूपी संघों के लिए कोई समर्थन नहीं है।
इसके बजाय, दो कॉलम बनाएं, एक उपयोगकर्ता के संदर्भ के लिए, दूसरा SystemProcesses के संदर्भ के लिए। प्रति संदर्भित तालिका में एक कॉलम।
Logs
uid (INT) UsersID (INT) SystemProcessesID (INT) Action
1 2 NULL Jane Doe did this
2 1 NULL John Doe did that
3 1 1 Hitman just killed John Doe
यदि उपयोगकर्ता या सिस्टमप्रोसेस कॉलम के लिए कोई प्रासंगिक संदर्भ नहीं है, तो यह इंगित करने के लिए कि कोई लागू मूल्य नहीं है, NULL का उपयोग करें।
आप अन्य प्रश्नों की समीक्षा करना पसंद कर सकते हैं जिनका मैंने बहुरूपी संघों के बारे में उत्तर दिया है ।