2012-02-11 14 views
5

मेरे पास 2 टेबल, User और Employee हैं। प्रत्येक उपयोगकर्ता को User_ID दिया जाता है और यह User तालिका में प्राथमिक कुंजी है और Employee तालिका में एक विदेशी कुंजी है। क्या Employee तालिका में यह विशेषता प्राथमिक कुंजी भी हो सकती है?क्या डेटाबेस विशेषता प्राथमिक और विदेशी कुंजी हो सकती है?

+0

कर्मचारी तालिका में प्राथमिक कुंजी क्या है? प्रत्येक तालिका में केवल एक प्राथमिक कुंजी की अनुमति है। आप समग्र प्राथमिक कुंजी (एक से अधिक कॉलम) कर सकते हैं। –

उत्तर

20

यदि आपके पास दो तालिकाओं के बीच एक-से-एक संबंध है, तो विवरण तालिका की प्राथमिक कुंजी भी एक विदेशी कुंजी है।

master   detail (1 : 1) 
+----------+ 1:1 +-------------+ 
| PK id |<---o| PK FK id | 
+----------+  +-------------+ 
|  col1 |  |  col1 | 
|  col2 |  |  col2 | 
|  etc. |  |  etc. | 
+----------+  +-------------+ 

आप एक मीटर करने के लिए n संबंध है, तो जंक्शन मेज मीटर के दो प्राथमिक कुंजी और एन-टेबल से संबंधित कॉलम है। ये कॉलम एक ही समय में प्राथमिक कुंजी और विदेशी कुंजी हैं।

    m : n 
m_table   junction 
+----------+ 1:m +------------+  n_table 
| PK id1 |<---o| PK FK1 id1 | n:1 +----------+ 
+----------+  | PK FK2 id2 |o--->| PK id2 | 
|  col1 |  +------------+  +----------+ 
|  col2 |  |   |  |  col1 | 
|  etc. |  +------------+  |  etc. | 
+----------+      +----------+ 

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

    m : n 
        junction 
       +---------+ 
m_table   | PK id | 
+----------+ 1:m +---------+  n_table 
| PK id1 |<---o| FK1 id1 | n:1 +----------+ 
+----------+  | FK2 id2 |o--->| PK id2 | 
|  col1 |  |   |  +----------+ 
|  col2 |  +---------+  |  col1 | 
|  etc. |      |  etc. | 
+----------+      +----------+ 

इस मामले में, प्राथमिक कुंजी और विदेशी कुंजी की कमी विभिन्न स्तंभों पर सेट कर रहे हैं: क्या आप गैर-अद्वितीय जोड़ी अनुमति देना चाहते हैं, जंक्शन तालिका में एक अलग प्राथमिक कुंजी परिभाषित करते हैं। वैकल्पिक रूप से आप दो विदेशी कुंजी और एक संख्यात्मक या अन्य समझदार विशेषता के साथ प्राथमिक कुंजी भी बना सकते हैं।


आपके मामले में, अगर वहाँ एक एक-से-एक या एक-से-शून्य या एक User और Employee के बीच संबंध है, तो हाँ, Employee तालिका में User_ID विदेशी कुंजी हो सकता है (एफके) और प्राथमिक कुंजी (पीके) एक ही समय में। शब्दों में, इसका मतलब यह होगा: उपयोगकर्ता एक कर्मचारी भी हो सकता है, इस मामले में कर्मचारी डेटा उपयोगकर्ता से जुड़ा होगा। यदि वह कर्मचारी नहीं है (वह बाहरी विशेषज्ञ हो सकता है), कोई कर्मचारी रिकॉर्ड संलग्न नहीं है। यदि User_IDEmployee में एफके और पीके है, तो प्रत्येक उपयोगकर्ता के पास अधिकतम एक कर्मचारी रिकॉर्ड संलग्न हो सकता है। यदि User_ID केवल एफके था लेकिन तालिका Employee में पीके नहीं था तो उपयोगकर्ता के पास कई संबंधित कर्मचारी रिकॉर्ड हो सकते थे।

2

हां। उदाहरण के लिए आप ऐसा करेंगे यदि आप यह लागू करना चाहते हैं कि सभी कर्मचारी उपयोगकर्ता हैं, और कुछ उपयोगकर्ता कर्मचारी हो सकते हैं। यह एक रिश्ते के लिए (शून्य या एक) होगा।

अन्यथा, आपके पास आमतौर पर प्राथमिक कुंजी जैसी विदेशी कुंजी नहीं होगी, हालांकि इसमें कई प्रमुख रिश्तों के लिए जंक्शन तालिका के मामले में विदेशी कुंजी हो सकती है।

संबंधित मुद्दे