Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

किसी अन्य तालिका से प्राथमिक कुंजी के संदर्भ में एक से अधिक फ़ील्ड का उपयोग करके MySQL विदेशी कुंजी

दोनों विदेशी कुंजियों के लिए एक ही कॉलम का उपयोग न करें। इसे कभी-कभी बहुरूपी संघों . कहा जाता है , और यह अच्छे डेटाबेस डिज़ाइन के नियमों को तोड़ता है।

यह एक सुराग होना चाहिए कि यह एक खराब डिज़ाइन है, कि एक विदेशी कुंजी बाधा केवल एक संदर्भित तालिका का समर्थन करती है। मानक 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 का उपयोग करें।

आप अन्य प्रश्नों की समीक्षा करना पसंद कर सकते हैं जिनका मैंने बहुरूपी संघों के बारे में उत्तर दिया है




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिद्धांत श्रोता में तत्व सम्मिलित करना

  2. क्या शीर्ष एन पंक्तियों को लाने के लिए डेटाबेस-अज्ञेय एसक्यूएल क्वेरी हो सकती है?

  3. MySQL में गतिशील चर नाम

  4. MySQL '=' के साथ UTF-8 स्ट्रिंग का चयन करें लेकिन 'LIKE' के साथ नहीं

  5. Laravel 5.1 के साथ कच्चे प्रश्नों को कैसे निष्पादित करें?