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

क्या कोई विदेशी कुंजी प्राथमिक कुंजी के रूप में कार्य कर सकती है?

बेशक। यह एक सामान्य तकनीक है जिसे सुपरटाइपिंग के नाम से जाना जाता है। टेबल। जैसा कि आपके उदाहरण में, विचार यह है कि एक तालिका में संस्थाओं का एक सुपरसेट होता है और इसमें एक सामान्य इकाई का वर्णन करने वाले सामान्य गुण होते हैं, और अन्य तालिकाओं में विशिष्ट विशेषताओं वाले उन संस्थाओं के सबसेट होते हैं। यह ऑब्जेक्ट-ओरिएंटेड डिज़ाइन में एक साधारण वर्ग पदानुक्रम के विपरीत नहीं है।

आपके दूसरे प्रश्न के लिए, एक तालिका में दो कॉलम हो सकते हैं जो एक ही अन्य तालिका में अलग-अलग विदेशी कुंजी हैं। जब डेटाबेस क्वेरी बनाता है, तो वह दूसरी तालिका में दो बार जुड़ता है। SQL क्वेरी में वर्णन करने के लिए (MySQL सिंटैक्स के बारे में निश्चित नहीं है, मैंने इसे लंबे समय से उपयोग नहीं किया है, इसलिए यह विशेष रूप से MS SQL सिंटैक्स है), आप डेटा का चयन करते समय उस तालिका को दो अलग-अलग उपनाम देंगे। कुछ इस तरह:

SELECT
    student_accounts.name AS student_name,
    counselor_accounts.name AS counselor_name
FROM
    student_rec
    INNER JOIN user_accounts AS student_accounts
      ON student_rec.student_number = student_accounts.user_id
    INNER JOIN user_accounts AS counselor_accounts
      ON student_rec.guidance_counselor_id = counselor_accounts.user_id

यह अनिवार्य रूप से student_rec लेता है तालिका और इसे user_accounts . के साथ जोड़ती है तालिका दो बार, प्रत्येक कॉलम पर एक बार, और उन्हें अलग-अलग बताने के लिए दो अलग-अलग उपनाम निर्दिष्ट करते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में अनुक्रमिक संख्या डालें

  2. दो चयन कथनों के बीच MySQL कार्टेशियन उत्पाद

  3. MySQL InnoDB क्लस्टर 8.0 - एक पूर्ण ऑपरेशन वॉक-थ्रू:भाग दो

  4. MySQL में group_concat_max_len के लिए अधिकतम भत्ता क्या है?

  5. MySQL:ज़ीरोफिल का उपयोग किए बिना डिस्प्ले चौड़ाई क्यों निर्दिष्ट करें